Zelfstudie: Partnertoepassingen bouwen en fouten opsporen

Deze zelfstudie laat zien hoe u een voorbeeldproject bouwt en fouten opspoort dat zowel een toepassing op hoog niveau als een toepassing met realtime-functionaliteit bevat, waarbij de twee apps communiceren tussen de A7-kern op hoog niveau en de realtime M4-kern. Zie Overzicht van Azure Sphere-toepassingen voor basisinformatie over toepassingen op hoog niveau en toepassingen die in realtime kunnen worden gebruikt.

In deze zelfstudie leert u het volgende:

  • Installeer de GNU Arm-toolchain
  • Hardware instellen om uitvoer weer te geven
  • Ontwikkeling en foutopsporing inschakelen
  • De Azure Sphere-voorbeeldopslagplaats klonen
  • Een terminalemulator starten om uitvoer weer te geven
  • Een paar partnertoepassingen bouwen, uitvoeren en fouten opsporen

Belangrijk

In deze instructies wordt ervan uitgegaan dat u hardware gebruikt die de RDB-hardware (Reference Board Design) van MT3620 volgt, zoals de MT3620 Dev Kit van Seeed Studios. Als u verschillende Azure Sphere-hardware gebruikt, raadpleegt u de documentatie van de fabrikant om erachter te komen of de UART beschikbaar is en hoe u er toegang toe hebt. Mogelijk moet u hardware instellen om uitvoer anders weer te geven en de voorbeeldcode en het veld Uarts van het app_manifest.json-bestand bijwerken om een andere UART te gebruiken.

Voorwaarden

Installeer de GNU Arm Embedded Toolchain

  • Visual Studio 2022: Als u Visual Studio 2022 gebruikt, installeert u de GNU Arm Embedded Toolchain (arm-none-eabi) vanaf de website van Arm-ontwikkelaars.
  • Visual Studio 2019: De hulpprogrammaketen wordt automatisch geïnstalleerd met de Azure Sphere-extensie voor Visual Studio in Visual Studio 2019. Als u Visual Studio 2019 gebruikt, gaat u verder met Hardware instellen om uitvoer weer te geven. Als u de GNU Arm Embedded Toolchain echter handmatig hebt geïnstalleerd, gebruikt Visual Studio de versie die u hebt geïnstalleerd.

Als u de toolchain wilt installeren op de ontwikkelaarswebsite van Arm, vindt u de GNU Arm Embedded Toolchain (arm-none-eabi) met de compiler voor de ARM Cortex-M4-processor. Volg de instructies daar om de compiler voor uw besturingssysteemplatform te downloaden en te installeren.

Visual Studio Code zoekt standaard naar de hulpprogrammaketen en moet de versie vinden die u hebt geïnstalleerd. Als u buildproblemen ondervindt met betrekking tot de hulpprogrammaketen, controleert uVoorkeuren-instellingen>>Extensies>AzureSphere om ervoor te zorgen dat 'Azure Sphere: Arm Gnu Path' de installatiemap GNU Arm Embedded Toolchain identificeert.

Hardware instellen om uitvoer weer te geven

Momenteel ondersteunt elke realtime kern een TX-only UART. RTApps kan deze UART gebruiken om logboekuitvoer vanaf het apparaat te verzenden. Tijdens de ontwikkeling en foutopsporing van toepassingen hebt u meestal een manier nodig om de uitvoer te lezen en weer te geven. Het voorbeeld van HelloWorld_RTApp_MT3620_BareMetal laat zien hoe een toepassing naar de UART kan schrijven.

Gebruik een USB-naar-seriële adapter, zoals de FTDI Friend, om de UART op de realtime kern aan te sluiten op een USB-poort op uw computer. U hebt ook een terminalemulator nodig om een seriële verbinding tot stand te brengen met 115200-8-N-1-terminalinstellingen (115200 bps, 8 bits, geen pariteitsbits, één stop-bit) om de uitvoer weer te geven.

