Usar definições de hardware
Este tópico descreve como usar definições de hardware em seu aplicativo de alto nível. Consulte Definições de hardware para obter informações mais detalhadas sobre definições de hardware, incluindo como criar seus próprios arquivos de definição de hardware.
Nota
O diretório que contém as definições de hardware JSON também contém um subdiretório inc/hw para as definições de arquivo de cabeçalho equivalentes.
Usar uma definição de hardware do SDK
O diretório HardwareDefinitions no SDK do Azure Sphere contém definições para placas comuns do Azure Sphere e os chips que eles usam. Esse diretório está %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
no Windows e /opt/azurespheresdk/HardwareDefinitions
no Linux.
Em CMakelists.txt pesquise a função
azsphere_target_hardware_definition
e defina oTARGET_DEFINITION
parâmetro como o arquivo JSON de definição de hardware para o quadro de destino. O exemplo a seguir mostra como definir oTARGET_DEFINITION
parâmetro se seu aplicativo usa o RDB (Conselho de Desenvolvimento de Referência) mt3620):azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
Em main.c, inclua o arquivo de cabeçalho de definição de hardware correspondente para o quadro de destino:
#include "hw/mt3620_rdb.h"
Consulte o arquivo de cabeçalho ou o arquivo JSON para obter informações sobre o identificador e o tipo de periféricos usados em seu aplicativo. Crie ou modifique seu código de aplicativo de acordo.
Por exemplo, um aplicativo que tem como destino o RDB (Conselho de Desenvolvimento de Referência) do MT3620 usa um LED a bordo. A constante usada para identificar o LED é definida no arquivo de cabeçalho mt3620_rdb.h da seguinte maneira:
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
A linha a seguir inicializa o LED usando as informações fornecidas na definição de hardware.
int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Atualize o manifesto do aplicativo para habilitar os periféricos que o aplicativo está usando agora:
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Compile e empacote o aplicativo.
Usar uma definição de hardware que não está instalada com o SDK
Em CMakelists.txt pesquise a
azsphere_target_hardware_definition
função .Defina o
TARGET_DIRECTORY
parâmetro com o caminho ou caminhos relativos ou absolutos para o diretório ou diretórios que contêm os arquivos de definição de hardware que você deseja usar.Defina o
TARGET_DEFINITION
parâmetro como o nome do arquivo JSON de definição de hardware. O processo de build pesquisa esse arquivo e todos os arquivos que ele importa, nos diretórios de destino na ordem listada e, em seguida, no próprio SDK.azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "<path>/my_app/contoso_hardware_definitions" TARGET_DEFINITION "contoso_board.json")
Especifique cada diretório de destino entre aspas duplas e nomes de diretório separados com espaços. No exemplo, <o caminho> representa o caminho para a pasta my_app.
Em main.c inclua o arquivo de cabeçalho de definição de hardware para o quadro de destino. O processo de build pesquisará esse arquivo e os arquivos que ele inclui, no subdiretório 'inc' dos diretórios de destino na ordem listada e, em seguida, no próprio SDK. Portanto, na convenção a seguir, o seguinte encontrará contoso_board.h no subdiretório inc/hw dos diretórios de destino:
#include "hw/contoso_board.h"
Consulte o arquivo de cabeçalho ou o arquivo JSON para obter informações sobre o identificador e o tipo de periféricos usados em seu aplicativo. Crie ou modifique seu código de aplicativo de acordo.
int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Atualize o manifesto do aplicativo (app_manifest.json) para habilitar os periféricos que o aplicativo está usando agora:
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Compile e empacote o aplicativo.