Tutorial: Erstellen einer echt Zeit fähigen AnwendungTutorial: Build a real-time capable application

In diesem Tutorial wird gezeigt, wie Sie eine Beispielanwendung für die Echt Zeit Kerne auf einem Azure Sphere-Gerät erstellen.This tutorial shows how to build a sample application for the real-time cores on an Azure Sphere device. Grundlegende Informationen zu Echt Zeit fähigen Anwendungen finden Sie unter Übersicht über Azure Sphere Anwendungen .See Overview of Azure Sphere applications for basic information about real-time capable applications.

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Installieren der GNU Arm-ToolketteInstall the GNU Arm toolchain
  • Einrichten der Hardware zum Anzeigen der AusgabeSet up hardware to display output
  • Entwickeln und Debuggen aktivierenEnable development and debugging
  • Klonen des Azure Sphere beispielrepositoryClone the Azure Sphere sample repo
  • Starten Sie einen Terminal Emulator, um die Ausgabe anzuzeigen.Start a terminal emulator to view output
  • Erstellen, ausführen und Debuggen von Echt Zeit fähigen AnwendungenBuild, run, and debug a real-time capable application

Wichtig

Diese Anweisungen setzen voraus, dass Sie dem MT3620-Referenzboard-Design (RDB) entsprechende Hardware verwenden, z.B. das MT3620 Development Kit von Seeed Studios.These instructions assume you are using hardware that follows the MT3620 reference board design (RDB) hardware, such as the MT3620 Dev Kit from Seeed Studios. Lesen Sie bei Verwendung einer anderen Azure Sphere-Hardware in der Dokumentation des Herstellers nach, ob diese den UART verfügbar macht und wie Sie darauf zugreifen können.If you are using different Azure Sphere hardware, consult the manufacturer's documentation to find out whether the UART is exposed and how to access it. Unter Umständen müssen Sie beim Einrichten der Hardware zum Anzeigen der Ausgabe anders vorgehen und den Beispielcode sowie das Feld „Uarts“ in der Datei „app_manifest.json“ aktualisieren, um einen anderen UART zu verwenden.You might need to set up hardware to display output differently, and update the sample code and the "Uarts" field of the app_manifest.json file to use a different UART.

VoraussetzungenPrerequisites

Installieren der GNU Arm Embedded-ToolketteInstall the GNU Arm Embedded Toolchain

Wenn Sie Visual Studio verwenden, fahren Sie mit dem Einrichten der Hardware zum Anzeigen der Ausgabefort.If you're using Visual Studio, proceed to Set up hardware to display output. Die Toolkette wird mit der Azure Sphere-Erweiterung für Visual Studio installiert.The toolchain is installed with the Azure Sphere Extension for Visual Studio. Wenn Sie jedoch die GNU Arm Embedded-Toolkette manuell installiert haben, verwendet Visual Studio die Version, die Sie installiert haben.However, if you installed the GNU ARM Embedded Toolchain manually, Visual Studio will use the version you installed.

So installieren Sie die Toolkette:To install the toolchain:

  • Suchen Sie auf der Arm-Entwickler Websitenach der GNU Arm Embedded-Toolkette, die den Compiler für den ARM-Cortex-M4-Prozessor enthält.On the Arm developer website, find the GNU Arm Embedded Toolchain that includes the compiler for the ARM Cortex-M4 processor. Befolgen Sie die Anweisungen hier, um den Compiler für Ihre Betriebssystem Plattform herunterzuladen und zu installieren.Follow the instructions there to download and install the compiler for your OS platform.

Standardmäßig sucht Visual Studio Code nach der Toolkette und sollte die Version ermitteln, die Sie installiert haben.By default, Visual Studio Code searches for the toolchain and should find the version you installed. Wenn Sie Buildprobleme im Zusammenhang mit der Toolkette auftreten, überprüfen Sie Einstellungen > Einstellungen > Erweiterungen > azuresphere , um sicherzustellen, dass "Azure Sphere: Arm GNU Path" das GNU Arm Embedded Toolchain-Installationsverzeichnis identifiziert.If you encounter build problems related to the toolchain, check Preferences > Settings > Extensions > AzureSphere to ensure that "Azure Sphere: Arm Gnu Path" identifies the GNU Arm Embedded Toolchain installation directory.

