Übersicht über Azure Sphere-Anwendungen

Azure Sphere-Geräte können zwei Arten von Anwendungen ausführen:

  • Auf hoher Ebene ausgeführte Anwendungen werden containerisiert auf dem Azure Sphere-Betriebssystem ausgeführt
  • Echtzeitfähige Anwendungen (RTApps) werden auf Bare Metal oder mit einem Echtzeitbetriebssystem (RTOS) auf den Echtzeitkernen ausgeführt.

Für jedes Azure Sphere-Gerät ist eine allgemeine Anwendung erforderlich. RTApps sind optional.

Allgemeine Anwendungen

Jedes Azure Sphere-Gerät verfügt über eine allgemeine Anwendung, die unter dem Azure Sphere-Betriebssystem ausgeführt wird und die Anwendungsbibliotheken verwenden kann. Eine anwendung auf hoher Ebene kann:

  • Konfigurieren und Interagieren mit Azure Sphere-Peripheriegeräten, z. B. gpio-Pins (General-Purpose Input/Output), universellen asynchronen Empfängern/Sendern (UARTs) und anderen Schnittstellen

  • Kommunizieren mit RTApps

  • Kommunizieren mit dem Internet und cloudbasierten Diensten

  • Broker-Vertrauensstellungen mit anderen Geräten und Diensten über zertifikatbasierte Authentifizierung

Eine allgemeine Anwendung wird in einem Container im Benutzermodus "Normal World" ausgeführt, wie unter "Was ist Azure Sphere?" beschrieben. Der Anwendungscontainer unterstützt eine Teilmenge der POSIX-Umgebung und eine Reihe von Anwendungsbibliotheken (Applibs), die für das Azure Sphere-Betriebssystem spezifisch sind. Die Bibliotheken und Funktionen, die für allgemeine Anwendungen verfügbar sind, sind eingeschränkt, um sicherzustellen, dass die Plattform sicher bleibt und einfach aktualisiert werden kann. Anwendungen können nur auf die Bibliotheken und Laufzeitdienste zugreifen, die Von Microsoft bereitgestellt werden. Unter anderem sind weder direkte Datei-E/A- noch Shellzugriff verfügbar. Die Entwicklungsumgebung beschreibt den Basis-API-Satz und führt die Azure Sphere-Anwendungsbibliotheken ein, die gerätespezifische Features unterstützen.

Es wird erwartet, dass Allgemeine Anwendungen kontinuierlich ausgeführt werden und automatisch neu gestartet werden, wenn sie beendet werden oder fehlschlagen.

Das Erstellen einer allgemeinen Anwendung bietet weitere Informationen zu Features.

Echtzeitfähige Anwendungen

Ein Azure Sphere-Gerät kann zusätzlich zu seiner allgemeinen Anwendung auch über eine oder mehrere echtzeitfähige Anwendungen verfügen. Eine RTApp kann:

  • Konfigurieren und Interagieren mit Peripheriegeräten, die in die Azure Sphere MCU integriert sind, z. B. gpio-Pins und UARTs
  • Kommunizieren mit anwendungen auf hoher Ebene

RTApps können entweder auf Bare Metal oder mit einem Echtzeitbetriebssystem (RTOS) ausgeführt werden. Das Azure Sphere-Beispiel-Repository auf GitHub enthält ein Bare-Metal-HelloWorld-Beispiel sowie ein Beispiel, das die Kernkommunikation zwischen high-level und RTApps veranschaulicht. Das Azure Samples-Repository auf GitHub enthält ein Beispiel für die Verwendung von Azure Sphere mit Azure RTOS.

Zusätzliche Treiber und Beispiele für RTApps, die auf die M4-Echtzeitkerne auf dem MT3620-Chip abzielen, sind auf GitHub von den Azure Sphere-Partnern MediaTek und Codethink verfügbar.

Jede RTApp wird auf einem bestimmten E/A-Kern isoliert ausgeführt und kann nur mit einer allgemeinen Anwendung kommunizieren. es kann nicht das Internet, die Azure Sphere-Applibs oder andere Features des Azure Sphere-Betriebssystems verwenden.

Das Erstellen einer echtzeitfähigen Anwendung bietet weitere Informationen zu den Features und dem Entwicklungsprozess für RTApps.

Features, die allen Anwendungen gemeinsam sind

Trotz der erheblichen Unterschiede zwischen allgemeinen Apps und RTApps haben alle Azure Sphere-Anwendungen einige Gemeinsamkeiten. Sie können beide Arten von Anwendungen mit Visual Studio oder Visual Studio Code entwickeln, erstellen und debuggen oder CMake und Ninja mithilfe der CLI aufrufen.

Darüber hinaus gelten die folgenden Sicherheitsfeatures sowohl für allgemeine als auch für RTApps:

Anwendungsfunktionen

Unabhängig davon, wo sie ausgeführt wird, muss jede Azure Sphere-Anwendung die externen Dienste und Schnittstellen angeben, die sie benötigt , z. B. ihre E/A- und Netzwerkanforderungen, um eine unbefugte oder unerwartete Verwendung zu verhindern.

Anwendungsfunktionen sind die Ressourcen, die eine Anwendung benötigt. Zu den Anwendungsfunktionen gehören die von der Anwendung verwendeten Peripheriegeräte, die Internethosts, mit denen eine anwendung auf hoher Ebene verbunden ist, und die Berechtigung zum Ändern der Netzwerkkonfiguration. Jede Anwendung muss über ein Anwendungsmanifest verfügen, das diese Ressourcen identifiziert.

Gerätefunktionen

Eine Gerätefunktion ermöglicht eine gerätespezifische Aktivität. Gerätefunktionen werden vom Azure Sphere Security Service gewährt. Azure Sphere-Chips verfügen standardmäßig über keine Gerätefunktionen. Es gibt zwei Haupttypen von Gerätefunktionen: die appDevelopment-Gerätefunktion und die fieldServicing-Gerätefunktion .

Die AppDevelopment-Gerätefunktion ändert den Signaturtyp, dem das Gerät vertraut. Standardmäßig vertrauen Azure Sphere-Geräte produktionssignierten Imagepaketen, aber nicht SDK-signierten Imagepaketen. Daher können Sie ein SDK-signiertes Bildpaket nicht auf ein Azure Sphere-Gerät querladen, das nicht über diese Funktion verfügt. Wenn die AppDevelopment-Funktion vorhanden ist, vertraut das Gerät jedoch SDK-signierten Bildpaketen. Darüber hinaus können Sie eine Anwendung auf dem Gerät starten, beenden, debuggen oder entfernen. Zusammenfassend muss die Anwendungsentwicklungsfunktion auf dem Gerät vorhanden sein, bevor Sie Folgendes ausführen können:

  • Querladen eines Bildpakets, das von Visual Studio oder dem Azsphere-Imagepaketbefehl erstellt wurde.
  • Starten, Beenden, Debuggen oder Entfernen eines Bildpakets vom Azure Sphere-Gerät, unabhängig davon, wie das Bildpaket signiert ist.

Der Befehl "azsphere device enable-development " erstellt und wendet die appDevelopment-Funktion an und verhindert, dass das Gerät Cloudanwendungsupdates empfängt.

Die FieldServicing-Funktion ermöglicht die Geräte-zu-Computer-Kommunikation auf Geräten, die sich im DeviceComplete-Fertigungszustand befinden. Mit dieser Funktion können Sie produktionssignierte Bilder querladen, aber nicht löschen. Sie können Anwendungen starten und beenden, aber nicht debuggen. Sie können auch routinemäßige Wartungsaufgaben ausführen, z. B. das Konfigurieren von WLAN. Es ist für die kurzfristige Verwendung während einer Wartungssitzung vorgesehen, einem begrenzten Zeitraum, in dem der Zugriff auf das Gerät pro Vorgang gewährt wird.

Signatur- und Bereitstellungsanforderungen

Alle Imagepakete, die auf einem Azure Sphere-Gerät bereitgestellt werden, müssen signiert sein. Das Azure Sphere SDK und die Befehlssignatur-Imagepakete des Azsphere-Imagepakets zum Testen mithilfe eines SDK-Signaturschlüssels. Azure Sphere-Geräte vertrauen diesem Schlüssel nur, wenn die AppDevelopment-Gerätefunktion ebenfalls vorhanden ist.

Die Azure Sphere Security Service-Produktion signiert Bildpakete, wenn Sie sie in die Cloud hochladen. Produktionssignierte Imagepakete können quergeladen oder aus der Cloud geladen werden.

Um die Installation nicht autorisierter Software zu verhindern, können Anwendungen nur auf zwei Arten auf ein Azure Sphere-Gerät geladen werden:

  • Sideloading, das sowohl für die Softwareentwicklung und -tests als auch für die Feldwartung von Geräten verwendet werden kann. Das Querladen für die Softwareentwicklung und -tests erfordert die AppDevelopment-Gerätefunktion. Das Querladen für die Feldwartung erfordert die FieldServicing-Gerätefunktion und produktionssignierte Imagepakete. Visual Studio- und Visual Studio Code-Querladen von Anwendungen während der Entwicklung und beim Debuggen; Sie können das Querladen auch manuell mithilfe der Azure Sphere CLI durchführen.

  • Cloudupdate, das nur vom Azure Sphere Security Service ausgeführt werden kann. Verwenden Sie die Azure Sphere CLI, um Cloudbereitstellungen zu erstellen und zu verwalten.

Partneranwendungen

Anwendungen, die zusammenarbeiten, können als Partneranwendungen betrachtet und dann separat quergeladen werden. Wenn Sie eine Anwendung querladen, die über einen Partner verfügt, verbleibt die Partneranwendung auf dem Azure Sphere-Gerät, wenn sie bereits bereitgestellt wurde. Jede Anwendung deklariert eine Liste ihrer Partner in ihrer Projektkonfiguration.

Um Der CMake-Projektkonfiguration Partner hinzuzufügen, geben Sie die Komponenten-ID der Partner-App im Feld "partnerComponents " des Konfigurationsabschnitts der Datei "launch.vs.json" oder ".vscode/launch.json" an:

"partnerComponents": [ "25025d2c-66da-4448-bae1-ac26fcdd3627" ]

Allgemeine Apps und RTApps, die miteinander kommunizieren, müssen als Partner identifiziert werden. Azure Sphere unterstützt keine Kommunikation zwischen Apps auf hoher Ebene oder RTApp-Paaren.