Erstellen einer Echtzeitanwendung

Sie können Visual Studio, Visual Studio Code oder die Befehlszeile (CLI) verwenden, um Echtzeitanwendungen (RTApps) auf die gleiche Weise wie allgemeine Anwendungen zu entwickeln und zu debuggen.

Voraussetzungen

Aktivieren der Entwicklung und des Debuggens

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. Standardmäßig sind Azure Sphere-Geräte "gesperrt". Das heißt, sie lassen nicht zu, dass Anwendungen, die sich in der Entwicklung befinden, von einem PC geladen werden, und sie lassen das Debuggen von Anwendungen nicht zu. Durch das Vorbereiten des Geräts für das Debuggen wird diese Einschränkung entfernt, und es wird software geladen, die für das Debuggen erforderlich ist, und die Gerätefunktionen werden entsperrt.

Verwenden Sie zum Debuggen auf den Echtzeitkernen den Befehl az sphere device enable-development . Dieser Befehl konfiguriert das Gerät so, dass es Anwendungen von einem PC zum Debuggen akzeptiert, und weist das Gerät der Gerätegruppe Entwicklung zu, die keine Cloudanwendungsupdates zulässt. Während der Anwendungsentwicklung und beim Debuggen sollten Sie das Gerät in dieser Gruppe belassen, damit Cloudanwendungsupdates die Anwendung in der Entwicklung nicht überschreiben.

Unter Windows müssen Sie den --enable-rt-core-debugging Parameter hinzufügen, der die Debugserver und die erforderlichen Treiber für jeden Kerntyp auf das Gerät lädt.

  1. Melden Sie sich bei Azure Sphere an, wenn Sie dies noch nicht getan haben:

    az login
    
  2. Öffnen Sie eine Befehlszeilenschnittstelle mithilfe von PowerShell oder der Windows-Eingabeaufforderung mit Administratorrechten. Der --enable-rt-core-debugging Parameter erfordert Administratorrechte, da er USB-Treiber für den Debugger installiert.

  3. Geben Sie den folgenden Befehl ein:

    az sphere device enable-development --enable-rt-core-debugging  --catalog <CatalogName>  --resource-group <ResourceGroupName>
    
  4. Schließen Sie das Fenster, nachdem der Befehl abgeschlossen wurde, da keine Administratorrechte mehr erforderlich sind. Als bewährte Methode sollten Sie immer die niedrigste Berechtigung verwenden, mit der eine Aufgabe ausgeführt werden kann.

Wenn der Befehl az sphere device enable-development fehlschlägt, finden Sie weitere Informationen unter Behandeln von Azure Sphere-Problemen .

Aktivieren der Entwicklung und des Debuggens

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. Standardmäßig sind Azure Sphere-Geräte "gesperrt". Das heißt, sie lassen nicht zu, dass Anwendungen, die sich in der Entwicklung befinden, von einem PC geladen werden, und sie lassen das Debuggen von Anwendungen nicht zu. Durch die Vorbereitung des Geräts für das Debuggen wird diese Einschränkung entfernt, und es wird software geladen, die für das Debuggen erforderlich ist, und die Gerätefunktionen werden entsperrt, wie unter Gerätefunktionen und Kommunikation beschrieben.

Verwenden Sie zum Debuggen auf den Echtzeitkernen den Befehl az sphere device enable-development . Dieser Befehl konfiguriert das Gerät so, dass es Anwendungen von einem PC zum Debuggen akzeptiert, und weist das Gerät der Gerätegruppe Entwicklung zu, die keine Cloudanwendungsupdates zulässt. Während der Anwendungsentwicklung und beim Debuggen sollten Sie das Gerät in dieser Gruppe belassen, damit Cloudanwendungsupdates die Anwendung in der Entwicklung nicht überschreiben.

Unter Windows müssen Sie den --enable-rt-core-debugging Parameter hinzufügen, der die Debugserver und die erforderlichen Treiber für jeden Kerntyp auf das Gerät lädt.

  1. Melden Sie sich bei Azure an, wenn Sie dies noch nicht getan haben:

    az login
    
  2. Öffnen Sie eine Befehlszeilenschnittstelle mithilfe von PowerShell, der Windows-Eingabeaufforderung oder der Linux-Befehlsshell mit Administratorrechten. Der --enable-rt-core-debugging Parameter erfordert Administratorrechte, da er USB-Treiber für den Debugger installiert.

  3. Geben Sie den folgenden Befehl ein:

    az sphere device enable-development --enable-rt-core-debugging
    
  4. Schließen Sie das Fenster, nachdem der Befehl abgeschlossen wurde, da keine Administratorrechte mehr erforderlich sind. Als bewährte Methode sollten Sie immer die niedrigste Berechtigung verwenden, mit der eine Aufgabe ausgeführt werden kann.

Wenn der Befehl az sphere device enable-development mit der folgenden Fehlermeldung fehlschlägt, finden Sie weitere Informationen unter Behandeln von Azure Sphere-Problemen .

