Definice hardwaru
Tato část popisuje definiční soubory hardwaru a postup jejich vytvoření pro desky a moduly Azure Sphere.
Definiční soubory hardwaru
Definice hardwaru slouží dvěma samostatným, ale souvisejícím účelům:
Definice specifické pro desku definují konkrétní periferní zařízení modulu nebo jiné desky a umožňují aplikaci odkazovat na ně pomocí relevantních a smysluplných identifikátorů. Aplikace může například použít "Red_LED_1" místo neprůshleného čísla, jako je GPIO "13". Adresář HardwareDefinitions v sadě Azure Sphere SDK obsahuje takové definice pro běžné desky Azure Sphere a čipy, které používají. Tento adresář je ve %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
Windows a /opt/azurespheresdk/HardwareDefinitions
v Linuxu.
Definice specifické pro aplikaci mapují periferní zařízení, na která se odkazuje v kódu aplikace, na definice specifické pro desku. Definice specifické pro aplikaci jsou postaveny na definicích specifických pro desku a definují jednu sadu identifikátorů, které lze použít k odkazování na periferie na libovolné tabuli. Aplikace, která běží na více panelech, tedy může mít definici specifickou pro aplikaci pro každý typ desky, ale samotná aplikace používá pouze jednu sadu identifikátorů periferních zařízení. Samotný kód může běžet zcela beze změny na jiném hardwaru; Vývojář musí pouze změnit odkaz tak, aby používal příslušnou definici. Kód aplikace pro kávovar například odkazuje na indikátor BrewingStatus LED. Řídicí panel kávovaru je zdrojem dvou dodavatelů, Contoso a Fabrikam. Pomocí definic specifických pro aplikaci pro každou desku lze indikátor BrewingStatus namapovat na LED 2 na řídicí desce dodané společností Contoso a led 4 na řídicí desce dodané společností Fabrikam.
Pokud vaše aplikace používá definice hardwaru od sady SDK nebo od dodavatele hardwaru a nevytválíte vlastní definici specifickou pro aplikaci, můžete zbývající část tohoto tématu prozatím přeskočit a přejít přímo k používání hardwarových závislostí.
Soubory definic hardwaru vytvoříte ve formátu JSON. Pak ze souborů JSON vygenerujete soubory hlaviček jazyka C.
Formát souboru definice hardwaru
Definiční soubor hardwaru je soubor JSON v následujícím formátu:
{
"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": " "},
]
}
Část Metadata obsahuje informace o souboru (typ souboru, verze atd.).
Část Popis obsahuje informace o panelu nebo modulu. Pole MainCoreHeaderFileTopContent obsahuje informace, které budou umístěny na začátku vygenerovaného souboru hlaviček.
Část Imports (Importy ) určuje název cesty souboru definice hardwaru pro podkladovou hardwarovou platformu (panel nebo modul).
V části Periferie jsou uvedena periferní zařízení, která tato deska zveřejňuje pro použití v aplikacích. Popis periferních zařízení má následující formát:
{" Name": "<name-in-code>", "Type": "<type>", "Mapping": "<name-in-imported-definition>", "Comment": "<helpful info>"}
Následující prvky jsou uvedeny v části Periferie :
Název – identifikátor použitý k odkaz na periferní zařízení v kódu aplikace.
Type – typ periferního zařízení (například Gpio, Uart, Adc). Informace o typu získáte v definičním souboru hardwaru uvedeném v části Importy .
Mapování – namapuje identifikátor v poli Název na identifikátor použitý pro periferní zařízení v importovaném souboru definice hardwaru.
Komentáře – poskytuje užitečné informace, které se zobrazí ve vygenerovaném souboru hlaviček. Například přiřazení špendlíků pro periferie ISU* nebo mapování diod LED na piny GPIO podkladové jednotky MCU nebo modulu.
Příklad: Definice specifická pro desku
Následující příklad ukazuje část souboru definice hardwaru, který obsahuje definici konkrétní desky pro fiktivní vývojovou desku MT3620 s názvem MyBoard. Určuje definice periferních pinoutů pro MyBoard. Importuje definice prostředků ze souboru definice hardwaru specifického pro čip (mt3620.json) pro MCU MT3620. Informace v části Periferní zařízení mají za následek mapování prostředků vystavených službou MyBoard na prostředky poskytované podkladovým MCU MT3620.
{
"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"},
.
.
.
]
}
Další příklady definičních souborů specifických pro desku najdete v adresáři HardwareDefinitions, který je součástí instalace sady Azure Sphere SDK.
Příklad: Definice specifická pro aplikaci
Následující příklad ukazuje část souboru definice hardwaru, která obsahuje definici specifickou pro aplikaci fiktivního kávovaru.
Mezi periferní zařízení, která jsou součástí aplikace, jsou dva indikátory LED a tlačítko. V kódu aplikace na tyto identifikátory odkazují COFFEEMAKER_STATUS_BREWING, COFFEEMAKER_STATUS_READY a COFFEEMAKER_BUTTON_START. Tyto identifikátory se mapují na periferní zařízení definovaná v importované definici specifické pro desku MyBoard pro fiktivní desku MT3620.
{
"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"},
.
.
.
]
}
Část Importy obsahuje cestu k souboru definice hardwaru pro fyzickou desku nebo modul.
"Imports" : [ {"Path": "... /MyHwDefs/my_board.json"} ],
Oddíl Periferie mapuje periferie ovládací desky CoffeeMaker na odpovídající periferní zařízení na desce nebo modulu.
{"Name": "COFFEEMAKER_BUTTON_START", "Type": "Gpio", "Mapping": "MY_BOARD_BUTTON_A", "Comment": " Start button uses MyBoard Button A"},
Name – obsahuje identifikátor použitý pro periferní zařízení v kódu aplikace.
Mapování – obsahuje identifikátor použitý pro periferní zařízení v souboru definice hardwaru pro desku nebo modul.
Další verze kávovaru může být postavena na MyBoardV2. Bude mít novou definici specifickou pro desku s periferními zařízeními, jako je MY_BOARD_V2_LED_ORANGE. To by bylo importováno novou implementací definice specifické pro aplikaci kávovaru, která mapuje COFFEEMAKER_STATUS_BREWING na tuto novou oranžovou LED. Skutečný kód aplikace kávovaru by zůstal beze změny.
Podobně nová implementace definice "sample_appliance.json", kterou používají ukázkové aplikace Azure Sphere, by mohla umožnit, aby tyto ukázkové aplikace běžely beze změny na MyBoardu.
Soubory hlaviček
Soubory hlaviček se generují ze souborů JSON, které obsahují definice hardwaru. Musíte vytvořit soubory hlaviček pro definice specifické pro desku i pro konkrétní aplikaci.
Pomocí příkazu azsphere hardware-definition generate-header vygenerujte soubor hlaviček.
Pokud chcete vytvořit soubor záhlaví, zadejte na příkazovém řádku Azure Sphere následující řádek. Nahraďte <filename>
názvem souboru JSON.
azsphere hardware-definition generate-header --hardware-definition-file <filename>
Soubor hlavičky filename.h se vytvoří a umístí do složky inc/hw.
Zadejte například následující řádek a vygenerujte ze souboru JSON soubor hlaviček.
azsphere hardware-definition generate-header --hardware-definition-file my_board.json
Následuje část souboru záhlaví my_board.h:
#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
.
.
.
Poznámka Ve výchozím nastavení se vygenerovaný soubor hlavičky umístí do inc/hw
, což musí být podadresář adresáře, který obsahuje vstupní soubor JSON. Pokud tento podadresář neexistuje, vytvoří se.
Teď, když jste vytvořili soubor JSON definice hardwaru a jeho doprovodný soubor hlaviček, najdete postup použití v aplikaci v tématu Správa cílových hardwarových závislostí .