Utilizar definições de hardware
Este tópico descreve como utilizar definições de hardware na sua aplicação de alto nível. Veja Definições de hardware para obter informações mais detalhadas sobre as definições de hardware, incluindo como criar os seus próprios ficheiros 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 ficheiro de cabeçalho equivalentes.
Utilizar uma definição de hardware do SDK
O diretório HardwareDefinitions no SDK do Azure Sphere contém definições para quadros comuns do Azure Sphere e os chips que utilizam. Este diretório está %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
no Windows e /opt/azurespheresdk/HardwareDefinitions
no Linux.
No CMakelists.txt procure a função
azsphere_target_hardware_definition
e defina oTARGET_DEFINITION
parâmetro para o ficheiro JSON de definição de hardware para o quadro de destino. O exemplo seguinte mostra como definir o parâmetro se a sua aplicaçãoTARGET_DEFINITION
utilizar o Quadro de Desenvolvimento de Referência (RDB) mt3620:azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
Em main.c, inclua o ficheiro de cabeçalho de definição de hardware correspondente para o quadro de destino:
#include "hw/mt3620_rdb.h"
Veja o ficheiro de cabeçalho ou o ficheiro JSON para obter informações sobre o identificador e o tipo de periféricos utilizados na sua aplicação. Crie ou modifique o código da aplicação em conformidade.
Por exemplo, uma aplicação destinada ao Quadro de Desenvolvimento de Referência (RDB) MT3620 utiliza um LED a bordo. A constante utilizada para identificar o LED é definida no ficheiro de cabeçalho mt3620_rdb.h da seguinte forma:
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
A linha seguinte inicializa o LED com 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 da aplicação para ativar os periféricos que a aplicação está a utilizar:
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Compile e empacote a aplicação.
Utilizar uma definição de hardware que não esteja instalada com o SDK
No CMakelists.txt procure 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 ficheiros de definição de hardware que pretende utilizar.Defina o
TARGET_DEFINITION
parâmetro como o nome do ficheiro JSON de definição de hardware. O processo de compilação procura este ficheiro e quaisquer ficheiros que importe, nos diretórios de destino pela 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 com aspas duplas e separe os nomes dos diretórios com espaços. No exemplo, <> path representa o caminho para a pasta my_app.
Em main.c, inclua o ficheiro de cabeçalho de definição de hardware para o quadro de destino. O processo de compilação irá procurar este ficheiro e os ficheiros que inclui, no subdiretório "inc" dos diretórios de destino na ordem listada e, em seguida, no próprio SDK. Por conseguinte, a convenção seguinte irá encontrar contoso_board.h no subdiretório inc/hw dos diretórios de destino:
#include "hw/contoso_board.h"
Veja o ficheiro de cabeçalho ou o ficheiro JSON para obter informações sobre o identificador e o tipo de periféricos utilizados na sua aplicação. Crie ou modifique o código da aplicação em conformidade.
int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Atualize o manifesto da aplicação (app_manifest.json) para ativar os periféricos que a aplicação está a utilizar:
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Compile e empacote a aplicação.