Einrichten der Hardware zum Anzeigen der AusgabeSet up hardware to display output

Aktuell unterstützt jeder Echtzeitkern einen reinen TX-UART.Currently, each real-time core supports a TX-only UART. RTApps können über diesen UART die Protokollausgabe vom Gerät senden.RTApps can use this UART to send log output from the device. Während der Anwendungsentwicklung und des Debuggens benötigen Sie normalerweise eine Möglichkeit zum Lesen und Anzeigen der Ausgabe.During application development and debugging, you typically need a way to read and display the output. Das Beispiel „HelloWorld_RTApp_MT3620_BareMetal“ zeigt, wie eine Anwendung in den UART schreiben kann.The HelloWorld_RTApp_MT3620_BareMetal sample shows how an application can write to the UART.

Verwenden Sie einen USB/Seriell-Adapter (z.B. FTDI Friend), um den UART des Echtzeitkerns mit einem USB-Anschluss Ihres Computers zu verbinden.Use a USB-to-serial adapter such as the FTDI Friend, to connect the UART on the real-time core to a USB port on your machine. Außerdem benötigen Sie einen Terminal Emulator wie Telnet oder PuTTY und ein 115200-8-N-1-Terminal (115200 Bit/s, 8 Bits, keine Paritätsbits, ein Stoppbit), um die Ausgabe anzuzeigen.You will also need a terminal emulator like Telnet or PuTTY and a 115200-8-N-1 terminal (115200 bps, 8 bits, no parity bits, one stop bit) to display the output.

Führen Sie diese Schritte aus, um die Hardware zum Anzeigen der Ausgabe einer Echtzeitanwendung einzurichten.To set up the hardware to display output from an RTApp, follow these steps. Informationen dazu, wo sich die Pins befinden, finden Sie in der Dokumentation des Herstellers Ihrer Hardware.You'll need to refer to the documentation from your hardware manufacturer to determine the pin locations. Wenn Sie Hardware verwenden, die Hardware im MT3620 Reference Board Design (RDB) entspricht, wie z. B. das MT3620 Development Kit von Seeed Studios, können Sie die Pin-Positionen möglicherweise über die RDB-Schnittstellenheader ermitteln.If you're using hardware that follows the MT3620 reference board design (RDB) hardware, like the MT3620 Dev Kit from Seeed Studios, then looking at the RDB interface headers may help you to determine the pin locations.

  1. Verbinden Sie GND auf dem USB/Seriell-Adapter mit GND in Ihrem Development Kit.Connect GND on the USB-to-serial adapter to GND on your dev kit. Bei MT3620-RDB-Hardware befindet sich die GND-Schnittstelle bei Pin 2 von Sockel 3.On MT3620 RDB hardware, GND is Header 3, pin 2.

  2. Verbinden Sie die RX-Schnittstelle des USB-Seriell-Adapters mit der IOM4-0 TX-Schnittstelle Ihres DevKits.Connect RX on the USB-to-serial adapter to IOM4-0 TX on your dev kit. Bei MT3620-RDB-Hardware befindet sich die IOM4-0 TX-Schnittstelle bei Pin 6 von Sockel 3.On MT3620 RDB hardware, IOM4-0 TX is Header 3, pin 6.

  3. Verbinden Sie den USB-zu-Seriell-Adapter mit einem freien USB-Anschluss auf dem Entwicklungs Computer, und legen Sie fest, mit welchem Port das serielle Gerät verbunden ist.Connect the USB-to-serial adapter to a free USB port on your development machine and determine which port the serial device is connected to.

    • Starten Sie unter Windows Geräte-Manager, wählen ViewSie > Geräte nach Containeranzeigen aus, und suchen Sie nach "USB-UART".On Windows, start Device Manager, select View > Devices by container, and look for 'USB UART". Beispielsweise gibt FT232R USB UART den FTDI Friend-Adapter an.For example, FT232R USB UART indicates the FTDI Friend adapter.

    • Geben Sie unter Linux den folgenden Befehl ein:On Linux, type the following command:

      dmesg | grep ttyUSB

      Der Port sollte den Namen „ttyUSBn“ haben. n steht dabei für die Portnummer.The port should be named ttyUSBn, where n indicates the port number. Wenn der dmesg Befehl mehrere USB-Anschlüsse auflistet, ist die Verbindung mit der, die mit dem verbunden ist, in der Regel die zuletzt angefügte.If the dmesg command lists several USB ports, the one that is connected to the typically the last one reported as attached. Im folgenden Beispiel verwenden Sie z. b. ttyUSB4:For example, in the following, you would use 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. Starten Sie ein Terminal Emulatorprogramm, und öffnen Sie ein Terminal 115200-8-N-1 für den vom Adapter verwendeten COM-Port.Start a terminal emulator program and open a 115200-8-N-1 terminal to the COM port used by the adapter. Weitere Informationen zum Angeben von Port und Geschwindigkeit finden Sie in der Dokumentation zum Terminal Emulator.See the documentation for the terminal emulator to find out how to specify the port and speed. Windows enthält einen Telnet-Client, aber Sie können jeden beliebigen Terminal Emulator verwenden.Windows includes a Telnet Client, but you can use any terminal emulator you prefer. Zahlreiche Terminalemulatoranwendungen sind sowohl für Windows als auch für Ubuntu verfügbar.Numerous terminal emulator applications are available for both Windows and Ubuntu.