error: The device did not accept the device capability configuration. Please check the Azure Sphere OS on your device is up-to-date using 'az sphere device show-deployment-status'.

Erstellen der RTApp mit Visual Studio Code

So erstellen Sie eine RTApp:

  1. Öffnen Sie in Visual Studio Code den Ordner HelloWorld_RTApp_MT3620_BareMetal in Ihrem Klon des Azure Sphere-Beispielrepositorys. Wenn Sie aufgefordert werden, ein Kit auszuwählen, wählen Sie "Kein Kit verwenden" aus.

  2. Drücken Sie F5 , um den Debugger zu starten. Wenn das Projekt noch nicht erstellt wurde oder dateien geändert wurden und eine Neuerstellung erforderlich ist, erstellt Visual Studio Code das Projekt, bevor das Debuggen gestartet wird.

  3. Der verbundene Terminalemulator sollte die Ausgabe der Anwendung anzeigen. Das Programm sendet die folgenden Wörter in Intervallen von einer Sekunde:

    Tick

    Tock

    Hinweis

    Visual Studio Code bietet IntelliSense, wird jedoch nicht automatisch aktualisiert, wenn Sie CMakeLists.txt ändern. Sie müssen den Befehl CMake: Delete Cache and Reconfigure ausführen, um IntelliSense zu aktualisieren. Die Ansicht CMake-Ziele finden Sie in der CMake-Erweiterungsansicht auf der linken Leiste.

Erstellen der RTApp mit Visual Studio

So erstellen Sie eine RTApp:

  1. Wählen Sie in Visual Studio Datei>CMake aus, und navigieren Sie zu dem Ordner, der das Beispiel enthält.

  2. Wenn die CMake-Generierung nicht automatisch gestartet wird, wählen Sie die CMakeLists.txt Datei aus.

  3. In Visual Studio, View>Output>Show output from: CMake output should show the messages CMake generation started. and CMake generation finished.

  4. Wählen Sie im CMake-Menü (falls vorhanden) die Option Alle erstellen aus. Wenn das Menü nicht vorhanden ist, öffnen Sie Projektmappen-Explorer, klicken Sie mit der rechten Maustaste auf die datei CMakeLists.txt, und wählen Sie Erstellen aus. Der Ausgabespeicherort der Azure Sphere-Anwendung wird im Ausgabefenster angezeigt.

  5. Drücken Sie F5 , um die Anwendung bereitzustellen.

  6. Der verbundene Terminalemulator sollte die Ausgabe der Anwendung anzeigen. Das Programm sendet die folgenden Wörter in Intervallen von einer Sekunde:

    Tick

    Tock

    Hinweis

    • Visual Studio stellt IntelliSense für Azure Sphere RTApps bereit, indem Daten aus dem CMake-Cache gesammelt werden. Visual Studio aktualisiert den Cache, wenn sich die CMakeLists.txt- oder CMakeSettings.json-Datei in der RTApp ändert.

    • Standardmäßig verwendet Visual Studio die Ordneransicht. Wenn Sie eine logische Ansicht des CMake-Projekts bevorzugen, können Sie zur Ansicht CMake-Ziele wechseln. Wählen Sie in Projektmappen-Explorer das Ordnerumschaltersymbol aus:

      Umschalten zwischen Projektmappen- und Ordneransichten

      Wählen Sie im Dropdownmenü CMake-Zielansicht aus.

    • Möglicherweise beginnt die Anwendung mit der Ausführung, bevor OpenOCD eine Verbindung herstellt. Daher werden breakpoints, die zu einem frühen Zeitpunkt im Code festgelegt wurden, möglicherweise übersehen. Eine einfache Problemumgehung hierfür besteht darin, den Start der App zu verzögern, bis OpenOCD eine Verbindung herstellt.

      1. Fügen Sie den folgenden Code am Anfang des Anwendungseinstiegspunkts RTCoreMain ein. Dies führt dazu, dass die Anwendung in eine Schleife eintritt und in einer while Schleife verbleibt, bis die Variable f auf true festgelegt ist.

          volatile bool f = false;
          while (!f) {
            // empty.
          }
        
      2. Drücken Sie F5 , um die App mit dem Debuggen zu starten, und unterbrechen Sie dann die Ausführung.

      3. Ändern Sie im Debugbereich Lokal den Wert von f von 0 in 1.

      4. Führen Sie den Code wie gewohnt durch.

Erstellen einer RTApp mithilfe der CLI

