Verwalten des Herunterschaltzustands für Azure Sphere-Geräte

Eine allgemeine Azure Sphere-Anwendung kann die Energieverwaltungs-API verwenden, um das Gerät in den Herunterschaltzustand zu versetzen. Der Herunterschaltzustand ist der niedrigste mögliche Energiezustand, in dem sich ein Gerät befinden kann, außer vollständig ausgeschaltet zu sein. Das Gerät kann durch eines von zwei Ereignissen aufgeweckt werden:

  • Eingang eines Eingangssignals, das den WAKEUP-Pin auslöst.
  • Vergehen eines angegebenen Zeitraums.

Um dieses Feature verwenden zu können, müssen Sie:

  1. Konfigurieren Sie Ihre Hardware.
  2. Deklarieren Sie den ForcePowerDown-Wert für die PowerControls-Funktion im Anwendungsmanifest.
  3. Verwenden Sie PowerManagement_ForceSystemPowerDown aus der Power Management-API .

Herunterschalten des Zustands

Der Zustand "Herunterschalten" weist die folgenden Merkmale auf:

  • Alles wird außer der Echtzeituhr (Real-Time Clock, RTC) ausgeschaltet. Dies bedeutet, dass alle Konnektivität, RAM, Flash, CPU-Kerne usw. ausgeschaltet sind.
  • Es gibt keine Zustandserhaltung. Das Aufwachen aus dem Herunterfahren entspricht einem Kaltstart.
  • Die Aktivierung erfolgt, wenn der Alarm der Echtzeituhr ausgelöst wird (zeitbasierte Aktivierung) oder wenn der WAKEUP-Pin niedrig gezogen wird (ereignisbasierte Aktivierung), je nachdem, was zuerst eintritt.

Hinweis

Das DAA-Zertifikat (Kundenzertifikat) wird dauerhaft gespeichert. Daher stellt ein Gerät nach jedem Kaltstart oder Nachschaltvorgang, der zwischen normalen 24-Stunden-Updates auftritt, keine Verbindung mit AS3 her, um ein neues Zertifikat zu erhalten. Dies reduziert sowohl den Energieverbrauch als auch die Zeit, die für die Verbindung mit der Cloud erforderlich ist.

MT3620-Besonderheiten

Überlegungen zum Herunterschalten von MediaTek MT3620 finden Sie in den MT3620-Hardwarehinweisen.

Erzwingen des Herunterschaltens und Updates

Warnung

Wenn Sie die Anweisungen in diesem Abschnitt nicht befolgen, kann dies dazu führen, dass Ihr Gerät keine Anwendungs- oder Betriebssystemupdates abrufen kann und eine Wiederherstellung erforderlich ist. Bitte lesen Sie sorgfältig, bevor Sie ForcePowerDown verwenden.

Da sowohl ForcePowerDown als auch ForceReboot es einer Anwendung ermöglichen, das Gerät jederzeit herunterzuschalten, liegt es in der Verantwortung dieser Anwendung sicherzustellen, dass das Gerät weiterhin regelmäßig nach Updates suchen kann, wenn ForcePowerDown oder ForceReboot verwendet wird. Um die Suche nach Updates in diesem Szenario zu vereinfachen, haben wir updatebezogene Systemereignisbenachrichtigungen eingeführt, um Anwendungen Informationen zum Updateprozess zu geben, damit Ihre Apps eine fundierte Entscheidung darüber treffen können, wann das Gerät heruntergefahren werden soll. Die relevanten verfügbaren Systemereignisbenachrichtigungen sind:

  • SysEvent_Events_NoUpdateAvailable: Die Updateüberprüfung ist abgeschlossen, und es sind keine Betriebssystem- oder Anwendungsupdates verfügbar.
  • SysEvent_Events_UpdateStarted: Ein Betriebssystem- oder Anwendungsupdate wurde heruntergeladen. Auf dieses Ereignis folgt das SysEvent_Events_UpdateReadyForInstall-Ereignis , wenn das Update vollständig heruntergeladen und zur Installation bereit ist. Wenn kein Update verfügbar ist, werden anstelle dieses Ereignisses SysEvent_Events_NoUpdateAvailable gesendet.
  • SysEvent_Events_UpdateReadyForInstall: Ein Update wurde heruntergeladen und kann beim Neustart angewendet werden.

Anwendungen, die ForcePowerDown verwenden, müssen den Updatestatus des Geräts berücksichtigen. Anwendungen, die ForcePowerDown verwenden, sollten sich immer für diese Ereignisse registrieren und sie berücksichtigen, um sicherzustellen, dass die App nicht dazu führt, dass ein Update auf unbestimmte Zeit verschoben wird.

Wir stellen eine Beispielanwendung bereit, die zeigt, wie Updateüberprüfungen ordnungsgemäß in eine Anwendung integriert werden, die ForcePowerDown verwendet. Es wird dringend empfohlen, mit diesem Beispiel zu beginnen, wenn Sie Apps mit ForcePowerDown entwickeln.

Anwendungsbeendigung

Nachdem eine Einschaltanforderung gestellt wurde, wird ein SIGTERM-Signal an Ihre App gesendet. Wenn Ihre App das Signal verarbeitet, hat sie bis zu 2 Sekunden Zeit, um die Bereinigung zu erledigen. Andernfalls wird die App sofort beendet. Weitere Informationen, einschließlich der ordnungsgemäßen Behandlung des Signals, finden Sie unter App-Beendigung für Update.

Beispielanwendung

Die Power Down-Beispielanwendung zeigt, wie ForcePowerDown ordnungsgemäß verwendet wird, um den Stromverbrauch zu reduzieren und gleichzeitig sicherzustellen, dass das Gerät regelmäßig wach bleibt, um nach Betriebssystem- und App-Updates zu suchen.

In diesem Beispiel blinkt eine led rot, die arbeits- oder "Geschäftslogik" darstellt, die eine App möglicherweise ausführen muss, während das Gerät aktiv ist, und schaltet das Gerät dann für einen bestimmten Zeitraum herunter. Bei jedem N-ten Einschalt-/Aktivierungszyklus hält die App das Gerät länger wach, um nach Updates zu suchen, anstatt nach Abschluss der Geschäftslogik (in diesem Fall die blinkende rote LED) sofort herunterzuschalten. Um sicherzustellen, dass Updates vor dem Herunterschalten abgeschlossen wurden, verwendet die Beispiel-App drei Systemereignisbenachrichtigungen (SysEvent_Events_NoUpdateAvailable, SysEvent_Events_UpdateStarted und SysEvent_Events_UpdateReadyForInstall), die die App über die status der Updateüberprüfung/-download informieren. Die Beispiel-App zeigt auch, wie Sie den aktuellen Verbrauch des RDB messen können, um zu überprüfen, ob das Gerät in den Netzbetrieb wechselt.