Entwickeln und Debuggen aktivierenEnable development and debugging

Bevor Sie eine Beispielanwendung auf Ihrem Azure Sphere-Gerät erstellen oder neue Anwendungen dafür entwickeln können, müssen Sie die Entwicklung und das Debuggen aktivieren.Before you can build a sample application on your Azure Sphere device or develop new applications for it, you must enable development and debugging. Standardmäßig sind Azure Sphere-Geräte „gesperrt“, d. h. sie erlauben nicht, dass Anwendungen, die sich in der Entwicklung befinden, von einem PC geladen werden, und sie erlauben kein Debuggen von Anwendungen.By default, Azure Sphere devices are "locked"; that is, they do not allow applications under development to be loaded from a PC, and they do not allow debugging of applications. Durch die Vorbereitung des Geräts für das Debuggen wird diese Einschränkung aufgehoben und für das Debuggen erforderliche Software geladen, und die Gerätefunktionen werden wie unter Gerätefunktionen und Kommunikation beschrieben entsperrt.Preparing the device for debugging removes this restriction and loads software required for debugging and unlocks device capabilities as described in Device capabilities and communication.

Verwenden Sie zum Debuggen für die Echt Zeit Kerne den Befehl azsphere Device enable-Development .To debug on the real-time cores, use the azsphere device enable-development command. Mit diesem Befehl wird das Gerät so konfiguriert, dass Anwendungen von einem PC zum Debuggen akzeptiert werden, und das Gerät wird der Entwicklungs Gerätegruppe zugewiesen, die cloudanwendungsupdates nicht zulässt.This command configures the device to accept applications from a PC for debugging and assigns the device to the Development device group, which does not allow cloud application updates. Während der Anwendungsentwicklung und des Debuggens sollten Sie das Gerät in dieser Gruppe belassen, damit Cloudanwendungsupdates die Anwendung in der Entwicklungsphase nicht überschreiben.During application development and debugging, you should leave the device in this group so that cloud application updates do not overwrite the application under development.

Unter Windows müssen Sie den --enablertcoredebugging -Parameter hinzufügen, der die debuggingserver und die erforderlichen Treiber für jeden Kerntyp auf dem Gerät lädt.On Windows, you must add the --enablertcoredebugging parameter, which loads the debugging servers and required drivers for each type of core onto the device.

  1. Melden Sie sich bei Azure Sphere an, wenn Sie dies nicht bereits getan haben:Log in to Azure Sphere if you haven't already done so:

    azsphere login

  2. Klicken Sie mit der rechten Maustaste auf die Verknüpfung für die Azure Sphere Developer-Eingabeaufforderung, und wählen Sie Mehr>Als Administrator ausführen aus.Right-click the Azure Sphere Developer Command Prompt shortcut and select More>Run as administrator. Der --enablertcoredebugging -Parameter erfordert Administratorrechte, da er USB-Treiber für den Debugger installiert.The --enablertcoredebugging parameter requires administrator privilege because it installs USB drivers for the debugger.

  3. Geben Sie den folgenden Befehl ein:Enter the following command:

    azsphere device enable-development --enablertcoredebugging

  4. Warten Sie, bis der Befehl ausgeführt wurde, und schließen Sie dann das Fenster, da die Administratorrechte nicht mehr benötigt werden.Close the window after the command completes because administrator privilege is no longer required. Es empfiehlt sich grundsätzlich, immer nur die niedrigsten Rechte zu verwenden, die zum Ausführen einer Aufgabe erforderlich sind.As a best practice, you should always use the lowest privilege that can accomplish a task.

Wenn der Befehl azsphere Device enable-Development mit der folgenden Fehlermeldung fehlschlägt, finden Sie weitere Informationen unter Beheben von Azure Sphere Problemen .If the azsphere device enable-development command fails with the following error message, see Troubleshoot Azure Sphere issues for help.

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

Klonen des beispielrepositoryClone the samples repo

  1. Installieren Sie git, falls Sie dies noch nicht getan haben.Install Git, if you haven't already done so.

  2. Klonen Sie das Azure Sphere-Beispielrepository mit folgenden Schritten von GitHub:Clone the Azure Sphere Samples repository from GitHub:

    git clone https://github.com/Azure/azure-sphere-samples.git

