Dela via


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.

  1. I CMakelists.txt söka efter funktionen azsphere_target_hardware_definition och ange parametern TARGET_DEFINITION till JSON-filen för maskinvarudefinitionen för målkortet. I följande exempel visas hur du anger parametern TARGET_DEFINITION om programmet använder MT3620 Reference Development Board (RDB):

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")

  2. I main.c tar du med motsvarande rubrikfil för maskinvarudefinition för målkortet:

    #include  "hw/mt3620_rdb.h"
    
  3. 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);
    
  4. Uppdatera programmanifestet för att aktivera den kringutrustning som appen nu använder:

    "Capabilities": {  "Gpio": [ "MT3620_RDB_LED1_RED" ]},
    
  5. Kompilera och paketera programmet.

Använda en maskinvarudefinition som inte är installerad med SDK:et

  1. Sök efter funktionen i azsphere_target_hardware_definition CMakelists.txt .

  2. 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.

  3. 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.

  4. 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"
    
  5. 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);
    
  6. Uppdatera programmanifestet (app_manifest.json) för att aktivera kringutrustningen som appen nu använder:

    "Capabilities": {  "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
    
  7. Kompilera och paketera programmet.