Volg deze stappen om de hardware in te stellen voor het weergeven van uitvoer van een RTApp. Raadpleeg de documentatie van de hardwarefabrikant om de locaties van de pincode te bepalen. Als u hardware gebruikt die de RDB-hardware (Reference Board Design) van MT3620 volgt, zoals de MT3620 Dev Kit van Seeed Studios, kunt u de RDB-interfaceheaders bekijken om de locaties van de pincode te bepalen.

  1. Sluit GND op de USB-naar-seriële adapter aan op GND op uw ontwikkelkit. Op MT3620 RDB-hardware is GND Header 3, pin 2.

  2. Sluit RX op de USB-naar-seriële adapter aan op IOM4-0 TX op uw ontwikkelkit. Op MT3620 RDB-hardware is IOM4-0 TX Header 3, pin 6.

  3. Sluit de USB-naar-seriële adapter aan op een vrije USB-poort op uw ontwikkelcomputer en bepaal op welke poort het seriële apparaat is aangesloten.

    • Start in Windows Apparaatbeheer, selecteer Apparaten weergeven>per container en zoek naar 'USB UART'. FT232R USB UART geeft bijvoorbeeld de FTDI Friend-adapter aan.

    • Typ in Linux de volgende opdracht:

      dmesg | grep ttyUSB
      

      De poort moet de naam ttyUSBn hebben, waarbij n het poortnummer aangeeft. Als de dmesg opdracht meerdere USB-poorten vermeldt, wordt de poort die is aangesloten op de meestal de laatste poort gerapporteerd als gekoppeld. In het volgende gebruikt u bijvoorbeeld 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. Start een terminalemulatorprogramma en open een terminal 115200-8-N-1 naar de COM-poort die door de adapter wordt gebruikt. Raadpleeg de documentatie voor de terminalemulator voor meer informatie over het opgeven van de poort en snelheid.

Ontwikkeling en foutopsporing inschakelen

Voordat u een voorbeeldtoepassing kunt bouwen op uw Azure Sphere-apparaat of hiervoor nieuwe toepassingen kunt ontwikkelen, moet u ontwikkeling en foutopsporing inschakelen. Azure Sphere-apparaten zijn standaard 'vergrendeld'; Dat wil gezegd hebben dat toepassingen die in ontwikkeling zijn, niet vanaf een pc mogen worden geladen en dat er geen foutopsporing van toepassingen is toegestaan. Het apparaat voorbereiden op foutopsporing verwijdert deze beperking en laadt software die nodig is voor foutopsporing en ontgrendelt apparaatmogelijkheden .

Als u fouten wilt opsporen in de realtime kernen, gebruikt u de opdracht az sphere device enable-development . Met deze opdracht configureert u het apparaat om toepassingen van een pc te accepteren voor foutopsporing en wordt het apparaat toegewezen aan de apparaatgroep Ontwikkeling, die geen updates van cloudtoepassingen toestaat. Tijdens het ontwikkelen van toepassingen en foutopsporing moet u het apparaat in deze groep laten zodat cloudtoepassingsupdates de toepassing in ontwikkeling niet overschrijven.

In Windows moet u de --enable-rt-core-debugging parameter toevoegen, waarmee de foutopsporingsservers en vereiste stuurprogramma's voor elk type kern op het apparaat worden geladen.

  1. Meld u aan bij Azure Sphere als u dit nog niet hebt gedaan:

    az login
    
  2. Open een opdrachtregelinterface met behulp van PowerShell of Windows-opdrachtprompt met beheerdersbevoegdheden. Voor de --enable-rt-core-debugging parameter is beheerdersbevoegdheden vereist omdat er USB-stuurprogramma's voor het foutopsporingsprogramma worden geïnstalleerd.

  3. Voer de volgende opdracht in:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Sluit het venster nadat de opdracht is voltooid omdat er geen beheerdersbevoegdheden meer nodig zijn. Als best practice moet u altijd de laagste bevoegdheid gebruiken waarmee een taak kan worden uitgevoerd.