Erstellen und Ausführen der Anwendung "HelloWorld rtapp"Build and run the HelloWorld RTApp application

  1. Starten Sie Visual Studio.Start Visual Studio. Wählen Sie lokalen Ordner öffnen aus, und navigieren Sie zu dem Ordner, in dem Sie das Repository mit den Azure Sphere Beispielen geklont haben.Select Open a local folder, and navigate to the folder where you cloned the Azure Sphere Samples repository. Navigieren Sie im Ordner Samples zum Ordner HelloWorld, und wählen Sie dann den Ordner HelloWorld_RTApp_MT3620_Baremetal aus.Within the samples folder, navigate to the HelloWorld folder, and then select the HelloWorld_RTApp_MT3620_Baremetal folder.

  2. Wenn Sie keine MT3620 RDB verwenden, aktualisieren Sie dieapp_manifest.jsfür die Datei und den Beispielcode, um die richtige UART anzugeben, z. b. ISU1.If you are not using an MT3620 RDB, update the app_manifest.json file and the sample code to specify the correct UART, for example ISU1.

  3. Sollte die CMake-Generierung nicht automatisch gestartet werden, wählen Sie die Datei „CMakeLists.txt“ aus.If CMake generation does not start automatically, select the CMakeLists.txt file.

  4. Im Ausgabefenster von Visual Studio sollte die CMake-Ausgabe die Meldungen CMake generation started. und CMake generation finished. anzeigen.In the Visual Studio Output window, the CMake output should show the messages CMake generation started. and CMake generation finished.

  5. Wählen Sie Build > alleerstellen aus.Select Build > Build All. Alle erstellen.Build All. Sollte das Menü nicht vorhanden sein, öffnen Sie den Projektmappen-Explorer, klicken Sie mit der rechten Maustaste auf die Datei „CMakeLists.txt“, und wählen Sie „Erstellen“ aus.If the menu is not present, open Solution Explorer, right-click the CMakeLists.txt file, and select Build. Der Ausgabespeicherort für die HelloWorld_RTApp_MT3620_Baremetal-Anwendung wird im Ausgabefenster angezeigt.The output location of the HelloWorld_RTApp_MT3620_Baremetal application appears in the Output window.

  6. Wählen Sie im Menü „Startelement auswählen“ die Option „GDB-Debugger“ (RTCore) aus.On the Select Startup Item menu, select GDB Debugger (RTCore).

  7. Drücken Sie F5, um die Anwendung bereitzustellen.Press F5 to deploy the application.

  8. Im verbundenen Terminalemulator sollte die Ausgabe des Programms „HelloWorld_RTApp_MT3620_Baremetal“ angezeigt werden.The connected terminal emulator should display output from the HelloWorld_RTApp_MT3620_Baremetal program. Das Programm sendet im Sekundentakt folgende Wörter:The program sends the following words at one-second intervals:

    Tick

    Tock

  9. Verwenden Sie den Debugger zum Festlegen von Breakpoints, Überprüfen von Variablen und Ausführen anderer Debugaufgaben.Use the debugger to set breakpoints, inspect variables, and try other debugging tasks.

  1. Öffnen Sie in Visual Studio Code in Ihrem Klon des Repositorys mit den Azure Sphere-Beispielen den Ordner „HelloWorld_RTApp_MT3620_BareMetal“.In Visual Studio Code, open the HelloWorld_RTApp_MT3620_BareMetal folder in your clone of the Azure Sphere samples repo. Wählen Sie die Option „Kein Kit verwenden“ aus, wenn Sie zum Auswählen eines Kits aufgefordert werden.If you're prompted to select a kit, choose "Do not use a kit."

  2. Falls Sie keine MT3620 RDB-Hardware verwenden, sollten Sie die Datei „app_manifest.json“ und den Beispielcode aktualisieren, um den richtigen UART anzugeben (z. B. ISU1).If you're not using MT3620 RDB hardware, update the app_manifest.json file and the sample code to specify the correct UART, for example ISU1.

  3. Drücken Sie F5, um den Debugger zu starten.Press F5 to start the debugger. Wenn das Projekt vorher noch nicht erstellt wurde oder sich Dateien geändert haben und eine erneute Erstellung erforderlich ist, wird das Projekt von Visual Studio Code vor Beginn des Debugvorgangs erstellt.If the project has not previously been built, or if files have changed and rebuild is required, Visual Studio Code will build the project before debugging starts.

  4. Im Azure Sphere-Ausgabefenster sollte eine Meldung wie „Image wird bereitgestellt...“ angezeigt werden, gefolgt von den Pfaden zum SDK und zum Compiler.The Azure Sphere output window should show "Deploying image..." followed by the paths to the SDK and compiler.

  5. Im verbundenen Terminalemulator sollte die Ausgabe des Programms „HelloWorld_RTApp_MT3620_Baremetal“ angezeigt werden.The connected terminal emulator should display output from the HelloWorld_RTApp_MT3620_Baremetal program. Das Programm sendet im Sekundentakt folgende Wörter:The program sends the following words at one-second intervals:

    Tick

    Tock

  6. Verwenden Sie die Debugfeatures von Visual Studio Code zum Festlegen von Breakpoints, Überprüfen von Variablen und Ausführen anderer Debugaufgaben.Use Visual Studio Code debugging features to set breakpoints, inspect variables, and try other debugging tasks.

ProblembehandlungTroubleshooting

