Gerätefunktionen und -kommunikation

Die Gerätefunktionen bestimmen gerätespezifische Betriebssystemrichtlinien für die Dienst-UART-Kommunikation . Die gesamte Kommunikation zwischen dem Hostcomputer und einem angeschlossenen Gerät erfolgt über den Dienst-UART. Der Hostcomputer kommuniziert mit einem angeschlossenen Gerät, um Vorgänge auf dem Gerät auszuführen. Hersteller, Softwareentwickler und Außendiensttechniker nutzen Funktionen, um die Service-UART-Kommunikation für die erforderlichen Vorgänge freizuschalten und gleichzeitig sicherzustellen, dass das Gerät vor böswilligen Benutzern geschützt ist.

Gerätehersteller und OEMs können die Dienst-UART-Kommunikation sperren, um eine unbefugte Nutzung durch Personen zu verhindern, die physischen Zugriff auf das Gerät haben. Das Sperren einer solchen Kommunikation ist Teil der Geräte-Finalisierung. Nach der Fertigstellung kann ein Benutzer die ID eines Geräts abrufen, aber nichts mehr. Für alle anderen Vorgänge ist eine Gerätefunktion erforderlich. Der Abschluss erfolgt in der Regel in der Fabrikhalle, bevor der Hersteller das Gerät an einen Kundenstandort liefert.

Eine Gerätefunktionsdatei enthält nur null oder mehr Funktionen für ein einzelnes Gerät. Die Funktionsdatei funktioniert nicht, wenn sie auf ein Gerät angewendet wird, für das sie nicht vorgesehen ist. Ein Gerät kann über die folgenden Funktionen verfügen, von denen jede weiter unten in diesem Thema beschrieben wird:

Hinweis

Gerätefunktionen stehen nicht im Zusammenhang mit Anwendungsfunktionen. Anwendungsfunktionen geben die Ressourcen an, die eine Anwendung zur Laufzeit benötigt. Weitere Informationen zu Anwendungsfunktionen finden Sie unter Anwendungsmanifest .

Ermitteln der Gerätefunktionen oder des Fertigungszustands

Verwenden Sie den Befehl az sphere device capability show-attached , um die auf dem angeschlossenen Gerät gespeicherte Funktionskonfiguration zu ermitteln. Der Befehl zeigt die Funktionen an, die mithilfe einer Funktionsdatei konfiguriert werden, sowie einige, aber nicht alle Funktionen, die standardmäßig auf Boards vorhanden sind.

Die Gerätefunktionen können vom Fertigungsstatus des Geräts beeinflusst werden. Verwenden Sie den Befehl az sphere device manufacturing-state show , um den Fertigungsstatus des Geräts zu bestimmen. Wenn der Befehl anzeigt, dass sich das Gerät im DeviceComplete-Fertigungszustand befindet oder zurückgibt Device access is forbidden, ist die Dienst-UART-Kommunikation gesperrt, und Sie benötigen eine Gerätefunktion, um von Ihrem Computer aus mit dem Gerät zu kommunizieren. Wenn sich ein Gerät im DeviceComplete-Fertigungszustand befindet, sind Fertigungsvorgänge nur zulässig, wenn das Gerät über eine Funktionsdatei entsperrt wird.

Hinweis

Wenn Sie ein Gerät an einem Kundenstandort installieren, sollten Sie sicherstellen, dass das Gerät vor der Installation in den DeviceComplete-Fertigungszustand abgeschlossen ist. Weitere Informationen finden Sie unter Fertigstellen des Azure Sphere-Geräts.

Der Zustand "DeviceComplete manufacuring" ist normalerweise nicht für ein Dev Kit geeignet. Um das Testen der Fertigungsvorgänge zu ermöglichen, die von Fertigungsingenieuren entwickelt werden, sollte sich ein Dev Kit entweder im Fertigungszustand Leer oder im Fertigungszustand Module1Complete befinden.

Abrufen von Funktionen durch Geräte

