Share via


Debuggen einer Echtzeitanwendung

RTApps werden mithilfe von OpenOCD debuggt, das mit dem Azure Sphere SDK installiert wird, und der GDB-Version, die als Teil der ARM GNU Embedded Toolchain installiert wird.

Debuggen von RTApp mit Visual Studio

  1. Stellen Sie sicher, dass Ihr Gerät über USB mit Ihrem PC verbunden ist. Wählen Sie im Menü Startelement festlegen die Option Azure Sphere-App (RT Core) aus, wobei Azure Sphere-App der Name Ihrer aktuellen Echtzeitanwendung ist, oder drücken Sie F5.

    Schaltfläche

  2. Wenn Sie aufgefordert werden, das Projekt zu erstellen, wählen Sie Ja aus. Visual Studio kompiliert die Echtzeitanwendung, erstellt ein Bildpaket, querlädt es auf das Board und startet es im Debugmodus. Querladen bedeutet, dass die Anwendung direkt vom PC über eine kabelgebundene Verbindung und nicht über die Cloud übermittelt wird.

    Notieren Sie sich die Image-ID des Imagepakets in der>Ausgabe Anzeigen Ausgabe>anzeigen aus: Buildausgabe Wenn Sie bereit sind, eine Bereitstellung zu erstellen, müssen Sie den Pfad zum Imagepaket kennen.

  3. Standardmäßig wird im Ausgabefenster die Ausgabe der Geräteausgabe angezeigt. Wählen Sie zum Anzeigen von Meldungen aus dem Debugger im Dropdownmenü Ausgabe anzeigen von: die Option Debuggen aus. Sie können auch die Programmdemontage, Die Registrierungen oder den Arbeitsspeicher über das Menü Debuggen> vonFenstern überprüfen.

Visual Studio richtet Verbindungen zwischen dem GDB-Server und OpenOCD ein, sodass Sie die Standardmäßige Visual Studio-Debugschnittstelle (F5, F6, F9 für Haltepunkte usw.) in einer RTApp auf die gleiche Weise wie bei einer allgemeinen App verwenden können.

Während sie an einem Haltepunkt in Ihrem C-Quellcode beendet wurde, können Sie ein Disassembly-Fenster öffnen, in dem die aktuelle Adresse, der Assembler mnemonisch für den aktuellen Befehl und Informationen wie die beteiligten Register oder der ausgeführte Quellcodebefehl angezeigt werden.

So öffnen Sie das Fenster Disassemblierung :

  1. Stellen Sie sicher, dass die C-Codequelldatei, die den Haltepunkt enthält, in Visual Studio geöffnet ist.
  2. Wählen Sie Debuggen>Windows>Disassembly aus, oder drücken Sie ALT+8.

Debuggen von RTApp mit Visual Studio Code

Visual Studio Code wird durch Drücken von F5 oder Ausführen des Debugbefehls in der Debugansicht auf der linken Leiste gedebuggt. In den Beispielen ist .vscode/launch.json bereits vorhanden, sodass das Debuggen sofort gestartet wird. In einer neuen App fragt das Debuggen zuerst, ob es sich um eine HLApp oder RTApp handelt, und erstellt eine .vscode/launch.json aus Ihrer Antwort. Das Debuggen wird dann aktiviert.

Während sie an einem Haltepunkt in Ihrem C-Quellcode beendet wurde, können Sie eine Disassemblierungsansicht öffnen, die die aktuelle Adresse, hexadezimierte Rohdaten, den Assembler mnemonisch für den aktuellen Befehl und Informationen wie die beteiligten Register oder den ausgeführten Quellcodebefehl anzeigt.

So öffnen Sie die Disassemblierungsansicht:

  1. Stellen Sie sicher, dass die C-Code-Quelldatei, die den Haltepunkt enthält, in einem Visual Studio Code-Editor geöffnet ist.
  2. Klicken Sie entweder mit der rechten Maustaste in das Editorfenster, und wählen Sie Disassemblansicht öffnen aus, oder wählen Sie Ansicht>Befehlspalette>Disassemblansicht öffnen aus.

Debuggen von RTApp mithilfe der CLI

  1. Starten Sie die Anwendung für das Debuggen:

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

    Dieser Befehl gibt den Kern zurück, auf dem die Anwendung ausgeführt wird.

  2. Navigieren Sie zum Ordner Openocd für die sysroot-Datei, mit der die Anwendung erstellt wurde. In dieser Schnellstartanleitung ist sysroot 5+Beta2004. Die sysroots werden im Installationsordner des Azure Sphere SDK installiert. Unter Windows wird der Ordner beispielsweise standardmäßig unter C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\5+Beta2004\tools\openocd und unter Linux unter /opt/azurespheresdk/Sysroots/5+Beta2004/tools/sysroots/x86_64-pokysdk-linux/usr/bin/openocdinstalliert.

  3. Führen Sie openocd wie im folgenden Beispiel gezeigt aus. Im Beispiel wird davon ausgegangen, dass die App auf Kern 0 ausgeführt wird. Wenn die App auf Kern 1 ausgeführt wird, ersetzen Sie "targets io0" durch "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"
    
  4. Öffnen Sie eine Befehlszeilenschnittstelle mithilfe von PowerShell, der Windows-Eingabeaufforderung oder der Linux-Befehlsshell.

  5. Navigieren Sie zu dem Ordner, der die .out-Datei der Anwendung enthält, und starten Sie arm-none-eabi-gdb, der Teil der ARM GNU Embedded Toolchain ist:

    Windows-Eingabeaufforderung

    "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
    
  6. Der OpenOCD-Server stellt eine GDB-Serverschnittstelle unter :4444 bereit. Legen Sie das Ziel für das Debuggen fest.

    target remote :4444

  7. Führen Sie alle von Ihnen ausgewählten gdb-Befehle aus.

Entwickeln mit Partner-Apps

Wenn Sie eine Anwendung auf das Azure Sphere-Gerät laden, löschen die Azure Sphere-Bereitstellungstools standardmäßig alle vorhandenen Anwendungen. Um dies zu verhindern, wenn Sie Anwendungen entwickeln, die miteinander kommunizieren, müssen Sie die Anwendungen als Partner markieren. Wenn Sie eine der Anwendungen bereitstellen, werden die zugehörigen Partner nicht gelöscht. Weitere Informationen finden Sie unter Markieren von Anwendungen als Partner .

Problembehandlung

Wenn Probleme auftreten, finden Sie weitere Informationen unter Problembehandlung für Echtzeitanwendungen.