Lernprogramm: Erstellen einer allgemeinen Anwendung
Wichtig
Dies ist die Dokumentation zu Azure Sphere (Legacy). Azure Sphere (Legacy) wird am 27. September 2027 eingestellt, und Benutzer müssen bis zu diesem Zeitpunkt zu Azure Sphere (integriert) migrieren. Verwenden Sie die Versionsauswahl oberhalb des Inhaltsverzeichniss, um die Dokumentation zu Azure Sphere (Integriert) anzuzeigen.
Eine allgemeine Anwendung wird auf dem Azure Sphere-Betriebssystem ausgeführt, verwendet die Azure Sphere-Anwendungsbibliotheken und kann mit dem Internet und mit cloudbasierten Diensten kommunizieren. Siehe Übersicht über Azure Sphere-Anwendungen für grundlegende Informationen zu allgemeinen Anwendungen.
In diesem Tutorial lernen Sie Folgendes:
- Bereiten Ihres Geräts für Entwicklung und Debugging
- Erstellen, Ausführen und Debuggen einer allgemeinen Anwendung
Voraussetzungen
- Installieren Sie CMake und Ninja für Windows oder für Linux.
- Installieren Sie Visual Studio Code für Windows oder für Linux.
- Installieren Sie CMake und Ninja für Windows oder für Linux.
- Installieren des SDK für Windows oder für Linux
- Wählen Sie einen Mandanten aus, und fordern Sie Ihr Gerät an
- Konfigurieren des Netzwerks und Aktualisieren des Gerätebetriebssystems
Bereiten Ihres Geräts für Entwicklung und 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 Querladen aktivieren. Standardmäßig sind Azure Sphere-Geräte „gesperrt“. Sie erlauben also nicht, dass Anwendungen, die sich in der Entwicklung befinden, von einem Computer geladen werden, und auch das Debuggen von Anwendungen ist unzulässig. Durch die Vorbereitung des Geräts zum Querladen wird diese Einschränkung aufgehoben.
Der Azsphere Device Enable-Development-Befehl konfiguriert das Gerät so, dass Anwendungen zum Debuggen akzeptiert werden, der Debugserver auf das Gerät geladen wird, und weist das Gerät einer Gerätegruppe zu, die keine Cloudanwendungsupdates zulässt. 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.
Stellen Sie sicher, dass Ihr Azure Sphere-Gerät mit Ihrem Computer verbunden ist und Ihr Computer mit dem Internet verbunden ist.
Öffnen Sie eine Befehlszeilenschnittstelle mit PowerShell, Windows-Eingabeaufforderung oder Linux-Befehlsshell.
Geben Sie den folgenden Befehl ein:
azsphere device enable-development
Die Ausgabe sollte etwa folgendermaßen aussehen:
Getting device capability configuration for application development. Downloading device capability configuration for device ID '<device ID>'. Successfully downloaded device capability configuration. Successfully wrote device capability configuration file 'C:\Users\user\AppData\Local\Temp\tmpD732.tmp'. Setting device group ID 'a6df7013-c7c2-4764-8424-00cbacb431e5' for device with ID '<device ID>'. Successfully disabled over-the-air updates. Enabling application development capability on attached device. Applying device capability configuration to device. Successfully applied device capability configuration to device. The device is rebooting. Installing debugging server to device. Deploying 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' to the attached device. Image package 'C:\Program Files (x86)\Microsoft Azure Sphere SDK\DebugTools\gdbserver.imagepackage' has been deployed to the attached device. Application development capability enabled. Successfully set up device '<device ID>' for application development, and disabled over-the-air updates. Command completed successfully in 00:00:38.3299276.
Wenn der Azsphere-Gerätebefehl zur Aktivierung der Entwicklung fehlschlägt, lesen Sie die Problembehandlung von Azure Sphere-Problemen, um Hilfe zu erhalten.
Erstellen und Ausführen der allgemeinen Anwendung mit Visual Studio Code
In diesem Lernprogramm wird die Azure Sphere Blink-Vorlage verwendet, die Teil der Azure Sphere-Erweiterung für Visual Studio Code ist. Die Blink-Vorlage blinkt eine LED, damit Sie überprüfen können, ob das Azure Sphere-Gerät und die Tools installiert und ordnungsgemäß eingerichtet sind.
Starten Sie Visual Studio Code. Wählen Sie "Befehlspalette anzeigen> aus, und geben Sie dann "Azure Sphere" ein: "Neues Projekt generieren".
Wählen Sie "Blinken" im Menü "Vorlagen" aus.
Visual Studio Code zeigt dann ein Explorer Fenster an. Navigieren Sie zu dem Ordner, in dem Sie die Blink-Anwendung platzieren möchten. Visual Studio Code erstellt den Blink-Ordner an Ihrem ausgewählten Speicherort und generiert die Builddateien für die Blink-Anwendung. Es sollten Meldungen von CMake angezeigt werden.
Öffnen Sie die CMakeLists.txt Datei, und ändern Sie die TARGET_DIRECTORY Einstellung, um den Ordner anzugeben, der Definitionen für die verwendete Hardware enthält. Standardmäßig gibt die TARGET_DIRECTORY HardwareDefinitions/mt3620_rbd an, die mit dem Seeed Azure Sphere MT3620 Development Kit übereinstimmt:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
Die Vorlage enthält mehrere Hardwaredefinitionen. Wenn Sie beispielsweise ein SEEED MT3620 Mini Dev Board verwenden, geben Sie stattdessen HardwareDefinitions/seeed_mt3620_mdb an.
Drücken Sie F5, um das Projekt zu erstellen und zu debuggen. Wenn das Projekt noch nicht erstellt wurde oder Dateien geändert und neu erstellt werden müssen, erstellt Visual Studio Code das Projekt vor dem Start des Debuggings.
Warten Sie mehrere Sekunden, bis Visual Studio Code die Anwendung erstellt, ein Imagepaket erstellt, auf dem Board bereitgestellt und im Debugmodus gestartet wird. Statusaktualisierungen werden im Ausgabebereich auf dem Weg angezeigt.
Zunächst bestimmt CMake, ob die Anwendung erstellt werden muss. Wenn ja, wird der Fokus auf den Ausgabebereich verschoben, in dem die Ausgabe von CMake/Build angezeigt wird.
Als Nächstes zeigt der Ausgabebereich die Ausgabe von Azure Sphere an, während es das Imagepaket auf dem Gerät bereitstellt. Abschließend erhält die Debugging-Konsole den Fokus, und die gdb-Ausgabe wird angezeigt.
Tipp
Notieren Sie sich den Speicherort Ihres Imagepakets, da Sie es beim Erstellen einer Bereitstellung benötigen. Im Ausgabefenster sollte eine Meldung wie "In Pfad< geschriebene >Builddateien" angezeigt werden, wobei <der Pfad der vollständige Pfad> zum Buildordner Ihrer Blink-Anwendung ist und in der Regel auf "out\ARM-Debug" oder "out/ARM-Debug" endet.
Nach einer kurzen Verzögerung sollte eine LED blinken.
Legen Sie einen Haltepunkt an einer beliebigen Stelle in main.c fest, und durchlaufen Sie die Anwendung, damit Sie die Visual Studio Code-Debuggingfunktionen für Azure Sphere untersuchen können.
Erstellen und Ausführen der allgemeinen Anwendung mit Visual Studio
In diesem Lernprogramm wird die Azure Sphere Blink-Vorlage verwendet, die Teil der Azure Sphere-Erweiterung für Visual Studio ist. Die Blink-Vorlage blinkt eine LED, damit Sie überprüfen können, ob das Azure Sphere-Gerät und die Tools installiert und ordnungsgemäß eingerichtet sind.
Wenn Visual Studio neu für Sie ist, sollten Sie sich den Schnellstart oder die Produkttour ansehen, um mehr über die Navigation und Verwendung zu erfahren.
Öffnen Sie Visual Studio, und wählen Sie Neues Projekt erstellen aus. Geben Sie im Suchfeld "Azure-Kugel" ein, um eine Liste der Azure Sphere-Vorlagen abzurufen. Wählen Sie Azure Sphere Blink aus der Liste aus.
Geben Sie einen Namen und einen Speicherort für das Projekt ein, und wählen Sie dann "Erstellen" aus.
Öffnen Sie die CMakeLists.txt Datei, und ändern Sie die TARGET_DIRECTORY Einstellung, um den Ordner anzugeben, der Definitionen für die verwendete Hardware enthält. Standardmäßig gibt die TARGET_DIRECTORY HardwareDefinitions/mt3620_rbd an, die mit dem Seeed Azure Sphere MT3620 Development Kit übereinstimmt:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "HardwareDefinitions/mt3620_rdb" TARGET_DEFINITION "template_appliance.json")
Die Vorlage enthält mehrere Hardwaredefinitionen. Wenn Sie beispielsweise ein SEEED MT3620 Mini Dev Board verwenden, geben Sie stattdessen HardwareDefinitions/seeed_mt3620_mdb an.
Wählen Sie in Visual Studio die Option "Ausgabe anzeigen">aus, um den Ausgabebereich anzuzeigen.
Stellen Sie sicher, dass das Gerät über USB mit Ihrem PC verbunden ist. Wählen Sie im Menü "Startelement festlegen" azure Sphere App (HLCore) aus, wobei Azure Sphere App der Name Ihrer aktuellen allgemeinen Anwendung ist, oder drücken Sie F5.
Wenn Sie aufgefordert werden, das Projekt zu kompilieren, wählen Sie Ja aus. Visual Studio kompiliert die Anwendung, erstellt ein Imagepaket, lädt es per Querladen auf das Board und startet es im Debugmodus. Querladen bedeutet, dass die Anwendung direkt vom PC über eine drahtgebundene Verbindung und nicht über die Cloud übermittelt wird.
Tipp
Notieren Sie sich den Speicherort Ihres Imagepakets, da Sie es beim Erstellen einer Bereitstellung benötigen. Es sollte eine Meldung wie "Ausgabedatei ist an: <Pfad" in der Ausgabe in der Ausgabe in >>: Build, wobei Pfad< der vollständige Pfad zum Buildordner Ihrer Blink-Anwendung ist und in der Regel auf "out/ARM-Debug" endet.>
Standardmäßig zeigt der Ausgabebereich die Ausgabe von "Geräteausgabe" an. Um Meldungen vom Debugger anzuzeigen, wählen Sie Debug aus dem Dropdownmenü Ausgabe anzeigen von:. Sie können auch die Programmdisassemblierung, die Register oder den Arbeitsspeicher über das Menü Debug >Windows untersuchen.
Wenn Sie das Programm ausführen, sollte eine LED blinken.
Herunterladen der Beispielanwendung
Sie können die HelloWorld-Anwendung wie folgt herunterladen:
- Verweisen Sie Ihren Browser auf den Microsoft Samples-Browser.
- Geben Sie "Azure Sphere" in das Suchfeld ein.
- Wählen Sie Azure Sphere – Hallo Welt aus den Suchergebnissen aus.
- Wählen Sie "ZIP herunterladen" aus.
- Öffnen Sie die heruntergeladene Datei, und extrahieren Sie sie in ein lokales Verzeichnis.
Erstellen des Beispiels
Befolgen Sie zum Erstellen der Build- und IMAGEPACKAGE-Dateien für die Beispielanwendung HelloWorld_HighLevelApp die folgenden Schritte.
Passen Sie das Beispiel ggf. an Ihre Hardware an. Standardmäßig zielen die Beispiele auf Hardware ab, die auf das MT3620-Referenzboarddesign (RDB) folgt, z. B. das MT3620 Development Kit von Seeed Studios. Zusätzliche Zielhardwaredefinitionen für die Beispielanwendungen sind im HardwareDefinitions-Verzeichnis des Azure Sphere Samples-Repositorys verfügbar. Beispielsweise befinden sich die Hardwaredefinitionsdateien für das Avnet MT3620 Starter Kit im Unterverzeichnis "HardwareDefinitions/avnet_mt3620_sk".
Öffnen Sie CMakeLists.txt, und aktualisieren Sie den TARGET_DIRECTORY Parameter in der azure_target_hardware_definition-Funktion , um auf das Unterverzeichnis für Ihre Hardware zu zeigen. Zum Beispiel:
azsphere_target_hardware_definition(${PROJECT_NAME} TARGET_DIRECTORY "../../../HardwareDefinitions/avnet_mt3620_sk" TARGET_DEFINITION "sample_appliance.json")
Öffnen Sie eine Befehlszeilenschnittstelle mit PowerShell, Windows-Eingabeaufforderung oder Linux-Befehlsshell. Navigieren Sie zu Ihrem Projektbuildverzeichnis.
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 Buildkonfigurationsname gemäß der Definition in CMakePresets.json.
--build <cmake-path>
Das Binärverzeichnis, das den CMake-Cache enthält. Wenn Sie beispielsweise CMake in einem Azure Sphere-Beispiel ausführen, lautet
cmake --build out/ARM-Debug
der 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 mit Leerzeichen voneinander 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 Hallo Welt allgemeinen App:
Führen Sie Ninja aus, um die Anwendung zu erstellen und die Bildpaketdatei 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 diesen Wert
<binary-dir>
auf das Binärverzeichnis fest, das den CMake-Cache enthält. Wenn Sie beispielsweise CMake in einem Azure Sphere-Beispiel ausführen, lautetcmake --build out/ARM-Debug
der Buildbefehl .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.
Ausführen des Beispiels
Wenn auf Ihrem Gerät bereits eine Anwendung ausgeführt wird, löschen Sie die Anwendung:
azsphere device sideload delete
Wechseln Sie in das Verzeichnis, das die zuvor erstellten Build- und „.imagepackage“-Dateien enthält.
Laden Sie das Imagepaket auf Ihr Gerät, indem Sie den Befehl "azsphere device sideload deploy" ausführen und das Imagepaket angeben. Zum Beispiel:
azsphere device sideload deploy --image-package HelloWorld_HighLevelApp.imagepackage
Mit diesem Befehl wird das Imagepaket geladen und die Anwendung gestartet. Eine blinkende LED sollte angezeigt werden.
Tipp
Notieren Sie sich den Pfad des Bildpakets. Sie verwenden das Imagepaket später im Schnellstart für die Bereitstellung.
Debuggen des Beispiels
Wechseln Sie in das Verzeichnis, das die zuvor erstellten Build- und „.imagepackage“-Dateien enthält.
Rufen Sie die Komponenten-ID ab, wenn Sie sie noch nicht haben:
azsphere image-package show --image-package HelloWorld_HighLevelApp.imagepackage
Wenn die Anwendung ausgeführt wird, beenden Sie sie, und starten Sie sie dann mit der
--debug-mode
Option neu:azsphere device app stop --component-id <ComponentId>
azsphere device app start --debug-mode --component-id <ComponentId>
Folgendes sollte angezeigt werden:
<ComponentId> App state : debugging GDB port : 2345 Output port : 2342 Core : High-level
Verwenden Sie einen Terminalclient , um eine Telnet- oder unformatierte TCP-Verbindung einzurichten, um den Ausgabedatenstrom aus dem Prozess zu lesen. Geben Sie 192.168.35.2 als IP-Adresse und 2342 als Port an.
Öffnen Sie eine Befehlszeilenschnittstelle mithilfe von PowerShell oder einer Standard-Eingabeaufforderung unter Windows oder befehlsshell unter Linux, und übergeben Sie die .out-App-Binärdatei aus Ihrem Build als Parameter. Auf diese Weise wird das vollständige Debuggen des Quellcodes ermöglicht.
Windows-Eingabeaufforderung
"C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
Windows PowerShell
& "C:\Program Files (x86)\Microsoft Azure Sphere SDK\Sysroots\*sysroot*\tools\gcc\arm-poky-linux-musleabi-gdb" HelloWorld_HighLevelApp.out
Hinweis
Das Azure Sphere SDK wird mit mehreren Sysroots ausgeliefert, sodass Anwendungen auf unterschiedliche API-Sätze abzielen können, wie in der Anwendungslaufzeitversion, sysroots und Beta-APIs beschrieben. Die sysroot-Verzeichnisse werden im Azure Sphere SDK-Installationsordner unter Sysroots installiert.
Legen Sie das Remotedebuggingziel auf IP-Adresse 192.168.35.2 für Port 2345 fest:
target remote 192.168.35.2:2345
Führen Sie alle anderen von Ihnen ausgewählten gdb-Befehle aus. Die folgenden Befehle legen z. B. beim Eintrag auf "main()" einen Haltepunkt fest und setzen dann die Ausführung nach dem Haltepunkt fort.
break main
c
Weitere Informationen zum Debuggen mit gdb finden Sie unter GDB: Der GNU Project Debugger oder eine der anderen quellen zum Thema.
Nächste Schritte
Sie haben eine allgemeine Anwendung für die Ausführung auf Ihrem Azure Sphere-Gerät erstellt. Möglicherweise möchten Sie sie jetzt ändern. Hardwaredefinitionen beschreiben, wie Eine JSON-Datei mit Hardwaredefinitionsdefinition bearbeitet und die zugeordnete Headerdatei erneut generiert wird.
Erfahren Sie als Nächstes, wie Sie Ihre allgemeine Anwendung aus der Cloud bereitstellen.
Siehe auch
Besuchen Sie die Azure Sphere Gallery, eine Sammlung von inspirierenden, nicht nachhaltigen und wiederverwendbaren Azure Sphere-Skripts, Dienstprogrammen und Funktionen.