Als de opdracht az sphere device enable-development mislukt, raadpleegt u Problemen met Azure Sphere oplossen voor hulp.

De voorbeeldtoepassing downloaden

U kunt de InterCore Communications-toepassingen als volgt downloaden:

  1. Wijs uw browser naar Microsoft Samples Browser.
  2. Typ 'Azure Sphere' in het vak Search.
  3. Selecteer Azure Sphere - Inter-core Communications in de zoekresultaten.
  4. Selecteer ZIP downloaden.
  5. Open het gedownloade bestand en pak het uit naar een lokale map.

De partnertoepassingen bouwen en uitvoeren

  1. Start Visual Studio. Selecteer Een lokale map openen en navigeer naar de map waarin u de IntercoreComms-toepassingen hebt uitgepakt.

    Belangrijk

    Als u Visual Studio 2022 versie 17.1 of hoger gebruikt en u het IntercoreComms-voorbeeld hebt uitgepakt vóór de 22.02 Azure Sphere-release, moet u een CMakeWorkspaceSettings.json-bestand toevoegen aan uw projectmap op het hoogste niveau.

  2. Als u geen MT3620 RDB gebruikt, werkt u de app_manifest.json-bestanden bij voor zowel toepassingen als het hardwaredefinitiebestand en CMakeLists.txt bestand zodat de toepassing op hoog niveau overeenkomt met uw hardware.

  3. Als het genereren van CMake niet automatisch wordt gestart, selecteert u het CMakeLists.txt-bestand.

  4. In Visual Studiobekijkt u> Uitvoeruitvoer >weergeven Uitvoer weergeven van: CMake-uitvoer moet de berichten CMake generation started en CMake generation finishedweergeven .

  5. Selecteer Build>Alles bouwen. Als het menu niet aanwezig is, opent u Solution Explorer, klikt u met de rechtermuisknop op het bestand CMakeLists.txt en selecteert u Bouwen. De uitvoerlocatie van de IntercoreComms_HL & IntercoreComms RT-toepassingen wordt weergegeven in het venster Uitvoer .

  6. Selecteer Opstartitem>selecteren IntercoreComms (alle kernen).

  7. Selecteer Fouten opsporen>of druk op F5 om de toepassingen te implementeren en fouten op te sporen.

  8. Selecteer in het venster Uitvoeruitvoer in het menu en selecteer Apparaatuitvoer. In het venster Uitvoer moet de uitvoer van de toepassing op hoog niveau worden weergegeven:

    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. De verbonden terminalemulator moet uitvoer van het realtime-compatibele programma weergeven:

    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. Gebruik het foutopsporingsprogramma om onderbrekingspunten in te stellen, variabelen te inspecteren en andere foutopsporingstaken uit te voeren.

  1. Open in Visual Studio Code de map waarin u de IntercoreComms-toepassingen hebt uitgepakt. Visual Studio Code detecteert het bestand intercore.code-workspace en vraagt of u de werkruimte wilt openen. Selecteer Werkruimte openen om zowel de realtime toepassing als de toepassing op hoog niveau tegelijk te openen.

  2. Als u geen MT3620 RDB gebruikt, werkt u de app_manifest.json-bestanden bij voor zowel toepassingen als het hardwaredefinitiebestand en CMakeLists.txt bestand zodat de toepassing op hoog niveau overeenkomt met uw hardware.

  3. Druk op F5 om het foutopsporingsprogramma te starten. Als het project nog niet eerder is gebouwd of als bestanden zijn gewijzigd en opnieuw moeten worden opgebouwd, wordt het project door Visual Studio Code gebouwd voordat de foutopsporing wordt gestart.

  4. In het uitvoervenster van Azure Sphere wordt het volgende weergegeven: 'Installatiekopieën implementeren...' gevolgd door de paden naar de SDK en compiler.

  5. In het uitvoervenster moet de uitvoer van de toepassing op hoog niveau worden weergegeven:

    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. De verbonden terminalemulator moet uitvoer van het realtime-compatibele programma weergeven:

    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. Gebruik de foutopsporingsfuncties van Visual Studio Code om onderbrekingspunten in te stellen, variabelen te inspecteren en andere foutopsporingstaken uit te voeren.

