Używanie definicji sprzętu

W tym temacie opisano sposób używania definicji sprzętu w aplikacji wysokiego poziomu. Zobacz Definicje sprzętu , aby uzyskać bardziej szczegółowe informacje na temat definicji sprzętu, w tym sposobu tworzenia własnych plików definicji sprzętu.

Uwaga

Katalog zawierający definicje sprzętu JSON zawiera również podkategorię inc/hw dla równoważnych definicji plików nagłówków.

Używanie definicji sprzętu z klawiatury SDK

Katalog HardwareDefinitions w zestawie Azure Sphere SDK zawiera definicje typowych płytek Azure Sphere i używanych mikroukładów. Ten katalog znajduje się %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions w systemie Windows i /opt/azurespheresdk/HardwareDefinitions systemie Linux.

  1. W CMakelists.txt wyszukać funkcję azsphere_target_hardware_definition i ustawić TARGET_DEFINITION parametr na plik JSON definicji sprzętu dla tablicy docelowej. W poniższym przykładzie pokazano, jak ustawić TARGET_DEFINITION parametr, jeśli aplikacja korzysta z tablicy deweloperów odwołań MT3620 (RDB):

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

  2. W pliku main.c uwzględnij odpowiedni plik nagłówka definicji sprzętu dla tablicy docelowej:

    #include  "hw/mt3620_rdb.h"
    
  3. Zobacz plik nagłówka lub plik JSON, aby uzyskać informacje o identyfikatorze i typie urządzeń peryferyjnych używanych w aplikacji. Utwórz lub odpowiednio zmodyfikuj kod aplikacji.

    Na przykład aplikacja docelowa MT3620 Reference Development Board (RDB) używa wbudowanej diody LED. Stała używana do identyfikowania diod LED jest zdefiniowana w pliku nagłówka mt3620_rdb.h w następujący sposób:

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

    Poniższy wiersz inicjuje diodę LED przy użyciu informacji podanych w definicji sprzętu.

    int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
    
  4. Zaktualizuj manifest aplikacji , aby włączyć urządzenia peryferyjne, z których obecnie korzysta aplikacja:

    "Capabilities": {  "Gpio": [ "MT3620_RDB_LED1_RED" ]},
    
  5. Skompilować i spakować aplikację.

Używanie definicji sprzętu, która nie jest zainstalowana z klawiaturą SDK

  1. W CMakelists.txt wyszukaj funkcję azsphere_target_hardware_definition .

  2. TARGET_DIRECTORY Ustaw parametr ze względną lub bezwzględną ścieżką albo ścieżkami do katalogu lub katalogów zawierających pliki definicji sprzętu, których chcesz użyć.

  3. TARGET_DEFINITION Ustaw parametr na nazwę pliku JSON definicji sprzętu. Proces tworzenia wyszukuje ten plik i wszystkie importowane pliki w katalogach docelowych w podanej kolejności, a następnie w samym zestawie SDK.

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

    Określ każdy katalog docelowy w podwójny cudzysłów i oddziel nazwy katalogów spacjami. W tym przykładzie <ścieżka> reprezentuje ścieżkę do folderu my_app.

  4. W pliku main.c uwzględnij plik nagłówka definicji sprzętu dla tablicy docelowej. Proces tworzenia będzie wyszukiwać ten plik i te pliki, które zawiera, w podkategorii "inc" katalogów docelowych w podanej kolejności, a następnie w samym zestawie SDK. W związku z tym, zgodnie z konwencją, następujące znajdzie contoso_board.h w inc / hw pod-katalogu katalogów docelowych:

    #include   "hw/contoso_board.h"
    
  5. Zobacz plik nagłówka lub plik JSON, aby uzyskać informacje o identyfikatorze i typie urządzeń peryferyjnych używanych w aplikacji. Utwórz lub odpowiednio zmodyfikuj kod aplikacji.

    int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
    
  6. Zaktualizuj manifest aplikacji (app_manifest.json), aby włączyć urządzenia peryferyjne, których obecnie używa aplikacja:

    "Capabilities": {  "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
    
  7. Skompilować i spakować aplikację.