In den folgenden Anweisungen wird davon ausgegangen, dass Sie CMake verwenden. Wenn Sie es vorziehen, auf der Befehlszeile zu erstellen, ohne CMake zu verwenden, können Sie die entsprechenden Compiler- und Linkeroptionen ermitteln, indem Sie sich die Dateien AzureSphereToolchainBase.cmake und AzureSphereRTCoreToolchain.cmake ansehen, die mit dem Azure Sphere SDK installiert werden.

  1. Öffnen Sie eine Befehlszeilenschnittstelle mithilfe von PowerShell, der Windows-Eingabeaufforderung oder der Linux-Befehlsshell. Navigieren Sie zu Ihrem Projektbuildverzeichnis.

  2. Führen Sie in Ihrem Projektbuildverzeichnis an der Eingabeaufforderung CMake mit den folgenden Parametern aus:

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

      Der voreingestellte Name der Buildkonfiguration, wie in CMakePresets.json definiert.

    • --build <cmake-path>

      Das Binärverzeichnis, das den CMake-Cache enthält. Wenn Sie z. B. CMake in einem Azure Sphere-Beispiel ausführen, lautet cmake --build out/ARM-Debugder Buildbefehl .

    • <source-path>

      Der Pfad des Verzeichnisses, das die Quelldateien für die Beispielanwendung enthält. Im Beispiel wurde das Azure Sphere-Beispielrepository in ein Verzeichnis namens AzSphere heruntergeladen.

      CMake-Parameter werden durch Leerzeichen getrennt. Das Zeilenfortsetzungszeichen (^ für Windows-Befehlszeile, \ für Linux-Befehlszeile oder ' für PowerShell) kann zur Lesbarkeit verwendet werden, ist jedoch nicht erforderlich.

    Die folgenden Beispiele zeigen die CMake-Befehle für die HelloWorld RTApp:

    Windows-Eingabeaufforderung

    cmake ^
    --preset "ARM-Debug" ^
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    

    Windows PowerShell

    cmake `
    --preset "ARM-Debug" `
    "C:\AzSphere\azure-sphere-samples\Samples\HelloWorld\HelloWorld_RTApp_MT3620_BareMetal"
    
  3. Führen Sie Ninja aus, um die Anwendung zu erstellen und die Imagepaketdatei zu erstellen:

    ninja -C out/ARM-Debug
    

    Ninja platziert die resultierenden Anwendungs- und IMAGEPACKAGE-Dateien im angegebenen Verzeichnis.

    Sie können Ninja auch über CMake mit dem folgenden Befehl aufrufen:

    cmake --build out/<binary-dir>
    

    Legen Sie <binary-dir> auf das Binärverzeichnis fest, das den CMake-Cache enthält. Wenn Sie z. B. CMake in einem Azure Sphere-Beispiel ausführen, lautet cmake --build out/ARM-Debugder Buildbefehl .

  4. Löschen Sie alle Anwendungen, die bereits auf dem Gerät bereitgestellt wurden:

    az sphere device sideload delete
    
  5. Stellen Sie das Von Ninja erstellte Imagepaket bereit:

    az sphere device sideload deploy --image-package <package-name>
    
  6. Rufen Sie die Komponenten-ID für das Image ab:

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

    Der Befehl gibt alle Metadaten für das Imagepaket zurück. Die Komponenten-ID für die Anwendung wird im Abschnitt Identität für den Anwendungsbildtyp angezeigt. Zum Beispiel:

    ...
      "Identity": {
        "ComponentId": "<component-id>",
        "ImageId": "<image-id>",
        "ImageType": "Application"
      },
    ...
    
  7. Bestimmen Sie, auf welchem Kern Ihre App ausgeführt wird.

    Standardmäßig wird die RTApp auf dem ersten verfügbaren Echtzeitkern auf dem Gerät bereitgestellt. Sie können derzeit keinen bestimmten Kern angeben. Um herauszufinden, auf welchem Kern die Anwendung ausgeführt wird, verwenden Sie den Befehl az sphere device app , um die Anwendung zu beenden und dann neu zu starten. Geben Sie die Komponenten-ID für die Anwendung in den Befehlen an. Zum Beispiel:

    az sphere device app stop --component-id <component id>
    <component id>: App state: stopped
    
    az sphere device app start --component-id <component id>
    <component id>
    App state: running
    Core     : Real-time 0
    
  8. Der verbundene Terminalemulator sollte die Ausgabe der Anwendung anzeigen. Das Programm sendet die folgenden Wörter in Intervallen von einer Sekunde:

    Tick

    Tock

Protokollausgabe einer RTApp

Jeder Echtzeitkern des MT3620 verfügt über einen dedizierten UART, der für die Protokollierung der Ausgabe vorgesehen ist. Die Echtzeitkerne können auch auf die ISU-UARTs zugreifen. Der MT3620 RDB macht nur den TX-Pin verfügbar, mit dem Sie die Protokollausgabe der Anwendung anzeigen können. Andere Hardware macht dies möglicherweise anders oder gar nicht verfügbar. Um die Protokollausgabe anzuzeigen, richten Sie Ihre Hardware so ein, dass diese Ausgabe wie in der Schnellstartanleitung beschrieben angezeigt wird. Der dedizierte UART erfordert Uart keine Anwendungsmanifestanforderung. Es sollte jedoch nicht für andere Zwecke als die Protokollierung der Ausgabe für eine RTApp verwendet werden.

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.

Zusätzliche Ressourcen

Weitere Treiber und Beispiele für RTApps, die auf die M4-Echtzeitkerne auf dem MT3620-Chip abzielen, sind auf GitHub von Azure Sphere-Partnern verfügbar: