Partager via


Tutoriel : Créer et déboguer 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).

Ce tutoriel montre comment générer et déboguer un exemple de projet qui inclut à la fois une application de haut niveau et une application compatible en temps réel, où les deux applications communiquent entre le cœur A7 de haut niveau et le cœur M4 en temps réel. Consultez la vue d’ensemble des applications Azure Sphere pour obtenir des informations de base sur les applications de haut niveau et les applications compatibles en temps réel.

Dans ce tutoriel, vous allez apprendre à :

  • Installer la chaîne d’outils GNU Arm
  • Configurer le matériel pour afficher la sortie
  • Activer le développement et le débogage
  • Cloner l’exemple de référentiel Azure Sphere
  • Démarrer un émulateur de terminal pour afficher la sortie
  • Générer, exécuter et déboguer une paire d’applications partenaires

Important

Ces instructions partent du principe que vous utilisez du matériel conforme à la conception d’une carte de référence (RDB) MT3620, comme le kit de développement MT3620 de Seeed Studios. Si vous utilisez un autre matériel Azure Sphere, consultez la documentation du fabricant pour déterminer si l'UART est exposé et la manière d’y accéder. Vous devrez peut-être configurer le matériel pour afficher la sortie différemment et mettre à jour l’exemple de code et le champ « Uarts » du fichier app_manifest.json pour utiliser un autre UART.

Prérequis

Installer GNU Arm Embedded Toolchain

  • Visual Studio 2022 : Si vous utilisez Visual Studio 2022, installez la chaîne d’outils GNU Arm Embedded (arm-none-eabi) à partir du site web du développeur Arm.
  • Visual Studio 2019 : la chaîne d’outils est automatiquement installée avec l’extension Azure Sphere pour Visual Studio sur Visual Studio 2019. Si vous utilisez Visual Studio 2019, passez à la configuration du matériel pour afficher la sortie. Toutefois, si vous avez installé manuellement la chaîne d’outils GNU Arm Embedded, Visual Studio utilise la version que vous avez installée.

Pour installer la chaîne d’outils, sur le site web du développeur Arm, recherchez la chaîne d’outils GNU Arm Embedded (arm-none-eabi) qui inclut le compilateur pour le processeur ARM Cortex-M4. Suivez les instructions ci-dessous pour télécharger et installer le compilateur pour votre plateforme de système d’exploitation.

Par défaut, Visual Studio Code recherche la chaîne d’outils et doit trouver la version que vous avez installée. Si vous rencontrez des problèmes de build liés à la chaîne d’outils, vérifiez les extensions de paramètres de préférences>>>AzureSphere pour vous assurer que « Azure Sphere : Arm Gnu Path » identifie le répertoire d’installation de la chaîne d’outils GNU Arm Embedded.

Configurer le matériel pour afficher la sortie

Actuellement, chaque cœur en temps réel prend en charge un UART TX uniquement. Les applications RTApp peuvent utiliser cet UART pour envoyer la sortie de journal à partir de l’appareil. Pendant le développement et le débogage des applications, vous avez généralement besoin d’un moyen de lire et d’afficher la sortie. L’exemple HelloWorld_RTApp_MT3620_BareMetal montre comment une application peut écrire dans l’UART.

Utilisez un adaptateur USB-série comme FTDI Friend pour connecter l’UART du cœur temps réel à un port USB de votre machine. Vous aurez également besoin d’un émulateur de terminal pour établir une connexion série avec les paramètres de terminal 115200-8-N-1 (115200 bps, 8 bits, pas de bits de parité, un bit d’arrêt) pour afficher la sortie.

Pour configurer le matériel afin d’afficher la sortie d’une application temps réel, suivez ces étapes. Vous devez consulter la documentation du fabricant de votre matériel pour déterminer les emplacements des broches. Si vous utilisez du matériel qui suit le matériel RDB (Reference Board Design) MT3620, comme le kit de développement MT3620 de Seeed Studios, examiner les barettes d’interface RDB peut vous aider à déterminer les emplacements des broches.

  1. Connectez GND sur l’adaptateur USB-série au GND sur votre kit de développement. Sur le matériel RDB MT3620, GND correspond à la barette 3, broche 2.

  2. Connectez RX sur l’adaptateur USB-série au IOM4-0 TX sur votre kit de développement. Sur le matériel RDB MT3620, IOM4-0 TX correspond à la barette 3, broche 6.

  3. Connectez l’adaptateur USB à série à un port USB gratuit sur votre ordinateur de développement et déterminez le port auquel l’appareil série est connecté.

    • Sur Windows, démarrez Gestionnaire de périphériques, sélectionnez Afficher>les appareils par conteneur, puis recherchez « USB UART ». Par exemple, FT232R USB UART indique l’adaptateur FTDI Friend.

    • Sur Linux, tapez la commande suivante :

      dmesg | grep ttyUSB
      

      Le port doit être nommé ttyUSBn, où n indique le numéro de port. Si la dmesg commande répertorie plusieurs ports USB, celui qui est connecté au dernier port signalé comme attaché. Par exemple, dans les éléments suivants, vous utiliseriez ttyUSB4 :

    ~$ dmesg | grep ttyUSB
    [  144.564350] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB0
    [  144.564768] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB1
    [  144.565118] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB2
    [  144.565593] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB3
    [  144.570429] usb 1-1.1.3: FTDI USB Serial Device converter now attached to ttyUSB4
    [  254.171871] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
    
  4. Démarrez un programme d’émulateur de terminal et ouvrez un terminal 115200-8-N-1 sur le port COM utilisé par l’adaptateur. Consultez la documentation de l’émulateur de terminal pour savoir comment spécifier le port et la vitesse.

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.

  1. Connectez-vous à Azure Sphere si vous ne l’avez pas déjà fait :

    azsphere login
    
  2. 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.

  3. Entrez la commande suivante :

    azsphere device enable-development --enable-rt-core-debugging
    
  4. 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.

Téléchargement de l'exemple d'application

Vous pouvez télécharger les applications InterCore Communications comme suit :

  1. Pointez votre navigateur vers Microsoft Samples Browser.
  2. Tapez « Azure Sphere » dans la zone de recherche.
  3. Sélectionnez Azure Sphere - Communications intercœurs dans les résultats de la recherche.
  4. Sélectionnez Télécharger ZIP.
  5. Ouvrez le fichier téléchargé et extrayez dans un répertoire local.

Générer et exécuter les applications partenaires

  1. Démarrez Visual Studio. Sélectionnez Ouvrir un dossier local et accédez au dossier où vous avez extrait les applications IntercoreComms.

    Important

    Si vous utilisez Visual Studio 2022 version 17.1 ou ultérieure et que vous avez extrait l’exemple IntercoreComms avant la version 22.02 d’Azure Sphere, vous devez ajouter un fichier CMakeWorkspaceSettings.json à votre dossier de projet de niveau supérieur.

  2. Si vous n’utilisez pas de base de données RDB MT3620, mettez à jour les fichiers app_manifest.json pour les applications et le fichier de définition matérielle et CMakeLists.txt fichier pour l’application de haut niveau pour qu’il corresponde à votre matériel.

  3. Si la génération CMake ne démarre pas automatiquement, sélectionnez le fichier CMakeLists.txt.

  4. Dans Visual Studio, afficher>>la sortie Afficher la sortie à partir de : la sortie CMake doit afficher les messages CMake generation started et .CMake generation finished

  5. 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 des applications IntercoreComms_HL &IntercoreComms RT s’affiche dans la fenêtre Sortie .

  6. Sélectionnez Sélectionner l’élément>de démarrage IntercoreComms (tous les cœurs).

  7. Sélectionnez Déboguer> ou appuyez sur F5 pour déployer et déboguer les applications.

  8. Dans la fenêtre Sortie, sélectionnez sortie dans le menu, sélectionnez Sortie de l’appareil. La fenêtre Sortie doit afficher la sortie de l’application de haut niveau :

    Remote debugging from host 192.168.35.1, port 58817
    High-level intercore comms application
    Sends data to, and receives data from a real-time capable application.
    Received 19 bytes: rt-app-to-hl-app-07
    Sending: hl-app-to-rt-app-00
    Sending: hl-app-to-rt-app-01
    
  9. L’émulateur de terminal connecté doit afficher la sortie du programme en temps réel :

    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
    Text: hl-app-to-rt-app-00
    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:31
    Text: hl-app-to-rt-app-01
    
  10. Utilisez le débogueur pour définir des points d’arrêt, inspecter des variables et essayer d’autres tâches de débogage.

  1. Dans Visual Studio Code, ouvrez le dossier dans lequel vous avez extrait les applications IntercoreComms. Visual Studio Code détecte le fichier intercore.code-workspace et vous demande si vous souhaitez ouvrir l’espace de travail. Sélectionnez Ouvrir l’espace de travail pour ouvrir l’application en temps réel et l’application de haut niveau en même temps.

  2. Si vous n’utilisez pas de base de données RDB MT3620, mettez à jour les fichiers app_manifest.json pour les applications et le fichier de définition matérielle et CMakeLists.txt fichier pour l’application de haut niveau pour qu’il corresponde à votre matériel.

  3. 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.

  4. La fenêtre Sortie d’Azure Sphere doit afficher en principe « Déploiement de l’image... » suivi des chemins du kit SDK et du compilateur.

  5. La fenêtre de sortie doit afficher la sortie de l’application de haut niveau :

    Remote debugging from host 192.168.35.1, port 58817
    High-level intercore comms application
    Sends data to, and receives data from a real-time capable application.
    Received 19 bytes: rt-app-to-hl-app-07
    Sending: hl-app-to-rt-app-00
    Sending: hl-app-to-rt-app-01
    
  6. L’émulateur de terminal connecté doit afficher la sortie du programme en temps réel :

    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
    Text: hl-app-to-rt-app-00
    Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
    Message size: 19 bytes:
    Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:31
    Text: hl-app-to-rt-app-01
    
  7. Utilisez les fonctionnalités de débogage de Visual Studio Code pour définir des points d’arrêt, inspecter des variables et essayer d’autres tâches de débogage.

