Använda maskinvarudefinitioner
I det här avsnittet beskrivs hur du använder maskinvarudefinitioner i ett program på hög nivå. Se Maskinvarudefinitioner för mer detaljerad information om maskinvarudefinitioner, inklusive hur du skapar egna maskinvarudefinitionsfiler.
Observera
Katalogen som innehåller JSON-maskinvarudefinitionerna innehåller också en inc/hw-underkatalog för motsvarande rubrikfildefinitioner.
Använda en maskinvarudefinition från SDK:et
Katalogen HardwareDefinitions i Azure Sphere SDK innehåller definitioner för vanliga Azure Sphere-anslagstavlor och chips som de använder. Den här katalogen finns %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
i Windows och /opt/azurespheresdk/HardwareDefinitions
på Linux.
I CMakelists.txt söka efter funktionen
azsphere_target_hardware_definition
och ange parameternTARGET_DEFINITION
till JSON-filen för maskinvarudefinitionen för målkortet. I följande exempel visas hur du anger parameternTARGET_DEFINITION
om programmet använder MT3620 Reference Development Board (RDB):azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
I main.c tar du med motsvarande rubrikfil för maskinvarudefinition för målkortet:
#include "hw/mt3620_rdb.h"
Se huvudfilen eller JSON-filen för att få information om identifieraren och vilken typ av kringutrustning som används i programmet. Skapa eller ändra programkoden i enlighet med detta.
Ett program som exempelvis riktar in sig på MT3620 Reference Development Board (RDB) använder en inbyggt LED-indikator. Konstanten som används för att identifiera LED-lampan definieras i rubrikfilen mt3620_rdb.h enligt följande:
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
Följande rad initierar LED-lampan med hjälp av informationen i maskinvarudefinitionen.
int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Uppdatera programmanifestet för att aktivera den kringutrustning som appen nu använder:
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Kompilera och paketera programmet.
Använda en maskinvarudefinition som inte är installerad med SDK:et
Sök efter funktionen i
azsphere_target_hardware_definition
CMakelists.txt .Ange parametern
TARGET_DIRECTORY
med den relativa eller absoluta sökvägen eller sökvägarna till katalogen eller katalogerna som innehåller maskinvarudefinitionsfilerna som du vill använda.Ange parametern
TARGET_DEFINITION
till namnet på JSON-filen med maskinvarudefinitionen. Build-processen söker efter den här filen och alla filer som importeras, i målkatalogerna i angiven ordning och sedan i själva SDK:et.azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "<path>/my_app/contoso_hardware_definitions" TARGET_DEFINITION "contoso_board.json")
Ange varje målkatalog inom dubbla citattecken och avgränsa katalognamn med blanksteg. I exemplet <representerar sökvägen> till mappen my_app.
I main.c tar du med rubrikfilen för maskinvarudefinitionen för målkortet. Build-processen söker efter den här filen, och de filer som den innehåller, i underkatalogen "inc" för målkatalogerna i den ordning som anges, och sedan i själva SDK: et. Därför kommer följande konvention att hitta underkatalogen contoso_board.h in inc/hw i målkatalogerna:
#include "hw/contoso_board.h"
Se huvudfilen eller JSON-filen för att få information om identifieraren och vilken typ av kringutrustning som används i programmet. Skapa eller ändra programkoden i enlighet med detta.
int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Uppdatera programmanifestet (app_manifest.json) för att aktivera kringutrustningen som appen nu använder:
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Kompilera och paketera programmet.