Probleemoplossing

De toepassing kan worden uitgevoerd voordat OpenOCD verbinding maakt. Hierdoor kunnen onderbrekingspunten die vroeg in de code zijn ingesteld, worden gemist. Een eenvoudige tijdelijke oplossing hiervoor is het starten van de app uit te stellen totdat OpenOCD verbinding maakt.

  1. Voeg de volgende code in aan het begin van het toepassingsinvoerpunt RTCoreMain. Hierdoor wordt de toepassing in een lus ingevoerd en blijft deze in een while lus totdat de variabele f is ingesteld op true.

    static _Noreturn void RTCoreMain(void)
    {
      .
      .
      .
     volatile bool f = false;
     while (!f) {
        // empty.
     }
      .
      .
      .
    }
    
  2. Druk op F5 om de app te starten met foutopsporing en begin vervolgens met de uitvoering.

  3. Wijzig in het deelvenster Lokale foutopsporing de waarde van f van nul in één.

  4. Doorloop de code zoals u gewend bent.

Bij het bouwen met de CLI bouwt en implementeert u eerst de toepassing die in realtime kan worden gebruikt, en vervolgens de toepassing op hoog niveau.

De realtime compatibele toepassing bouwen en implementeren

  1. Navigeer naar de map waarin u de IntercoreComms-toepassingen hebt uitgepakt en selecteer vervolgens de map IntercoreComms/IntercoreComms_RTApp_MT3620_BareMetal.

  2. Open het bestand app_manifest.json en controleer of de onderdeel-id van de app op hoog niveau wordt weergegeven in de mogelijkheid AllowedApplicationConnections.

  3. Open een opdrachtregelinterface met behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell. Navigeer naar de map van uw projectbuild.

  4. Voer CMake uit vanuit de map van uw projectbuild, bij de opdrachtprompt, met de volgende parameters:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      De vooraf ingestelde naam van de buildconfiguratie zoals gedefinieerd in CMakePresets.json.

    • --build <cmake-path>

      De binaire map die de CMake-cache bevat. Als u bijvoorbeeld CMake uitvoert op een Azure Sphere-voorbeeld, is cmake --build out/ARM-Debugde build-opdracht .

    • <source-path>

      Het pad van de map met de bronbestanden voor de voorbeeldtoepassing. In het voorbeeld is de opslagplaats azure Sphere-voorbeelden gedownload naar een map met de naam AzSphere.

      CMake-parameters worden gescheiden door spaties. Het regel vervolgteken (^ voor Windows-opdrachtregel, \ voor Linux-opdrachtregel of ' voor PowerShell) kan worden gebruikt voor leesbaarheid, maar is niet vereist.

    In de volgende voorbeelden ziet u de CMake-opdrachten voor de IntercoreComms RTApp:

    Windows-opdrachtprompt

     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. Voer vanuit de map van uw projectbuild, bij de opdrachtprompt, Ninja uit om de toepassing te bouwen en het installatiekopieënpakketbestand te maken.

    ninja -C out/ARM-Debug
    

    Ninja plaatst de resulterende toepassings- en .imagepackage-bestanden in de opgegeven map.

    U kunt Ninja ook aanroepen via CMake met de volgende opdracht:

    cmake --build out/<binary-dir>
    

    Stel in <binary-dir> op de binaire map die de CMake-cache bevat. Als u bijvoorbeeld CMake uitvoert op een Azure Sphere-voorbeeld, is cmake --build out/ARM-Debugde build-opdracht .

    Bij het oplossen van problemen, met name nadat u wijzigingen hebt aangebracht in uw CMake-opdrachten, verwijdert u de volledige build en probeert u het opnieuw.

  6. Verwijder alle toepassingen die al op het apparaat zijn geïmplementeerd:

    az sphere device sideload delete
    
  7. Laad vanuit uw projectbuildmap bij de opdrachtprompt het installatiekopieënpakket dat ninja heeft gemaakt:

    az sphere device sideload deploy --image-package <path-to-imagepackage>
    

    De toepassing wordt snel uitgevoerd nadat deze is geladen.

  8. Haal de onderdeel-id voor de installatiekopieën op:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    De opdracht retourneert alle metagegevens voor het installatiekopieënpakket. De onderdeel-id voor de toepassing wordt weergegeven in de sectie Identiteit voor het type toepassingsafbeelding. Bijvoorbeeld:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

De toepassing op hoog niveau bouwen en implementeren

  1. Navigeer naar de map waarin u de IntercoreComms-toepassingen hebt uitgepakt en selecteer vervolgens de map IntercoreComms/IntercoreComms_HighLevelApp.

  2. Open het bestand app_manifest.json en controleer of de onderdeel-id van de RTApp wordt weergegeven in de mogelijkheid AllowedApplicationConnections.

  3. Open een opdrachtregelinterface met behulp van PowerShell, Windows-opdrachtprompt of Linux-opdrachtshell. Navigeer naar de map van uw projectbuild.

  4. Voer CMake uit vanuit de map van uw projectbuild, bij de opdrachtprompt, met de volgende parameters:

    cmake --preset <preset-name> <source-path>
    
    • --preset <preset-name>

      De vooraf ingestelde naam van de buildconfiguratie zoals gedefinieerd in CMakePresets.json.

    • --build <cmake-path>

      De binaire map die de CMake-cache bevat. Als u bijvoorbeeld CMake uitvoert op een Azure Sphere-voorbeeld, is cmake --build out/ARM-Debugde build-opdracht .

    • <source-path>

      Het pad van de map met de bronbestanden voor de voorbeeldtoepassing. In het voorbeeld is de opslagplaats azure Sphere-voorbeelden gedownload naar een map met de naam AzSphere.

      CMake-parameters worden gescheiden door spaties. Het regel vervolgteken (^ voor Windows-opdrachtregel, \ voor Linux-opdrachtregel of ' voor PowerShell) kan worden gebruikt voor leesbaarheid, maar is niet vereist.

    In de volgende voorbeelden ziet u de CMake-opdrachten voor de toepassing Op hoog niveau IntercoreComms.

    Windows-opdrachtprompt

     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. Voer vanuit de map van uw projectbuild, bij de opdrachtprompt, Ninja uit om de toepassing te bouwen en het installatiekopieënpakketbestand te maken.

    ninja -C out/ARM-Debug
    

    Ninja plaatst de resulterende toepassings- en .imagepackage-bestanden in de opgegeven map.

    U kunt Ninja ook aanroepen via CMake met de volgende opdracht:

    cmake --build out/<binary-dir>
    

    Stel in <binary-dir> op de binaire map die de CMake-cache bevat. Als u bijvoorbeeld CMake uitvoert op een Azure Sphere-voorbeeld, is cmake --build out/ARM-Debugde build-opdracht .

    Bij het oplossen van problemen, met name nadat u wijzigingen hebt aangebracht in uw CMake-opdrachten, verwijdert u de volledige build en probeert u het opnieuw.

  6. Laad vanuit uw projectbuildmap bij de opdrachtprompt het installatiekopieënpakket dat ninja heeft gemaakt:

    az sphere device sideload deploy --image-package <package-name>
    

    De toepassing wordt snel uitgevoerd nadat deze is geladen.

  7. Haal de onderdeel-id voor de installatiekopieën op:

    az sphere image-package show --image-package <path-to-imagepackage>
    

    De opdracht retourneert alle metagegevens voor het installatiekopieënpakket. De onderdeel-id voor de toepassing wordt weergegeven in de sectie Identiteit voor het type toepassingsafbeelding. Bijvoorbeeld:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    

De partnertoepassingen uitvoeren met foutopsporing ingeschakeld

  1. Stop de realtime-toepassing als deze wordt uitgevoerd.

    az sphere device app stop --component-id <component id>
    
  2. Start de toepassing opnieuw voor foutopsporing.

    az sphere device app start -- --debug-mode true --component-id <component id>
    

    Met deze opdracht wordt de kern geretourneerd waarop de toepassing wordt uitgevoerd.

      <component id>
      App state: running
      Core        : Real-time 0
    
  3. Navigeer naar de map Openocd voor de sysroot waarmee de toepassing is gebouwd. De sysroots worden geïnstalleerd in de installatiemap van de Azure Sphere SDK. In Windows wordt de map bijvoorbeeld standaard geïnstalleerd op C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd en in Linux, op /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Voer uit openocd zoals in het volgende voorbeeld wordt weergegeven. In het voorbeeld wordt ervan uitgegaan dat de app wordt uitgevoerd op core 0. Als de app wordt uitgevoerd op core 1, vervangt u 'targets io0' door '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. Open een nieuwe Azure Sphere-opdrachtprompt (windows Azure Sphere klassieke CLI), standaardopdrachtprompt of PowerShell (Windows Azure CLI) of terminalvenster (Linux).

  6. Navigeer naar de map die het .out-bestand van de toepassing in realtime bevat en start arm-none-eabi-gdb, dat deel uitmaakt van de GNU Arm Embedded Toolchain:

    Windows-opdrachtprompt

    "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. De OpenOCD-server biedt een GDB-serverinterface op :4444. Stel het doel voor foutopsporing in.

    target remote :4444

  8. U kunt nu gdb-opdrachten uitvoeren naar de realtime compatibele toepassing. Voeg een onderbrekingspunt toe aan de functie HandleSendTimerDeferred:

    break HandleSendTimerDeferred
    
  9. De verbonden terminalemulator moet uitvoer van de realtime compatibele toepassing weergeven.

  10. Open een nieuwe Azure Sphere-opdrachtprompt (windows Azure Sphere klassieke CLI), standaardopdrachtprompt of PowerShell (Windows Azure CLI) of terminalvenster (Linux).

  11. Navigeer naar de map met het .imagepackage-bestand van de toepassing op hoog niveau.

  12. Stop de toepassing op hoog niveau als deze wordt uitgevoerd.

    az sphere device app stop --component-id <component id>
    
  13. Start de toepassing op hoog niveau opnieuw met foutopsporing.

    az sphere device app start --debug-mode true --component-id <component id> --debug-mode
    
  14. Open een terminalemulator en maak een Telnet- of TCP-verbinding met 192.168.35.2 op poort 2342 om de uitvoer van de app op hoog niveau te bekijken.

  15. Start gdb met de volgende opdracht:

    Windows-opdrachtprompt

    "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
    

    Opmerking

    De Azure Sphere SDK wordt geleverd met meerdere sysroots , zodat toepassingen zich kunnen richten op verschillende API-sets, zoals beschreven in Application Runtime-versie, sysroots en beta-API's. De sysroots worden geïnstalleerd in de Azure Sphere SDK-installatiemap onder Sysroots.

  16. Stel het doel voor externe foutopsporing in op IP-adres 192.168.35.2 op poort 2345:

    target remote 192.168.35.2:2345

  17. Voeg een onderbrekingspunt toe aan de functie SendMessageToRTApp:

    break SendMessageToRTApp

  18. Typ c om door te gaan, bekijk de uitvoer in uw Telnet/TCP-terminal en schakel vervolgens over naar de opdrachtprompt of het terminalvenster met de foutopsporingssessie van uw realtime toepassing.

  19. Typ c om door te gaan en de uitvoer in de verbonden seriële sessie te bekijken.

U kunt heen en weer werken tussen foutopsporingssessies en schakelen tussen de realtime compatibele toepassing en de toepassing op hoog niveau. De uitvoer ziet er ongeveer als volgt uit in de twee uitvoervensters:

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

Als u elke foutopsporingssessie wilt beëindigen, typt u q bij de gdb-prompt.

Volgende stappen