Die Ausführung der Anwendung beginnt möglicherweise, bevor von OpenOCD eine Verbindung hergestellt wurde.The application might begin executing before OpenOCD makes a connection. Dies kann dazu führen, dass Breakpoints am Anfang des Codes nicht beachtet werden.As a result, breakpoints set early in the code might be missed. Dieses Problem lässt sich ganz einfach umgehen, indem der Start der App so lange verzögert wird, bis von OpenOCD eine Verbindung hergestellt wird.A simple workaround for this is to delay the start of the app until OpenOCD connects.

  1. Fügen Sie am Anfang des Anwendungseinstiegspunkts „RTCoreMain“ den folgenden Code ein.Insert the following code at the beginning of the application entry point RTCoreMain. Dadurch wird die Anwendung in eine while-Schleife versetzt, bis die Variable f den Wert true hat.This will cause the application to enter and remain in a while loop until variable f is set to true.

    static _Noreturn void RTCoreMain(void)
    {
      .
      .
      .
     volatile bool f = false;
     while (!f) {
        // empty.
     }
      .
      .
      .
    }
    
  2. Drücken Sie F5, um die App mit Debuggen (F5) zu starten, und unterbrechen Sie dann die Ausführung.Press F5 to start the app with debugging (F5) and then break into execution.

  3. Ändern Sie im Debugbereich Lokal den Wert von f von „0“ in „1“.In the Locals debug panel, change the value of f from zero to one.

  4. Gehen Sie den Code wie gewohnt durch.Step through the code as usual.

  1. Installation von GitInstall Git

  2. Klonen Sie das Azure Sphere-Beispielrepository mit folgenden Schritten von GitHub:Clone the Azure Sphere Samples repository from GitHub:

    git clone https://github.com/Azure/azure-sphere-samples.git

  3. Erstellen Sie auf Ihrem Desktop oder an einem anderen Ort ein Projektverzeichnis für die Build- und Imagedateien, die in den folgenden Schritten generiert werden.Create a project directory, on your desktop or elsewhere, to contain the build and image files that will be generated in the following steps.

  4. Öffnen Sie eine Eingabeaufforderung oder Shell, und navigieren Sie zu Ihrem Projektverzeichnis.Open a command prompt or shell and navigate to your project directory. Bei der Ausführung unter Windows müssen Sie eine Azure Sphere-Developer-Eingabeaufforderung verwenden.If you're running on Windows, it must be an Azure Sphere Developer Command Prompt.

  5. Führen Sie in Ihrem Projektverzeichnis an der Eingabeaufforderung cmake mit den folgenden Parametern aus:From your project directory, at the command prompt, run CMake with the following parameters:

    • -DCMAKE_TOOLCHAIN_FILE-DCMAKE_TOOLCHAIN_FILE

      Legen Sie diesen Parameter auf den Pfad zur compilertoolchain-Datei auf Ihrem Computer fest.Set this parameter to the path to the compiler tool chain file on your machine. Für Windows sollte der CMAKE_TOOLCHAIN_FILE auf c:\Programme (x86) \ \cmakefiles\azurespherertcoretoolchain.cmakeverweisen.For Windows, the CMAKE_TOOLCHAIN_FILE should point to C:\Program Files (x86)\\CMakeFiles\AzureSphereRTCoreToolchain.cmake. Geben Sie/opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake. für Linux an.For Linux, specify /opt/azurespheresdk/CMakeFiles/AzureSphereRTCoreToolchain.cmake.

    • -DARM_GNU_PATH-DARM_GNU_PATH

      Legen Sie diesen Parameter auf den Pfad zu dem Verzeichnis auf Ihrem Computer fest, das Arm-None-EABI-gcc enthält, und nicht auf den Pfad zum Compiler selbst.Set this parameter to the path to the directory on your machine that contains arm-none-eabi-gcc, and not the path to the compiler itself. Wenn Sie die GNU-Tools von Visual Studio verwenden, befindet sich der ARM_GNU_PATH Pfad im * Unterordner 2019 Edition * \linux\ gcc_arm \bin Ihrer Visual Studio-Installation, nicht im Pfad des Beispiels.If you are using the GNU Tools from Visual Studio, the ARM_GNU_PATH path would be in the 2019*edition*\Linux\gcc_arm\bin subfolder of your Visual Studio installation, rather than the path in the example.

    • -DAZURE_SPHERE_TARGET_API_SET-DAZURE_SPHERE_TARGET_API_SET

      Legen Sie diesen Parameter auf den gewünschten Azure Sphere API-Satz fest, der verwendet werden soll.Set this parameter to the desired Azure Sphere API set to use. Dieser Wert befindet sich in der Azure Sphere Toolkettendatei.This value is found in the Azure Sphere toolchain file. In dem Beispiel ist es auf "Latest-Beta" festgelegt, das den Beta-API-Satz für die aktuelle Version auswählt.In the example it is set to "latest-beta", which selects the Beta API set for the current release.

    • -DCMAKE_BUILD_TYPE-DCMAKE_BUILD_TYPE

      Legen Sie diesen Parameter auf den Buildtyp fest.Set this parameter to the build type. Mögliche Werte sind „Debug“ und „Release“.Possible values are Debug and Release.

    • -DCMAKE_MAKE_PROGRAM-DCMAKE_MAKE_PROGRAM

      Legen Sie diesen Parameter auf das Buildsystem fest, das zum Erstellen der Anwendung verwendet wird.Set this parameter to the build system used to build the application.

    • Der letzte Parameter ist der Pfad zu dem Verzeichnis auf Ihrem Computer, das die Quelldateien für die Beispielanwendung enthält.The final parameter is the path to the directory on your machine that contains the source files for the sample application. Im Beispiel wurde das Repository mit den Azure Sphere-Beispielen in ein Verzeichnis mit dem Namen „AzSphere“ heruntergeladen.In the example the Azure Sphere samples repository was downloaded to a directory called AzSphere.

    CMake-Parameter werden mit Leerzeichen voneinander getrennt.CMake parameters are separated by spaces. Das Zeilen Fortsetzungs Zeichen ("^" für die Windows-Befehlszeile oder " \ " für die Linux-Befehlszeile) kann zur besseren Lesbarkeit verwendet werden, ist jedoch nicht erforderlich.The line continuation character ("^" for Windows command line or " \ " for Linux command line) can be used for readability but is not required.

