Utiliser des définitions matérielles
Cette rubrique explique comment utiliser des définitions matérielles dans votre application de haut niveau. Consultez Définitions de matériel pour plus d’informations sur les définitions matérielles, notamment sur la création de vos propres fichiers de définition de matériel.
Note
Le répertoire contenant les définitions matérielles JSON contient également un sous-répertoire inc/hw pour les définitions de fichier d’en-tête équivalentes.
Utiliser une définition matérielle à partir du Kit de développement logiciel (SDK)
Le répertoire HardwareDefinitions du Kit de développement logiciel (SDK) Azure Sphere contient des définitions pour les cartes Azure Sphere courantes et les puces qu’elles utilisent. Ce répertoire se trouve %ProgramFiles(x86)%\Microsoft Azure Sphere SDK\HardwareDefinitions
sur Windows et /opt/azurespheresdk/HardwareDefinitions
sur Linux.
Dans CMakelists.txt recherchez la fonction
azsphere_target_hardware_definition
et définissez le paramètre surTARGET_DEFINITION
le fichier JSON de définition matérielle pour la carte cible. L’exemple suivant montre comment définir leTARGET_DEFINITION
paramètre si votre application utilise le tableau de développement de référence (RDB) MT3620 :azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DEFINITION "mt3620_rdb.json")
Dans main.c, incluez le fichier d’en-tête de définition de matériel correspondant pour la carte cible :
#include "hw/mt3620_rdb.h"
Consultez le fichier d’en-tête ou le fichier JSON pour obtenir des informations sur l’identificateur et le type de périphériques utilisés dans votre application. Créez ou modifiez votre code d’application en conséquence.
Par exemple, une application qui cible le tableau de développement de référence (RDB) MT3620 utilise une LED embarquée. La constante utilisée pour identifier la LED est définie dans le fichier d’en-tête mt3620_rdb.h comme suit :
// LED 1 Red channel uses GPIO8. #define MT3620_RDB_LED1_RED MT3620_GPIO8
La ligne suivante initialise la LED à l’aide des informations fournies dans la définition matérielle.
int fd = GPIO_OpenAsOutput(MT3620_RDB_LED1_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Mettez à jour le manifeste de l’application pour activer les périphériques que l’application utilise maintenant :
"Capabilities": { "Gpio": [ "MT3620_RDB_LED1_RED" ]},
Compilez et empaquetez l’application.
Utiliser une définition matérielle qui n’est pas installée avec le Kit de développement logiciel (SDK)
Dans CMakelists.txt recherchez la
azsphere_target_hardware_definition
fonction .Définissez le
TARGET_DIRECTORY
paramètre avec le ou les chemins d’accès relatifs ou absolus du ou des répertoires contenant les fichiers de définition matérielle que vous souhaitez utiliser.Définissez le
TARGET_DEFINITION
paramètre sur le nom du fichier JSON de définition matérielle. Le processus de génération recherche ce fichier et tous les fichiers qu’il importe, dans les répertoires cibles dans l’ordre indiqué, puis dans le SDK lui-même.azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "<path>/my_app/contoso_hardware_definitions" TARGET_DEFINITION "contoso_board.json")
Spécifiez chaque répertoire cible entre guillemets doubles et séparez les noms de répertoires par des espaces. Dans l’exemple, <path> représente le chemin d’accès au dossier my_app.
Dans main.c, incluez le fichier d’en-tête de définition matérielle pour la carte cible. Le processus de génération recherche ce fichier, ainsi que les fichiers qu’il inclut, dans le sous-répertoire « inc » des répertoires cibles dans l’ordre indiqué, puis dans le Kit de développement logiciel (SDK) lui-même. Par conséquent, la convention suivante permet de trouver contoso_board.h dans le sous-répertoire inc/hw des répertoires cibles :
#include "hw/contoso_board.h"
Consultez le fichier d’en-tête ou le fichier JSON pour obtenir des informations sur l’identificateur et le type de périphériques utilisés dans votre application. Créez ou modifiez votre code d’application en conséquence.
int fd = GPIO_OpenAsOutput(CONTOSO_BOARD_LED_RED, GPIO_OutputMode_PushPull, GPIO_Value_High);
Mettez à jour le manifeste de l’application (app_manifest.json) pour activer les périphériques que l’application utilise maintenant :
"Capabilities": { "Gpio": [ "CONTOSO_BOARD_LED_RED" ]},
Compilez et empaquetez l’application.