Créer une application prenant en charge le temps réel
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).
Comme pour les applications de haut niveau, vous pouvez utiliser Visual Studio, Visual Studio Code et la ligne de commande (CLI) pour développer et déboguer des applications en temps réel.
Prérequis
- Connecter votre appareil Azure Sphere à votre ordinateur
- Installer Azure Sphere
- Installer la chaîne d’outils GNU Arm Embedded
- Configurez le matériel pour afficher la sortie de l’UART dédié, si vous ne l’avez pas déjà fait
Activer le développement et le débogage
Pour pouvoir générer un exemple d’application sur votre appareil Azure Sphere ou développer de nouvelles applications pour celui-ci, vous devez activer le développement et le débogage. Par défaut, les appareils Azure Sphere sont « verrouillés » ; autrement dit, ils ne permettent pas aux applications en cours de développement d’être chargées à partir d’un PC, et ils ne permettent pas le débogage d’applications. La préparation des appareils pour le débogage supprime cette restriction, charge les logiciels nécessaires au débogage et déverrouille les fonctionnalités des appareils, comme décrit dans Fonctionnalités et communication des appareils.
Pour déboguer sur les cœurs en temps réel, utilisez la commande azsphere device enable-development. Cette commande configure l’appareil pour qu’il accepte les applications d’un PC pour le débogage et affecte l’appareil au groupe d’appareils de développement, ce qui n’autorise pas les mises à jour des applications cloud. Pendant le développement et le débogage d’applications, vous devez laisser l’appareil dans ce groupe afin que les mises à jour d’applications cloud ne remplacent pas l’application en cours de développement.
Sur Windows, vous devez ajouter le --enable-rt-core-debugging
paramètre, qui charge les serveurs de débogage et les pilotes requis pour chaque type de cœur sur l’appareil.
Connectez-vous à Azure Sphere si vous ne l’avez pas déjà fait :
azsphere login
Ouvrez une interface de ligne de commande à l’aide de PowerShell ou d’une invite de commandes Windows avec des privilèges d’administrateur. Le
--enable-rt-core-debugging
paramètre nécessite des privilèges d’administrateur, car il installe des pilotes USB pour le débogueur.Entrez la commande suivante :
azsphere device enable-development --enable-rt-core-debugging
Le privilège d'administrateur n'étant plus nécessaire, fermez la fenêtre une fois la commande terminée. Une bonne pratique consiste à toujours utiliser le privilège le plus bas permettant d’effectuer une tâche.
Si la commande azsphere device enable-development échoue, consultez Résoudre les problèmes liés à Azure Sphere pour obtenir de l’aide.
Activer le développement et le débogage
Pour pouvoir générer un exemple d’application sur votre appareil Azure Sphere ou développer de nouvelles applications pour celui-ci, vous devez activer le développement et le débogage. Par défaut, les appareils Azure Sphere sont « verrouillés » ; autrement dit, ils ne permettent pas aux applications en cours de développement d’être chargées à partir d’un PC, et ils ne permettent pas le débogage d’applications. La préparation des appareils pour le débogage supprime cette restriction, charge les logiciels nécessaires au débogage et déverrouille les fonctionnalités des appareils, comme décrit dans Fonctionnalités et communication des appareils.
Pour déboguer sur les cœurs en temps réel, utilisez la commande azsphere device enable-development. Cette commande configure l’appareil pour qu’il accepte les applications d’un PC pour le débogage et affecte l’appareil au groupe d’appareils de développement, ce qui n’autorise pas les mises à jour des applications cloud. Pendant le développement et le débogage d’applications, vous devez laisser l’appareil dans ce groupe afin que les mises à jour d’applications cloud ne remplacent pas l’application en cours de développement.
Sur Windows, vous devez ajouter le --enable-rt-core-debugging
paramètre, qui charge les serveurs de débogage et les pilotes requis pour chaque type de cœur sur l’appareil.
Connectez-vous à Azure Sphere si vous ne l’avez pas déjà fait :
azsphere login
Ouvrez une interface de ligne de commande à l’aide de PowerShell, d’une invite de commandes Windows ou d’un interpréteur de commandes Linux avec des privilèges d’administrateur. Le
--enable-rt-core-debugging
paramètre nécessite des privilèges d’administrateur, car il installe des pilotes USB pour le débogueur.Entrez la commande suivante :
azsphere device enable-development --enable-rt-core-debugging
Le privilège d'administrateur n'étant plus nécessaire, fermez la fenêtre une fois la commande terminée. Une bonne pratique consiste à toujours utiliser le privilège le plus bas permettant d’effectuer une tâche.
Si la commande azsphere device enable-development échoue avec le message d’erreur suivant, consultez Résoudre les problèmes d’Azure Sphere pour obtenir de l’aide.
error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'azsphere device show-deployment-status'.
Générer l’application RTApp à l’aide de Visual Studio Code
Pour générer une application en temps réel :
Dans Visual Studio Code, ouvrez le dossier HelloWorld_RTApp_MT3620_BareMetal dans votre clone du dépôt d’exemples Azure Sphere. Si vous êtes invité à sélectionner un kit : choisissez « Ne pas utiliser de kit ».
Appuyez sur F5 pour démarrer le débogueur. Si le projet n’a pas été généré précédemment, ou si les fichiers ont été changés et qu’une regénération est nécessaire, Visual Studio Code génère le projet avant le démarrage du débogage.
L’émulateur de terminal connecté doit afficher la sortie de l’application. Le programme envoie les mots suivants à des intervalles d’une seconde :
Tick
Tock
Remarque
Visual Studio Code fournit IntelliSense, mais ne le met pas à jour automatiquement quand vous modifiez le fichier CMakeLists.txt. Vous devez exécuter la commande CMake : Supprimer le cache et reconfigurer pour actualiser IntelliSense. La vue des cibles CMake se trouve dans la vue des extensions CMake sur la barre de gauche.
Générer l’application RTApp à l’aide de Visual Studio
Pour générer une application en temps réel :
Dans Visual Studio, sélectionnez Fichier>CMake et accédez au dossier qui contient l’exemple.
Si la génération CMake ne démarre pas automatiquement, sélectionnez le fichier CMakeLists.txt.
Dans Visual Studio, afficher>>la sortie Afficher la sortie à partir de : la sortie CMake doit afficher les messages et
CMake generation started.
CMake generation finished.
Dans le menu CMake (le cas échéant), sélectionnez Générer tout. Si le menu n’est pas présent, ouvrez Explorateur de solutions, cliquez avec le bouton droit sur le fichier CMakeLists.txt, puis sélectionnez Générer. L’emplacement de sortie de l’application Azure Sphere s’affiche dans la fenêtre Sortie .
Appuyez sur F5 pour déployer l’application.
L’émulateur de terminal connecté doit afficher la sortie de l’application. Le programme envoie les mots suivants à des intervalles d’une seconde :
Tick
Tock
Remarque
Visual Studio fournit Intellisense pour les applications en temps réel Azure Sphere en collectant des données à partir de son cache CMake. Visual Studio effectue une mise à jour du cache chaque fois que le fichier CMakeLists.txt ou CMakeSettings.json de l'application en temps réel est modifié.
Par défaut, Visual Studio utilise l'affichage Dossier. Si vous préférez un affichage logique du projet CMake, vous pouvez passer à l'Affichage des cibles de CMake. Dans l'Explorateur de solutions, sélectionnez l'icône de bascule de dossier :
Dans le menu déroulant, sélectionnez CMake Targets View.
L’application peut commencer à s’exécuter avant qu’OpenOCD effectue une connexion. Par conséquent, les points d’arrêt définis tôt dans le code peuvent être manqués. Une solution de contournement simple pour ce problème consiste à retarder le démarrage de l’application jusqu’à ce qu’OpenOCD se connecte.
Insérez le code suivant au début du point d’entrée de l’application RTCoreMain. Ceci fait que l’application entre et reste dans une boucle
while
jusqu’à ce que la variablef
soit définie sur true.volatile bool f = false; while (!f) { // empty. }
Appuyez sur F5 pour démarrer l’application avec le débogage, puis arrêtez l’exécution.
Dans le volet Debug Locals , remplacez la valeur de
f
zéro par une.Effectuez normalement le pas à pas détaillé du code.
Générer une application en temps réel à l’aide de l’interface CLI
Les instructions suivantes supposent que vous utilisez CMake. Si vous préférez créer à partir de la ligne de commande sans utiliser CMake, vous pouvez déterminer les options appropriées du compilateur et de l’éditeur de liens en examinant les fichiers AzureSphereRTCoreToolchainBase.cmake et AzureSphereToolchain.cmake qui sont installés avec le kit SDK Azure Sphere.
Ouvrez une interface de ligne de commande à l’aide de PowerShell, de l’invite de commandes Windows ou de l’interpréteur de commandes Linux. Accédez au répertoire de build de votre projet.
À partir du répertoire de build de votre projet, à l’invite de commandes, exécutez CMake avec les paramètres suivants :
cmake --preset <preset-name> <source-path>
--preset <preset-name>
Nom prédéfini de configuration de build tel que défini dans CMakePresets.json.
--build <cmake-path>
Répertoire binaire qui contient le cache CMake. Par exemple, si vous exécutez CMake sur un exemple Azure Sphere, la commande de build serait
cmake --build out/ARM-Debug
.<source-path>
Chemin d’accès du répertoire qui contient les fichiers sources de l’exemple d’application. Dans l’exemple, le référentiel d’exemples Azure Sphere a été téléchargé dans un répertoire appelé AzSphere.
Les paramètres CMake sont séparés par des espaces. Le caractère de continuation de ligne (^ pour la ligne de commande Windows, \ pour la ligne de commande Linux ou « pour PowerShell) peut être utilisé pour la lisibilité, mais n’est pas obligatoire.
Les exemples suivants montrent les commandes CMake pour l’application RTApp HelloWorld :
Exécutez Ninja pour générer l’application et créer le fichier de package d’images :
ninja -C out/ARM-Debug
Ninja place les fichiers .imagepackage et d’application résultants dans le répertoire spécifié.
Vous pouvez également appeler Ninja via CMake avec la commande suivante :
cmake --build out/<binary-dir>
Définissez
<binary-dir>
le répertoire binaire qui contient le cache CMake. Par exemple, si vous exécutez CMake sur un exemple Azure Sphere, la commande de build seraitcmake --build out/ARM-Debug
.Supprimez toutes les applications déjà déployées sur l’appareil :
azsphere device sideload delete
Déployez le package d’images créé par Ninja :
azsphere device sideload deploy --image-package <package-name>
Obtenez l’ID de composant pour l’image :
azsphere image-package show --image-package <path-to-imagepackage>
La commande retourne toutes les métadonnées pour le package d’image. L’ID de composant pour l’application apparaît dans la section Identité du type d’image d’application. Par exemple :
Image package metadata: Section: Identity Image Type: Application Component ID: <component id> Image ID: <image id>
Déterminez le cœur sur lequel votre application s’exécute.
Par défaut, l'application en temps réel est déployée sur le premier cœur en temps réel disponible sur l'appareil ; il n'est pas possible de spécifier un cœur particulier. Pour savoir sur quel cœur l’application est exécutée, utilisez la commande azsphere device app afin d’arrêter puis de redémarrer l’application. Fournissez l'ID de composant de l'application dans les commandes. Par exemple :
azsphere device app stop --component-id <component id> <component id>: App state: stopped
azsphere device app start --component-id <component id> <component id> App state: running Core : Real-time 0
L’émulateur de terminal connecté doit afficher la sortie de l’application. Le programme envoie les mots suivants à des intervalles d’une seconde :
Tick
Tock
Sortie de journal à partir d'une application en temps réel
Chaque cœur en temps réel de la carte MT3620 possède un UART dédié destiné à la sortie de journalisation. Les cœurs en temps réel peuvent également accéder aux UART de l’ISU. La base de données RDB MT3620 expose uniquement la broche TX, que vous pouvez utiliser pour afficher la sortie du journal à partir de l’application. D'autres matériels peuvent présenter une exposition différente, ou aucune exposition. Pour afficher la sortie du journal, configurez votre matériel comme décrit dans la procédure de démarrage rapide. L’UART dédié n’exige pas la spécification du manifeste de l’application Uart
. En revanche, il ne doit pas être utilisé à d’autres fins que la journalisation de la sortie d’une application en temps réel.
Développer avec des applications partenaires
Quand vous chargez une application sur l’appareil Azure Sphere, les outils de déploiement Azure Sphere suppriment par défaut toutes les applications existantes. Pour éviter ce problème lorsque vous développez des applications qui communiquent entre elles, vous devez marquer les applications en tant que partenaires. Lorsque vous déployez l’une des applications, ses partenaires ne seront pas supprimés. Pour plus d’informations, consultez Marquer les applications comme partenaires.
Dépannage
Si vous rencontrez des problèmes, consultez Résolution de problèmes d’applications temps réel.
Ressources supplémentaires
Des pilotes et des exemples supplémentaires pour rtApps qui ciblent les cœurs M4 en temps réel sur la puce MT3620 sont disponibles sur GitHub auprès des partenaires Azure Sphere :