Usare le definizioni hardware
Questo argomento descrive come usare le definizioni hardware nell'applicazione di alto livello. Vedere Definizioni hardware per informazioni più dettagliate sulle definizioni hardware, incluso come creare file di definizione hardware personalizzati.
Nota
La directory contenente le definizioni hardware JSON contiene anche una sotto directory inc/hw per le definizioni dei file di intestazione equivalenti.
Usare una definizione hardware dall'SDK
La directory HardwareDefinitions in Azure Sphere SDK contiene le definizioni per le comuni schede Azure Sphere e i chip che usano. Questa directory è %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
in Windows e /opt/azurespheresdk/HardwareDefinitions
su Linux.
In CMakelists.txt cercare la funzione
azsphere_target_hardware_definition
e impostare il parametro sulTARGET_DEFINITION
file JSON di definizione hardware per la scheda di destinazione. Nell'esempio seguente viene illustrato come impostare il parametro se l'applicazioneTARGET_DEFINITION
utilizza l'MT3620 Reference Development Board (RDB):azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
In main.c, includere il file di intestazione di definizione hardware corrispondente per la bacheca di destinazione:
#include "hw/mt3620_rdb.h"
Vedi il file di intestazione o il file JSON per ottenere informazioni sull'identificatore e sul tipo di periferiche utilizzate nell'applicazione. Creare o modificare il codice dell'applicazione di conseguenza.
Ad esempio, un'applicazione che si rivolge all'MT3620 Reference Development Board (RDB) utilizza un LED di bordo. La costante utilizzata per identificare il LED è definita nel file di intestazione mt3620_rdb.h come segue:
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
La riga seguente inizializza il LED utilizzando le informazioni fornite nella definizione hardware.
int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Aggiorna il manifesto dell'applicazione per abilitare le periferiche che l'app sta utilizzando:
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Compilare e creare un pacchetto dell'applicazione.
Usare una definizione hardware non installata con l'SDK
In CMakelists.txt cercare la
azsphere_target_hardware_definition
funzione .Impostare il
TARGET_DIRECTORY
parametro con il percorso o i percorsi relativi o assoluti della directory o delle directory contenenti i file di definizione hardware che si desidera utilizzare.Impostare il
TARGET_DEFINITION
parametro sul nome del file JSON della definizione hardware. Il processo di compilazione cerca questo file e tutti i file importati nelle directory di destinazione nell'ordine elencato e quindi nell'SDK stesso.azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "<path>/my_app/contoso_hardware_definitions" TARGET_DEFINITION "contoso_board.json")
Specificare ogni directory di destinazione tra virgolette doppie e separare i nomi di directory con spazi. Nell'esempio path <> rappresenta il percorso della cartella my_app.
In main.c includere il file di intestazione di definizione hardware per la bacheca di destinazione. Il processo di compilazione cercherà questo file e i file inclusi nella sottodirectory 'inc' delle directory di destinazione nell'ordine elencato e quindi nell'SDK stesso. Quindi, in base alla convenzione, quanto segue troverà contoso_board.h nella sotto directory inc/hw delle directory di destinazione:
#include "hw/contoso_board.h"
Vedi il file di intestazione o il file JSON per ottenere informazioni sull'identificatore e sul tipo di periferiche utilizzate nell'applicazione. Creare o modificare il codice dell'applicazione di conseguenza.
int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Aggiorna il manifesto dell'applicazione (app_manifest.json) per abilitare le periferiche che l'app sta utilizzando:
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Compilare e creare un pacchetto dell'applicazione.