Die folgenden Beispiele zeigen die cmake-Befehle für eine rtapp.The following examples show the CMake commands for an RTApp. Wenn dies angegeben ist, ersetzen <file-path> Sie durch den Installationspfad für die GNU Arm Embedded-Toolkette auf Ihrem System.Where indicated, replace <file-path> with the installation path for the GNU Arm embedded toolchain on your system.

cmake ^
-G "Ninja" ^
-DCMAKE_TOOLCHAIN_FILE="C:\Program Files (x86)\Microsoft Azure Sphere SDK\CMakeFiles\AzureSphereRTCoreToolchain.cmake" ^
-DARM_GNU_PATH:STRING="<file-path>\GNU Arm Embedded Toolchain\9 2020-q2-update\bin" ^
-DAZURE_SPHERE_TARGET_API_SET="latest-beta" ^
-DCMAKE_BUILD_TYPE="Debug" ^
"C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
  1. Führen Sie in Ihrem Projektverzeichnis an der Eingabeaufforderung ninja aus, um die Anwendung zu erstellen, und erstellen Sie die Imagepaketdatei.From your project directory, at the command prompt, run ninja to build the application and create the image package file.

Löschen Sie bei der Problembehandlung Ihren gesamten Build, und wiederholen Sie den Vorgang – vor allem nach dem Vornehmen von Änderungen an Ihren CMake-Befehlen.When troubleshooting, especially after making any changes to your CMake commands, delete your entire build and try again.

  1. Löschen Sie alle Anwendungen, die auf dem Gerät schon bereitgestellt wurden:Delete any applications that are already deployed to the device:

    azsphere device sideload delete

  2. Laden Sie in Ihrem Projektverzeichnis an der Eingabeaufforderung das Abbild Paket, das von Ninja erstellt wurde:From your project directory, at the command prompt, load the image package that ninja created:

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

    Die Anwendung wird unmittelbar nach dem Laden ausgeführt.The application will start to run soon after it's loaded. Auf der verbundenen Terminalemulation wird Folgendes angezeigt:The following will be displayed on the connected terminal emulator:

        Tick
    
        Tock
    
        Tick
         .
         .
         .
    
  3. Rufen Sie die Komponenten-ID für das Image ab:Get the component ID for the image:

    azsphere image-package show --filepath <path-to-imagepackage>

    Der Befehl gibt alle Metadaten für das Imagepaket zurück.The command returns all the metadata for the image package. Die Komponenten-ID für die Anwendung wird im Abschnitt „Identität“ für den Anwendungsimagetyp angezeigt.The component ID for the application appears in the Identity section for the Application Image Type. Beispiel:For example:

    Image package metadata:
    Section: Identity
    Image Type:           Application
    Component ID:         08fd36f7-4ef5-430b-8543-09acd7ea0d04
    Image ID:             12af5735-067e-4f3a-9341-6f2f8c7e3548
    

    Sie können die folgenden Befehle verwenden, um die Anwendung zu beenden bzw. zu starten und ihren Status abzurufen:You can use the following commands to stop, start, and get the status of the application:

    azsphere device app stop --componentid <component id>

    azsphere device app start --componentid <component id>

    azsphere device app show-status --componentid <component id>

