Donanım tanımları
Bu bölümde donanım tanımı dosyaları ve Bunların Azure Sphere panoları ve modülleri için nasıl oluşturulacağı açıklanmaktadır.
Donanım tanım dosyaları
Donanım tanımları iki ayrı ama ilgili amaca hizmet eder:
Panoya özgü tanımlar bir modülün veya diğer panonun belirli çevre birimlerini tanımlar ve ilgili ve anlamlı tanımlayıcıları kullanarak bir uygulamanın bunlara başvurmasını sağlar. Örneğin, bir uygulama GPIO "13" gibi opak bir sayı yerine "Red_LED_1" kullanabilir. Azure Sphere SDK'sı içindeki HardwareDefinitions dizini, yaygın Azure Sphere panoları ve kullandıkları yongalar için bu tür tanımları içerir. Bu dizin Windows ve /opt/azurespheresdk/HardwareDefinitions
Linux üzerindedir%ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
.
Uygulamaya özgü tanımlar, uygulama kodunda başvuruda bulunan çevre birimlerini panoya özgü tanımlarla eşler. Uygulamaya özgü tanımlar, panoya özgü tanımlar üzerinde oluşturulur ve herhangi bir panodaki çevre birimlerine başvurmak için kullanılabilecek tek bir tanımlayıcı kümesi tanımlar. Bu nedenle, birden çok panoda çalışan bir uygulamanın her pano türü için uygulamaya özgü bir tanımı olabilir, ancak uygulamanın kendisi yalnızca bir çevresel tanımlayıcı kümesi kullanır. Kodun kendisi farklı donanımlarda tamamen değişmeden çalışabilir; bir geliştiricinin yalnızca uygun tanımı kullanmak için başvuruyu değiştirmesi gerekir. Örneğin, bir kahve makinesinin uygulama kodu BrewingStatus göstergesi LED'ine başvurur. Kahve makinesi kontrol panosu contoso ve Fabrikam olmak üzere iki tedarikçi tarafından sağlanır. Her pano için uygulamaya özgü tanımların kullanılmasıyla BrewingStatus göstergesi Contoso tarafından sağlanan kontrol panosunda LED 2 ve Fabrikam tarafından sağlanan denetim panosunda LED 4 ile eşlenebilir.
Uygulamanız SDK'dan veya donanım sağlayıcınızdan donanım tanımları kullanıyorsa ve kendi uygulamaya özgü tanımınızı oluşturmuyorsanız, şimdilik bu konunun geri kalanını atlayabilir ve doğrudan donanım bağımlılıklarını kullanmaya gidebilirsiniz.
Donanım tanımı dosyalarınızı JSON biçiminde oluşturursunuz. Ardından JSON dosyalarından C üst bilgi dosyaları oluşturursunuz.
Donanım tanım dosyasının biçimi
Donanım tanım dosyası, aşağıdaki biçime sahip bir JSON dosyasıdır:
{
"Metadata":
{
"Type": "Azure Sphere Hardware Definition",
"Version": 1
},
"Description":
{
"Name": "<name of board or module>",
"MainCoreHeaderFileTopContent": [
"/* Copyright (c) <vendor name> All rights reserved.",
" <vendor licensing information, if any> */",
"",
"// This header contains the peripheral pinout definitions for the",
"// <name of board or module>"
]
},
"Imports" : [ {"Path": "<path to underlying hardware definition file>"} ],
"Peripherals": [
{"Name": "", "Type": " ", "Mapping": " ", "Comment": " "},
]
}
Meta Veriler bölümü dosya hakkında bilgi içerir (dosya türü, sürüm vb.).
Açıklama bölümünde pano veya modülle ilgili bilgiler yer alır. "MainCoreHeaderFileTopContent" alanı, oluşturulan üst bilgi dosyasının başına yerleştirilecek bilgileri içerir.
İçeri Aktarmalar bölümü, temel alınan donanım platformu (pano veya modül) için donanım tanım dosyasının yol adını belirtir.
Çevre Birimleri bölümünde, bu panonun uygulamalarda kullanım için kullanıma sunan çevre birimleri listelenir. Çevre birimi açıklaması aşağıdaki biçime sahiptir:
{" Name": "<name-in-code>", "Type": "<type>", "Mapping": "<name-in-imported-definition>", "Comment": "<helpful info>"}
Çevre Birimleri bölümünün öğeleri şunlardır:
Ad - Uygulama kodunuzda çevre birimine başvurmak için kullanılan tanımlayıcı.
Tür - Çevre biriminin türü (örneğin, Gpio, Uart, Adc). Tür bilgilerini almak için İçeri Aktarmalar bölümünde listelenen donanım tanımı dosyasına bakın.
Eşleme - Ad alanındaki tanımlayıcıyı, içeri aktarılan donanım tanımı dosyasındaki çevre birimi için kullanılan tanımlayıcıyla eşler.
Açıklamalar - Oluşturulan üst bilgi dosyasında görüntülenmesi için yararlı bilgiler sağlar. Örneğin, ISU* çevre birimleri için atamaları sabitleyin veya yerleşik LED'leri temel alınan MCU veya Modülün GPIO pinlerine eşleyin.
Örnek: panoya özgü tanım
Aşağıdaki örnekte, donanım tanımı dosyasının MyBoard adlı kurgusal bir MT3620 geliştirme panosu için panoya özgü tanımı içeren bir bölümü gösterilmektedir. MyBoard için çevre birimi sabitleme tanımlarını belirtir. MT3620 MCU için yongaya özgü donanım tanım dosyasından (mt3620.json) kaynak tanımlarını içeri aktarır. Çevre Birimleri bölümündeki bilgiler, MyBoard tarafından sunulan kaynakların temel MT3620 MCU tarafından sağlanan kaynaklarla pin-pin eşlemesine neden olur.
{
"Metadata":
{
"Type": "Azure Sphere Hardware Definition",
"Version": 1
},
"Description":
{
"Name": "MyBoard",
"MainCoreHeaderFileTopContent": [
"// This header contains the peripheral pinout definitions for ",
"// MyBoard"
]
},
"Imports" : [ {"Path": "... /mt3620/mt3620.json"} ],
"Peripherals": [
{"Name": "MY_BOARD_LED_RED", "Type": "Gpio", "Mapping": "MT3620_GPIO8", "Comment": "LED 1 Red channel uses GPIO8."},
{"Name": "MY_BOARD_LED_GREEN", "Type": "Gpio", "Mapping": "MT3620_GPIO16", "Comment": "LED 2 Green channel uses GPIO16"},
{"Name": "MY_BOARD_BUTTON_A", "Type": "Gpio", "Mapping": "MT3620_GPIO12", "Comment": "Button A uses GPIO12"},
.
.
.
]
}
Azure Sphere SDK yüklemesinin bir parçası olan HardwareDefinitions dizininde panoya özgü tanım dosyalarının ek örneklerini görebilirsiniz.
Örnek: uygulamaya özgü tanım
Aşağıdaki örnekte, bir donanım tanımı dosyasının kurgusal kahve makinesi gereci için uygulamaya özgü tanımı içeren bir bölümü gösterilmektedir.
Uygulamaya dahil edilen çevre birimleri arasında iki gösterge LED'i ve bir basma düğmesi bulunur. Uygulama kodunda bunlara sırasıyla COFFEEMAKER_STATUS_BREWING, COFFEEMAKER_STATUS_READY ve COFFEEMAKER_BUTTON_START tanımlayıcıları tarafından başvurulur. Bu tanımlayıcılar, hayali MT3620 panosu MyBoard için içeri aktarılan panoya özgü tanımda tanımlanan çevre birimleriyle eşlenir.
{
"Metadata": {
"Type": "Azure Sphere Hardware Definition",
"Version": 1
},
"Description":
{
"Name": "Coffee Maker Application",
"MainCoreHeaderFileTopContent": [
"// This file implements the Coffee Maker application-specific definition on MyBoard",
]
},
"Imports" : [ {"Path": "... /MyHwDefs/my_board.json"} ],
"Peripherals": [
{"Name": "COFFEEMAKER_STATUS_BREWING", "Type": "Gpio", "Mapping": "MY_BOARD_LED_RED", "Comment": "Brewing status indicator uses MyBoard RED LED"},
{"Name": "COFFEEMAKER_STATUS_READY", "Type": "Gpio", "Mapping": "MY_BOARD_LED_GREEN", "Comment": "Ready status indicator uses MyBoard GREEN LED"},
{"Name": "COFFEEMAKER_BUTTON_START", "Type": "Gpio", "Mapping": "MY_BOARD_BUTTON_A", "Comment": "Start button uses MyBoard Button A"},
.
.
.
]
}
İçeri Aktarmalar bölümü, fiziksel pano veya modülün donanım tanım dosyasının yolunu içerir.
"Imports" : [ {"Path": "... /MyHwDefs/my_board.json"} ],
Çevre Birimleri bölümü, CoffeeMaker denetim panosu çevre birimlerini bir panodaki veya modüldeki ilgili çevre birimleriyle eşler.
{"Name": "COFFEEMAKER_BUTTON_START", "Type": "Gpio", "Mapping": "MY_BOARD_BUTTON_A", "Comment": " Start button uses MyBoard Button A"},
Name - Uygulama kodunda çevre birimi için kullanılan tanımlayıcıyı içerir.
Eşleme - Bir pano veya modül için donanım tanımı dosyasında çevre birimi için kullanılan tanımlayıcıyı içerir.
Kahve makinesinin sonraki sürümü MyBoardV2 üzerinde oluşturulmuş olabilir. MY_BOARD_V2_LED_ORANGE gibi çevre birimleriyle birlikte panoya özgü yeni bir tanımı olacaktır. Bu, kahve makinesinin uygulamaya özgü tanımının COFFEEMAKER_STATUS_BREWING bu yeni turuncu LED ile eşleyen yeni bir uygulaması tarafından içeri aktarılacaktır. Gerçek kahve makinesi uygulama kodu değişmeden kalır.
Benzer şekilde, Azure Sphere örnek uygulamaları tarafından kullanılan "sample_appliance.json" tanımının yeni bir uygulaması, bu örnek uygulamaların MyBoard'da değişmeden çalışmasını sağlayabilir.
Üst bilgi dosyaları
Üst bilgi dosyaları, donanım tanımlarını içeren JSON dosyalarından oluşturulur. Hem panoya hem de uygulamaya özgü tanımlar için üst bilgi dosyaları oluşturmanız gerekir.
Üst bilgi dosyası oluşturmak için azsphere hardware-definition generate-header komutunu kullanın.
Üst bilgi dosyasını oluşturmak için Azure Sphere Komut İstemi'ne aşağıdaki satırı girin. değerini JSON dosyasının adıyla değiştirin <filename>
.
azsphere hardware-definition generate-header --hardware-definition-file <filename>
filename.h üst bilgisi oluşturulur ve inc/hw klasörüne yerleştirilir.
Örneğin, JSON dosyasından bir üst bilgi dosyası oluşturmak için aşağıdaki satırı girin.
azsphere hardware-definition generate-header --hardware-definition-file my_board.json
Aşağıda my_board.h üst bilgi dosyasının bir bölümü gösterilmektedir:
#pragma once
#include "... /mt3620/inc/hw/mt3620.h"
// LED Red channel uses GPIO8.
#define MY_BOARD_LED_RED MT3620_GPIO8
// LED Green channel uses GPIO16
#define MY_BOARD_LED_GREEN MT3620_GPIO16
// Button A uses GPIO12
#define MY_BOARD_BUTTON_A MT3620_GPIO12
.
.
.
Not Varsayılan olarak, oluşturulan üst bilgi dosyası giriş JSON dosyasını içeren dizinin alt dizini olması gereken içine yerleştirilir inc/hw
. Bu alt dizin yoksa oluşturulur.
Donanım tanımı JSON dosyanızı ve beraberindeki üst bilgi dosyasını oluşturduğunuza göre, bunu uygulamanızda kullanma adımları için bkz. Hedef donanım bağımlılıklarını yönetme .