Geräte können Funktionen auf eine von drei Arten abrufen:

  • Standardmäßig geöffnet. Ein Gerät, das sich entweder im Fertigungszustand Leer oder im Fertigungszustand Module1Complete befindet, verfügt standardmäßig über geöffnete Funktionen. Dies geschieht, damit Geräte, die sich noch in der Fertigungsphase befinden, nicht mit der Cloud verbunden oder in Katalogen beansprucht werden müssen, wie dies für die Verwendung von Gerätefunktionsdateien zum Entsperren von Funktionen erforderlich ist. Im Laufe der Fertigung können Hersteller den Fertigungsstatus des Geräts ändern, um funktionen zu sperren, die nicht mehr geeignet sind, wie unter Aufgaben im Fertigungsbereich beschrieben.

  • Querladen auf das Gerät. Ein Gerät verfügt möglicherweise über eine Funktionsdatei, die vom Hostcomputer auf das Gerät quergeladen wird. Verwenden Sie den Befehl az sphere device capability download , um die Funktionsdatei abzurufen. Dieser quergeladene Satz von Funktionen bleibt erhalten, bis eine neue Funktionsdatei (bei der es sich möglicherweise um eine leere Datei ohne Funktionen handelt) quergeladen wird. Dies ist die übliche Situation während der Anwendungsentwicklung, z. B. wenn der Befehl az sphere device enable-development ausgeführt wird. Die Anwendungsentwicklung wird dadurch unterstützt, dass sich das Gerät in einem entsperrten Zustand befindet, in dem der Entwickler Vorgänge wie debuggen und problemlos quergeladene Versionen der Anwendung löschen und bereitstellen kann.

  • Wird bei jedem Vorgang an das Gerät übergeben. Auf einem Gerät können lokal ausgewählte Funktionen pro Vorgang angewendet werden. Der Befehl az sphere device capability apply wählt eine Funktionsdatei aus, die lokal auf dem Hostcomputer gespeichert ist. Sobald dieser Befehl ausgeführt wird, wird die ausgewählte Funktion mit jedem nachfolgenden Befehl vom Computer an das Gerät übergeben. Dies ist die empfohlene Methode zur Verwendung von Funktionen für Geräte, die sich im Feld befinden, da die Funktionen auf dem Computer und nicht auf dem Gerät gespeichert werden. Das Risiko, dass ein Außendiensttechniker das Gerät versehentlich in einem ungesicherten Zustand belässt, indem er vergisst, die Funktion zu entfernen, wird vermieden.

Bevor eine Funktionsdatei auf ein Gerät quergeladen oder mit einem Vorgang an ein Gerät übergeben werden kann, muss sie aus dem Azure Sphere-Sicherheitsdienst (AS3) heruntergeladen werden, wie unter Vornehmen von Änderungen an einem Gerät nach der Herstellung beschrieben. Heruntergeladene Funktionsdateien sind gerätespezifisch; nach dem Herunterladen kann eine Funktionsdatei wiederholt auf dem zugeordneten Gerät verwendet werden.

Die enableRfTestMode-Funktion

Die EnableRfTestMode-Funktion ist standardmäßig auf dem Gerät vorhanden, wenn der Fertigungsstatus des Geräts leer ist. Diese Funktion ermöglicht die Programmierung von e-Sicherungen sowie die Konfiguration und Das Testen des HF-Betriebs. Katalogbesitzer können diese Funktion nicht auf einen Hostcomputer herunterladen. Wenn Sie diese Funktion benötigen, wenden Sie sich an Ihren Microsoft-Vertreter.

Wenn der Fertigungszustand des Geräts Leer ist, zeigt der Befehl az sphere device capability show-attached die Funktion enableRfTestMode an.

Die AppDevelopment-Funktion

Die AppDevelopment-Gerätefunktion entsperrt die Dienst-UART-Kommunikation und ändert die Art der Signatur, der das Gerät vertraut. Es ist für die Verwendung während der Anwendungsentwicklung vorgesehen.

Standardmäßig vertrauen Azure Sphere-Geräte produktionssignierten Imagepaketen, die vom Azure Sphere-Sicherheitsdienst heruntergeladen werden, aber nicht auf SDK-signierte Imagepakete. Daher können Sie kein Imagepaket mit dem SDK erstellen und es zum Debuggen auf Ihr Azure Sphere-Gerät querladen, es sei denn, das Gerät verfügt über die AppDevelopment-Funktion . Die AppDevelopment-Funktion bewirkt, dass das Gerät dem Imagepaket vertraut, und Sie können eine Anwendung starten, beenden, debuggen oder daraus entfernen.

Zusammenfassend lässt sich sagen, dass die AppDevelopment-Funktion die Dienst-UART-Kommunikation entsperrt, um die folgenden Vorgänge zu ermöglichen:

  • Querladen eines Imagepakets, das mit Visual Studio, Visual Studio Code, der CLI oder dem Befehl az sphere image-package erstellt wurde.

  • Starten, Beenden, Debuggen oder Entfernen eines Imagepakets vom Azure Sphere-Gerät, unabhängig davon, wie das Imagepaket signiert ist.