Ausführen der Anwendung mit aktiviertem DebuggenRun the application with debugging enabled

  1. Beenden Sie die Anwendung, falls sie ausgeführt wird.Stop the application if it's running.

    azsphere device app stop --componentid 08fd36f7-4ef5-430b-8543-09acd7ea0d04

  2. Führen Sie einen Neustart der Anwendung mit Debuggen durch.Re-start the application with debugging.

    azsphere device app start --componentid 08fd36f7-4ef5-430b-8543-09acd7ea0d04 --debug

    Mit diesem Befehl wird der Kern zurückgegeben, in dem die Anwendung ausgeführt wird.This command returns the core on which the application is running.

    d3b80666-feaf-433a-b294-6a5846853b4a
    App state   : debugging
    GDB port    : 2345
    Output port : 2342
    Core        : 0
    
  3. Navigieren Sie zum Ordner „Openocd“ für den Systemstamm (sysroot), mit dem die Anwendung erstellt wurde.Navigate to the Openocd folder for the sysroot that the application was built with. Die sysroot-Verzeichnisse werden im Azure Sphere SDK-Installationsordner installiert.The sysroots are installed in the Azure Sphere SDK installation folder. Für Windows wird der Ordner beispielsweise standardmäßig unter C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd und für Linux unter /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux installiert.For example, on Windows the folder is installed by default at C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\openocd and on Linux, at /opt/azurespheresdk/Sysroots/*sysroot*/tools/sysroots/x86_64-pokysdk-linux.

  4. Führen Sie openocd wie im folgenden Beispiel gezeigt aus.Run openocd as the following example shows. Im Beispiel wird davon ausgegangen, dass die App auf Kern 0 ausgeführt wird.The example assumes the app is running on core 0. Wenn die App auf Kern 1 ausgeführt wird, ersetzen Sie „targets io0“ durch „targets io1“.If the app is running on core 1, replace "targets io0" with "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"
    

  1. Navigieren Sie zu dem Ordner, der die Datei "Application. out" enthält, und starten Sie arm-none-eabi-gdb , der Teil der GNU Arm Embedded-Toolkette ist:Navigate to the folder that contains the application .out file and start arm-none-eabi-gdb, which is part of the GNU Arm Embedded Toolchain:

    <GNU Arm toolchain path>/arm-none-eabi-gdb HelloWorld_RTApp_MT3620_BareMetal.out

  2. Der OpenOCD-Server stellt unter „:4444“ eine GDB-Serverschnittstelle bereit.The OpenOCD server provides a GDB server interface on :4444. Legen Sie das Debugziel fest.Set the target for debugging.

    target remote :4444

  3. Sie können nun gdb-Befehle ausführen.You can now issue gdb commands.

  4. Der verbundene Terminalemulator sollte die Ausgabe aus der Anwendung anzeigen.The connected terminal emulator should display output from the application.

Nächste SchritteNext steps