Dépannage

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.

  1. 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 variable f soit définie sur true.

    static _Noreturn void RTCoreMain(void)
    {
      .
      .
      .
     volatile bool f = false;
     while (!f) {
        // empty.
     }
      .
      .
      .
    }
    
  2. Appuyez sur F5 pour démarrer l’application avec le débogage, puis arrêtez l’exécution.

  3. Dans le volet Debug Locals , remplacez la valeur de f zéro par une.

  4. Parcourez le code comme d’habitude.

Lors de la génération avec l’interface CLI, vous créez et déployez d’abord l’application en temps réel, puis générez et déployez l’application de haut niveau.

Créer et déployer l’application en temps réel

  1. Accédez au dossier où vous avez extrait les applications IntercoreComms, puis sélectionnez le dossier IntercoreComms/IntercoreComms_RTApp_MT3620_BareMetal.

  2. Ouvrez le fichier app_manifest.json et vérifiez que l’ID de composant de l’application de haut niveau est affiché dans la fonctionnalité AllowedApplicationConnections.

  3. 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.

  4. À 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 IntercoreComms :

    Invite de commandes Windows

     cmake ^
    --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

     cmake `
    --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_RTApp_MT3620_BareMetal"
    
  5. À partir du répertoire de build de votre projet, à l’invite de commandes, 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 serait cmake --build out/ARM-Debug.

    Lors de la résolution des problèmes, en particulier après avoir apporté des modifications à vos commandes CMake, supprimez l’intégralité de la build et réessayez.

  6. Supprimez toutes les applications déjà déployées sur l’appareil :

    azsphere device sideload delete
    
  7. À partir du répertoire de build de votre projet, à l’invite de commandes, chargez le package d’images créé par ninja :

    azsphere device sideload deploy --image-package <path-to-imagepackage>
    

    L’application commence à s’exécuter peu après son chargement.

  8. 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>
    

Créer et déployer l’application de haut niveau

  1. Accédez au dossier dans lequel vous avez extrait les applications IntercoreComms, puis sélectionnez le dossier IntercoreComms/IntercoreComms_HighLevelApp.

  2. Ouvrez le fichier app_manifest.json et vérifiez que l’ID de composant rtApp est affiché dans la fonctionnalité AllowedApplicationConnections.

  3. 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.

  4. À 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 de haut niveau IntercoreComms.

    Invite de commandes Windows

     cmake ^
     --preset "ARM-Debug" ^
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    

    Windows PowerShell

     cmake `
     --preset "ARM-Debug" `
     "C:\AzSphere\azure-sphere-samples\Samples\IntercoreComms\IntercoreComms_HighLevelApp"
    
  5. À partir du répertoire de build de votre projet, à l’invite de commandes, 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 serait cmake --build out/ARM-Debug.

    Lors de la résolution des problèmes, en particulier après avoir apporté des modifications à vos commandes CMake, supprimez l’intégralité de la build et réessayez.

  6. À partir du répertoire de build de votre projet, à l’invite de commandes, chargez le package d’images créé par ninja :

    azsphere device sideload deploy --image-package <package-name>
    

    L’application commence à s’exécuter peu après son chargement.

  7. 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>
    

Exécuter les applications partenaires avec débogage activé

  1. Arrêtez l’application en temps réel si elle est en cours d’exécution.

    azsphere device app stop --component-id <component id>
    
  2. Réactivez l’application pour le débogage.

    azsphere device app start --component-id <component id>
    

    Cette commande retourne le cœur sur lequel l’application s’exécute.

      <component id>
      App state: running
      Core        : Real-time 0
    
  3. Accédez au dossier Openocd pour le sysroot avec lequel l’application a été générée. Les sysroots sont installés dans le dossier d’installation du SDK Azure Sphere. Par exemple, sur Windows, le dossier est installé par défaut dans C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd et sur Linux, dans /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Exécutez openocd comme le montre l’exemple suivant. L’exemple suppose que l’application s’exécute sur le cœur 0. Si l’application s’exécute sur le cœur 1, remplacez « targets io0 » par « targets io1 ».

       openocd -f mt3620-rdb-ftdi.cfg -f mt3620-io0.cfg -c "gdb_memory_map disable" -c "gdb_breakpoint_override hard" -c init -c "targets io0" -c halt -c "targets"
    
  5. Ouvrez une nouvelle invite de commandes Azure Sphere (Cli classique Windows Azure Sphere), une invite de commandes standard ou PowerShell (Windows Azure Sphere CLI) ou une fenêtre de terminal (Linux).

  6. Accédez au dossier qui contient le fichier .out de l’application en temps réel et démarrez arm-none-eabi-gdb, qui fait partie de la chaîne d’outils GNU Arm Embedded :

    Invite de commandes Windows

    "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    

    Windows PowerShell

     & "C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin\arm-none-eabi-gdb" IntercoreComms_RTApp_MT3620_BareMetal.out
    
  7. Le serveur OpenOCD fournit une interface de serveur GDB sur :4444. Définissez la cible pour le débogage.

    target remote :4444

  8. Vous pouvez maintenant exécuter des commandes gdb vers l’application en temps réel. Ajoutez un point d’arrêt à la fonction HandleSendTimerDeferred :

    break HandleSendTimerDeferred
    
  9. L’émulateur de terminal connecté doit afficher la sortie de l’application compatible en temps réel.

  10. Ouvrez une nouvelle invite de commandes Azure Sphere (Cli classique Windows Azure Sphere), une invite de commandes standard ou PowerShell (Windows Azure Sphere CLI) ou une fenêtre de terminal (Linux).

  11. Accédez au dossier qui contient le fichier .imagepackage d’application de haut niveau.

  12. Arrêtez l’application de haut niveau si elle est en cours d’exécution.

    azsphere device app stop --component-id <component id>
    
  13. Démarrez à nouveau l’application de haut niveau avec débogage.

    azsphere device app start --component-id <component id> --debug-mode
    
  14. Ouvrez un émulateur de terminal et établissez une connexion Telnet ou TCP à 192.168.35.2 au port 2342 pour afficher la sortie de l’application de haut niveau.

  15. Démarrez gdb avec la commande suivante :

    Invite de commandes Windows

    "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Windows PowerShell

    & "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb.exe" IntercoreComms_HighLevelApp.out
    

    Remarque

    Le SDK Azure Sphere est fourni avec plusieurs sysroots afin que les applications puissent cibler différents ensembles d’API, comme décrit dans la version du runtime d’application, sysroots et les API bêta. Les sysroots sont installés dans le dossier d’installation du SDK Azure Sphere sous Sysroots.

  16. Définissez la cible de débogage à distance sur l’adresse IP 192.168.35.2 sur le port 2345 :

    target remote 192.168.35.2:2345

  17. Ajoutez un point d’arrêt à la fonction SendMessageToRTApp :

    break SendMessageToRTApp

  18. Tapez c pour continuer, observez la sortie dans votre terminal Telnet/TCP, puis basculez vers l’invite de commandes ou la fenêtre de terminal contenant votre session de débogage d’application en temps réel.

  19. Tapez c pour continuer et observer la sortie dans votre session série connectée.

Vous pouvez travailler en arrière entre les sessions de débogage, basculer entre l’application en temps réel et l’application de haut niveau. Vous devez voir la sortie similaire à la suivante dans les deux fenêtres de sortie :

Starting debugger....
                     Process /mnt/apps/25025d2c-66da-4448-bae1-ac26fcdd3627/bin/app created; pid = 40
                     Listening on port 2345
                                           Remote debugging from host 192.168.35.1, port 56522
              High-level intercore comms application
                                                    Sends data to, and receives data from a real-time capable application.
                                          Sending: hl-app-to-rt-app-00
                                                                      Sending: hl-app-to-rt-app-01
IntercoreComms_RTApp_MT3620_BareMetal
App built on: Nov 17 2020, 09:25:19
Sender: 25025d2c-66da-4448-bae1-ac26fcdd3627
Message size: 19 bytes:
Hex: 68:6c:2d:61:70:70:2d:74:6f:2d:72:74:2d:61:70:70:2d:30:30
Text: hl-app-to-rt-app-00

Pour mettre fin à chaque session de débogage, tapez q à l’invite gdb.

Étapes suivantes