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.
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")
W pliku main.c uwzględnij odpowiedni plik nagłówka definicji sprzętu dla tablicy docelowej:
#include "hw/mt3620_rdb.h"
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);
Zaktualizuj manifest aplikacji , aby włączyć urządzenia peryferyjne, z których obecnie korzysta aplikacja:
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Skompilować i spakować aplikację.
Używanie definicji sprzętu, która nie jest zainstalowana z klawiaturą SDK
W CMakelists.txt wyszukaj funkcję
azsphere_target_hardware_definition
.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ć.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.
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"
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);
Zaktualizuj manifest aplikacji (app_manifest.json), aby włączyć urządzenia peryferyjne, których obecnie używa aplikacja:
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Skompilować i spakować aplikację.