Verwenden Sie zum Hinzufügen der AppDevelopment-Funktion den Befehl az sphere device enable-development . Dieser Befehl lädt die AppDevelopment-Funktion für das angeschlossene Gerät herunter, lädt die Funktion quer auf das Gerät und verschiebt das Gerät in die Standardgerätegruppe Entwicklung. Um eine andere Gerätegruppe anzugeben, schließen Sie den Parameter ein --device-group .

Wenn Sie az sphere device enable-development verwenden, bleibt das Gerät so lange entsperrt, bis Sie es explizit sperren. Verwenden Sie den Befehl az sphere device enable-cloud-test , um das Gerät erneut zu sperren. Dieser Befehl entfernt die Funktion und ändert die Gerätegruppe abhängig von den angegebenen Befehlszeilenparametern.

Die Befehle az sphere device enable-development und az sphere device enable-cloud-test führen eine Sequenz von Aktionen aus, die ein Gerät für die Entwicklung und das Debuggen bzw. für Cloudbereitstellungen vorbereiten. Anstatt diese Befehle zu verwenden, können Sie den Befehl az sphere device capability verwenden, um eine Gerätefunktion herunterzuladen oder zu aktualisieren oder um herauszufinden, welche Funktionen ein Gerät derzeit besitzt.

Die fieldServicing-Funktion

Die fieldServicing-Funktion ist auf einem Gerät standardmäßig vorhanden, wenn das Gerät den Fertigungsstatus Blank oder Module1Complete aufweist. Wenn sich ein Gerät im DeviceComplete-Fertigungszustand befindet, kann die fieldServicing-Funktion quergeladen werden, wird aber in der Regel bei jedem Vorgang während einer Wartungssitzung an das Gerät übergeben. Ausführliche Informationen zum Starten einer Wartungssitzung finden Sie unter Vornehmen von Änderungen an einem Gerät nach der Herstellung.

Unabhängig vom Fertigungszustand des Geräts entsperrt die fieldServicing-Funktion die Service-UART-Kommunikation, um die folgenden Vorgänge zu ermöglichen:

  • Querladen eines produktionssignierten Imagepakets.
  • Starten, Beenden und Löschen eines produktionssignierten Imagepakets, das als temporär markiert ist.
  • Ausführen von Routinewartungsaufgaben wie dem Konfigurieren von WLAN.

Obwohl die fieldServicing-Funktion standardmäßig auf dem Gerät vorhanden ist, wenn der Fertigungszustand des Geräts Leer oder Module1Complete ist, zeigt der Befehl az sphere device capability show-attached die fieldServicing-Funktion nicht an.

Abhängigkeit von aktuellem vertrauenswürdigem Keystore

Wenn eine Funktionsdatei von AS3 erstellt wird, wird sie mit dem aktuellen Imagesignaturschlüssel signiert. Jedes Gerät verfügt über einen vertrauenswürdigen Keystore als Teil des Betriebssystems, in dem diese Schlüssel aufbewahrt werden. Wenn das Gerät jedoch nicht mit dem Internet verbunden ist, ist es möglich, dass eine Funktion von dem Gerät, auf das es abzielt, nicht vertrauenswürdig ist, wenn der vertrauenswürdige Keystore dieses Geräts veraltet ist.

Um dies zu beheben, besteht eine Methode darin, dem Gerät zu erlauben, eine Verbindung mit dem Internet herzustellen, sodass es den vertrauenswürdigen Keystore aktualisiert. Verbinden Sie Ihr Gerät mit dem Internet, und drücken Sie Zurücksetzen , um ein Betriebssystemupdate auszulösen.

Wenn dies nicht möglich ist, können Sie einen aktualisierten vertrauenswürdigen Keystore querladen. Um dies zu tun, akzeptieren Sie die Lizenzbedingungen , laden Sie dann die neuesten Wiederherstellungsimages des Betriebssystems herunter, und extrahieren Sie aus dieser ZIP-Datei nur die Datei "trusted-keystore.bin". Anschließend können Sie den Befehl az sphere device sideload deploy --image-package <path-to-trustedkeystore.bin-file> verwenden, um den vertrauenswürdigen Keystore querzuladen. Die Funktion sollte nun vom Gerät als vertrauenswürdig eingestuft werden.

Eine dritte Methode ist die Wiederherstellung der Systemsoftware zum Aktualisieren des Azure Sphere-Betriebssystems auf die neueste veröffentlichte Version, einschließlich des neuesten vertrauenswürdigen Keystores.