Créer des applications partenaires
Important
Il s’agit de la documentation Azure Sphere (héritée). Azure Sphere (hérité) prend sa retraite le 27 septembre 2027 et les utilisateurs doivent migrer vers Azure Sphere (intégré) pour l’instant. Utilisez le sélecteur de version situé au-dessus du TOC pour afficher la documentation Azure Sphere (intégrée).
Le moyen le plus simple de créer une paire d’applications partenaires consiste à créer un répertoire de niveau supérieur pour contenir à la fois les applications hautes et en temps réel, puis créer les applications compatibles en temps réel et de haut niveau et en temps réel à leur tour.
Créer une application de haut niveau
Pour créer une application de haut niveau, commencez par le modèle HLCore Blank à partir de l’extension Visual Studio Code Azure Sphere et ajustez la configuration à votre projet en procédant comme suit :
Démarrez Visual Studio Code. Sélectionnez La palette de commandes Afficher>, puis tapez Azure Sphere : Générer un nouveau projet.
Choisissez HLCore Blank dans le menu Modèles.
Visual Studio Code affiche ensuite une fenêtre Explorateur de fichiers. Accédez au dossier dans lequel vous souhaitez placer l’application vide (ou sélectionnez Nouveau dossier et créez un répertoire de projet partenaire de niveau supérieur) et spécifiez un nom pour votre projet, par exemple NewHLApp. Visual Studio Code crée le dossier NewHLApp dans votre emplacement sélectionné et génère les fichiers de build de l’application vide. Vous devez voir en principe des messages de CMake.
Ouvrez le fichier CMakeLists.txt et spécifiez le dossier qui contient les définitions du matériel que vous utilisez. Par défaut, l’application HLCore Blank ne contient aucune définition matérielle. Vous pouvez trouver des exemples de définitions matérielles dans le référentiel d’exemples Azure Sphere ou en créer un comme décrit dans les définitions matérielles.
Voici comment ajouter les exemples de définitions matérielles pour le Kit de développement Mt3620 Seeed Azure Sphere :
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Cette ligne doit être insérée avant le début
azsphere_target_add_image_package
de la commande finale.
Vous pouvez également créer une application de haut niveau à partir de l’un des exemples Azure Sphere de haut niveau :
Si ce n'est déjà fait, clonez le référentiel d'exemples. Copiez l’un des dossiers d’application de haut niveau et renommez-le pour votre projet.
Dans le fichier CMakeLists.txt, remplacez le nom du projet par le nom de votre nouveau dossier. Par exemple :
PROJECT(NewHLApp C)
Créer une application RTApp
Pour créer une application en temps réel, commencez par le modèle RTCore Blank à partir de l’extension Visual Studio Code Azure Sphere et ajustez la configuration à votre projet en procédant comme suit :
Démarrez Visual Studio Code. Sélectionnez La palette de commandes Afficher>, puis tapez Azure Sphere : Générer un nouveau projet.
Choisissez RTCore Vide dans le menu Modèles.
Visual Studio Code affiche ensuite une fenêtre Explorateur de fichiers. Accédez au dossier contenant votre dossier d’application de haut niveau et spécifiez un nom pour votre projet, par exemple NewRTApp. Visual Studio Code crée le dossier NewRTApp dans votre emplacement sélectionné et génère les fichiers de build de l’application vide. Vous devez voir en principe des messages de CMake.
Vous pouvez également créer une application compatible en temps réel à partir de l’un des exemples Azure Sphere compatibles en temps réel :
Si ce n'est déjà fait, clonez le référentiel d'exemples. Copiez l’un des dossiers d’application de haut niveau et renommez-le pour votre projet.
Dans le fichier CMakeLists.txt, remplacez le nom du projet par le nom de votre nouveau dossier. Par exemple :
PROJECT(NewRTApp C)
Configurer votre espace de travail pour le développement d’applications partenaires
Pour joindre efficacement votre application de haut niveau et votre application en temps réel pour le développement, combinez vos deux applications dans un espace de travail multi-racine unique comme suit :
Ouvrez le dossier d’application de haut niveau dans Visual Studio Code.
Sélectionnez Fichier>Ajouter un dossier à l’espace de travail, puis sélectionnez votre dossier d’application en temps réel.
Sélectionnez Fichier>Enregistrer l’espace de travail sous..., puis enregistrez votre fichier dans le dossier qui contient à la fois les applications en temps réel et les applications de haut niveau.
Ouvrez votre fichier d’espace de travail dans un éditeur de texte et ajoutez les informations de lancement suivantes immédiatement après la
"settings"
ligne :
"launch": {
"configurations": [{
"name": "Launch Azure Sphere Apps (All Cores)",
"type": "azurespheredbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"environment": [],
"externalConsole": true,
"partnerComponents": [],
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}],
"compounds": []
}
Pour plus d’informations sur les espaces de travail multi-racines, consultez la documentation de Visual Studio Code.
Créer une application de haut niveau
Pour créer une application de haut niveau, commencez par le modèle HLCore Blank à partir de l’extension Visual Studio Azure Sphere et ajustez la configuration à votre projet en procédant comme suit :
Démarrez Visual Studio et sélectionnez Créer un projet.
Tapez
Azure Sphere
la zone de recherche intitulée Rechercher des modèles. Sélectionnez Azure Sphere HLCore Blank dans la liste retournée, puis sélectionnez Suivant.Spécifiez un nom de projet (par exemple, NewHLApp), un emplacement de fichier projet et un nom de solution (qui peut être identique au nom du projet), puis sélectionnez Créer. Visual Studio crée le dossier NewHLpp dans votre emplacement sélectionné et génère les fichiers de build de l’application vide. Vous devez voir en principe des messages de CMake.
Ouvrez le fichier CMakeLists.txt et spécifiez le dossier qui contient les définitions du matériel que vous utilisez. Par défaut, l’application HL Blank ne contient aucune définition matérielle. Vous pouvez trouver des exemples de définitions matérielles dans le référentiel d’exemples Azure Sphere ou en créer un comme décrit dans les définitions matérielles.
Voici comment ajouter les exemples de définitions matérielles pour le Kit de développement Mt3620 Seeed Azure Sphere :
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "sample_appliance.json")
Cette ligne doit être insérée avant le début
azsphere_target_add_image_package
de la commande finale.
Vous pouvez également créer une application de haut niveau à partir de l’un des exemples Azure Sphere de haut niveau :
Si ce n'est déjà fait, clonez le référentiel d'exemples. Copiez l’un des dossiers d’application de haut niveau et renommez-le pour votre projet.
Dans le fichier CMakeLists.txt, remplacez le nom du projet par le nom de votre nouveau dossier. Par exemple :
PROJECT(NewHLApp C)
Créer une application RTApp
Pour créer une application compatible en temps réel, commencez par le modèle RTCore Blank à partir de l’extension Visual Studio Azure Sphere et ajustez la configuration à votre projet en procédant comme suit :
Démarrez Visual Studio et sélectionnez Créer un projet.
Tapez
Azure Sphere
la zone de recherche intitulée Rechercher des modèles. Sélectionnez Azure Sphere RTCore Blank dans la liste retournée, puis sélectionnez Suivant.Spécifiez un nom de projet (par exemple, NewRTApp), un emplacement de fichier projet et le nom de la solution que vous avez utilisé pour votre application de haut niveau, puis sélectionnez Créer. Visual Studio crée le dossier NewRTApp dans votre emplacement sélectionné et génère les fichiers de build de l’application vide. Vous devez voir en principe des messages de CMake.
Vous pouvez également créer une application compatible en temps réel à partir de l’un des exemples Azure Sphere compatibles en temps réel :
Si ce n'est déjà fait, clonez le référentiel d'exemples. Copiez l’un des dossiers d’application en temps réel et renommez-le pour votre projet.
Dans le fichier CMakeLists.txt, remplacez le nom du projet par le nom de votre nouveau dossier. Par exemple :
PROJECT(NewRTApp C)
Créer un fichier de lancement Visual Studio de niveau supérieur
Pour travailler simultanément avec des applications partenaires, vous souhaitez autoriser Visual Studio à déboguer en plusieurs cœurs. Vous pouvez l’activer en créant un fichier launch.vs.json dans le dossier de niveau supérieur contenant les deux dossiers d’application partenaire. Ce fichier doit avoir un contenu similaire à ce qui suit :
{
"version": "0.2.1",
"defaults": {},
"configurations": [
{
"type": "azurespheredbg",
"name": "Azure Sphere Apps (All Cores)",
"project": "PartnerAppsHL/CMakeLists.txt",
"DebugBuildStepBuildAll": "true",
"workingDirectory": "${workspaceRoot}",
"applicationPath": "${debugInfo.target}",
"imagePath": "${debugInfo.targetImage}",
"targetCore": "AnyCore",
"partnerComponents": [ "0cc81b35-08dd-4d65-b318-5fa73a4ff6b1", "a9d25f0a-807e-4cb9-80e8-80fee5a1bcb4" ]
}
]
}
La "project"
ligne doit contenir le chemin d’accès relatif au fichier CMakeLists.txt de l’application de haut niveau, et la "partnerComponents"
ligne doit avoir les ID de composant des deux applications partenaires.
Une fois que vous avez créé ce fichier de launch.vs.json de niveau supérieur, vous pouvez ouvrir Visual Studio dans le dossier de niveau supérieur et vous verrez l’option Azure Sphere Apps (Tous les cœurs) dans le menu Sélectionner un élément de démarrage.
Créer un fichier CMakeWorkspaceSettings.json
Si vous utilisez Visual Studio 2022, version 17.1 ou ultérieure et que vous disposez d’un projet avec plusieurs racines, comme l’exemple IntercoreComms, vous devez ajouter un fichier CMakeWorkspaceSettings.json au dossier de niveau supérieur du projet. Le fichier comporte deux entrées, une pour spécifier que la build CMake est activée et qu’elle contient les chemins d’accès aux plusieurs racines. Par exemple, pour l’exemple IntercoreComms, le CMakeWorkspaceSettings.json a le contenu suivant :
{
"enableCMake": true,
"sourceDirectory": [ "IntercoreComms_HighLevelApp", "IntercoreComms_RTApp_MT3620_BareMetal" ]
}
Les chemins d’accès sont spécifiés par rapport au dossier contenant le fichier CMakeWorkspaceSettings.json.
Créer une application de haut niveau
Pour créer une application de haut niveau, commencez par l’un des exemples Azure Sphere de haut niveau :
Si ce n'est déjà fait, clonez le référentiel d'exemples. Copiez l’un des dossiers d’application de haut niveau et renommez-le pour votre projet.
Dans le fichier CMakeLists.txt, remplacez le nom du projet par le nom de votre nouveau dossier. Par exemple :
PROJECT(NewHLApp C)
Créer une application RTApp
Pour créer une application en temps réel, le plus simple est de commencer avec l’exemple HelloWorld_RTApp_MT3620_BareMetal et d’adapter la configuration à votre projet en suivant ces étapes :
Si ce n'est déjà fait, clonez le référentiel d'exemples. Copiez le dossier HelloWorld_RTApp_MT3620_BareMetal et renommez-le pour votre projet.
Dans le fichier CMakeLists.txt, remplacez le nom du projet par le nom de votre nouveau dossier. Par exemple :
PROJECT(NewRTApp C)
Structure de fichiers de base des applications Azure Sphere
Quelle que soit la façon dont vous créez votre application, toutes les applications Azure Sphere partagent les fichiers principaux suivants :
- Code source de l’application dans un ou plusieurs fichiers. Actuellement, seul le code source du langage C est pris en charge.
- Fichiers de build CMake. CMakeLists.txt est nécessaire. CMake, avec l’utilitaire de build léger ninja, est utilisé pour contrôler le processus de génération d’application Azure Sphere.
- Fichier manifeste d’application décrivant les fonctionnalités disponibles pour l’application.
Les applications de haut niveau auront généralement au moins trois autres fichiers :
- Fichier applibs-versions.h pour spécifier les niveaux de version de différentes API Azure Sphere
- Deux fichiers de définition matérielle (une version modifiable au format JSON et un fichier de langage C généré à partir de celui-ci) qui offrent un moyen pratique de faire référence aux composants matériels de votre code. Avec un ensemble cohérent de fichiers de définition matérielle, vous pouvez écrire du code source indépendant du matériel, puis générer des images d’application pour du matériel spécifique en ciblant simplement le fichier de définition matérielle approprié dans votre fichier CMakeLists.txt.
Les applications compatibles en temps réel ajoutent au moins un autre fichier : un fichier linker.ld pour spécifier précisément où différents composants de l’application doivent être chargés sur le cœur en temps réel.
Écrire votre code d’application de haut niveau
- Écrivez votre code d’application de haut niveau à l’aide des exemples d’applications de haut niveau Azure Sphere en tant que guides. Les rubriques suivantes décrivent des scénarios d’implémentation spécifiques :
- Utiliser des périphériques dans une application de haut niveau
- Se connecter aux services web
- Utiliser wolfSSL pour les connexions TLS
- Gérer des certificats
- Comprendre l’utilisation de la mémoire
- Différer les mises à jour d’appareils
- Gérer l’heure et utiliser l’horloge en temps réel
- Utiliser le stockage d’appareils
- Communiquer avec une application prenant en charge le temps réel
- Gérer l’état de mise hors tension
- Définir des profils d’alimentation
- Effectuer une découverte de service
- Dans le fichier CMakeLists.txt :
- Spécifier la révision des outils du Kit de développement logiciel (SDK) Azure Sphere
- Spécifier l’ensemble d’API cibles
- Spécifier le matériel cible
- Dans le fichier app_manifest.json :
- Affectez à
Name
le nom de votre projet. - Ajoutez les fonctionnalités spécifiques à l'application requises par votre code, comme les ressources matérielles ou les connexions. Si l’application de haut niveau communique avec une application RTApp, ajoutez l’ID de composant de l’application de haut niveau à la
AllowedApplicationConnections
fonctionnalité.
- Affectez à
Si vous souhaitez déployer votre application en temps réel avec une application partenaire générale, ajoutez l’ID de composant du partenaire dans le champ partnerComponents de la section configurations du fichier launch.vs.json (Visual Studio) ou du fichier .vscode/launch.json (Visual Studio Code) :
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]
Écrire votre code RTApp
- Écrivez votre code RTApp à l’aide des exemples RTApp Azure Sphere en tant que guides. Les rubriques suivantes décrivent des scénarios d’implémentation spécifiques :
- Dans le fichier app_manifest.json :
- Définissez
Name
sur le nom de votre projet. - Paramétrez
ApplicationType
sur"RealTimeCapable"
- Ajoutez les fonctionnalités spécifiques à l'application requises par votre code, comme les ressources matérielles ou les connexions. Si l'application en temps réel communique avec une application générale, ajoutez l'ID de composant de l'application générale à la fonctionnalité
AllowedApplicationConnections
.
- Définissez
Si vous souhaitez déployer votre application en temps réel avec une application partenaire générale, ajoutez l’ID de composant du partenaire dans le champ partnerComponents de la section configurations du fichier launch.vs.json (Visual Studio) ou du fichier .vscode/launch.json (Visual Studio Code) :
"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]