Share via


Hardwaredefinities gebruiken

In dit onderwerp wordt beschreven hoe u hardwaredefinities gebruikt in uw toepassing op hoog niveau. Zie Hardwaredefinities voor meer gedetailleerde informatie over hardwaredefinities, waaronder het maken van uw eigen hardwaredefinitiebestanden.

Opmerking

De map met de JSON-hardwaredefinities bevat ook een inc/hw-submap voor de equivalente headerbestandsdefinities.

Een hardwaredefinitie van de SDK gebruiken

De map HardwareDefinitions in de Azure Sphere SDK bevat definities voor algemene Azure Sphere-borden en de chips die ze gebruiken. Deze map bevindt zich %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions in Windows en /opt/azurespheresdk/HardwareDefinitions op Linux.

  1. Zoek in CMakelists.txt naar de functie azsphere_target_hardware_definition en stel de TARGET_DEFINITION parameter in op het JSON-bestand met de hardwaredefinitie voor het doelbord. In het volgende voorbeeld ziet u hoe u de TARGET_DEFINITION parameter instelt als uw toepassing gebruikmaakt van de MT3620 Reference Development Board (RDB):

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

  2. Neem in main.c het bijbehorende headerbestand voor de hardwaredefinitie op voor het doelbord:

    #include  "hw/mt3620_rdb.h"
    
  3. Zie het headerbestand of het JSON-bestand voor informatie over de id en het type randapparatuur dat in uw toepassing wordt gebruikt. Maak of wijzig uw toepassingscode dienovereenkomstig.

    Een toepassing die is gericht op de MT3620 Reference Development Board (RDB) gebruikt bijvoorbeeld een on-board LED. De constante die wordt gebruikt om de LED te identificeren, wordt als volgt gedefinieerd in het headerbestand mt3620_rdb.h:

    // LED 1 Red channel uses GPIO8.
    #define MT3620_RDB_LED1_RED MT3620_GPIO8
    

    De volgende regel initialiseert de LED met behulp van de informatie in de hardwaredefinitie.

    int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
    
  4. Werk het toepassingsmanifest bij om de randapparatuur in te schakelen die de app nu gebruikt:

    "Capabilities": {  "Gpio": [ "MT3620_RDB_LED1_RED" ]},
    
  5. Compileer en pakket de toepassing.

Een hardwaredefinitie gebruiken die niet is geïnstalleerd met de SDK

  1. Zoek in CMakelists.txt naar de azsphere_target_hardware_definition functie .

  2. Stel de TARGET_DIRECTORY parameter in met het relatieve of absolute pad of de paden naar de map of mappen met de hardwaredefinitiebestanden die u wilt gebruiken.

  3. Stel de TARGET_DEFINITION parameter in op de naam van het JSON-bestand met de hardwaredefinitie. Tijdens het buildproces wordt gezocht naar dit bestand en alle bestanden die worden geïmporteerd, in de doelmappen in de vermelde volgorde en vervolgens in de SDK zelf.

    azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "<path>/my_app/contoso_hardware_definitions" TARGET_DEFINITION "contoso_board.json")

    Geef elke doelmap tussen dubbele aanhalingstekens op en scheid directorynamen met spaties. In het voorbeeld <vertegenwoordigt pad> het pad naar de map my_app.

  4. Neem in main.c het headerbestand van de hardwaredefinitie op voor het doelbord. Tijdens het buildproces wordt gezocht naar dit bestand en de bestanden die het bevat, in de submap 'inc' van de doelmappen in de vermelde volgorde en vervolgens in de SDK zelf. Daarom vindt u volgens de conventie contoso_board.h in de submap inc/hw van de doelmappen:

    #include   "hw/contoso_board.h"
    
  5. Zie het headerbestand of het JSON-bestand voor informatie over de id en het type randapparatuur dat in uw toepassing wordt gebruikt. Maak of wijzig uw toepassingscode dienovereenkomstig.

    int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
    
  6. Werk het toepassingsmanifest (app_manifest.json) bij om de randapparatuur in te schakelen die de app nu gebruikt:

    "Capabilities": {  "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
    
  7. Compileer en pakket de toepassing.