Freigeben über


Initialisierung und Beendigung

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.

Beim Starten sollte jede Azure Sphere-Anwendung eine Initialisierung ausführen:

  • Registrieren Sie einen SIGTERM-Handler für Beendigungsanforderungen. Das Azure Sphere-Gerätebetriebssystem sendet das SIGTERM-Beendigungssignal, um anzugeben, dass die Anwendung beendet werden muss, am häufigsten, wenn ein Update aussteht, aber auch als Reaktion auf eine Anforderung zum Einschalten eines Geräts. Im Rahmen ihres Initialisierungscodes sollte die Anwendung einen Handler für solche Anforderungen registrieren. Zum Beispiel:

      #include <signal.h>
      ...
      // Register a SIGTERM handler for termination requests
      struct sigaction action;
      memset(&action, 0, sizeof(struct sigaction));
      action.sa_handler = TerminationHandler;
      sigaction(SIGTERM, &action, NULL);
    

    Im Beendigungshandler kann die Anwendung alle erforderlichen Aufgaben beim Herunterfahren ausführen. Beendigungshandler müssen POSIX async-signal-safe sein. Insbesondere dürfen sie keine Aufrufe Log_Debug()enthalten. Die Beispielprogramme werden bei einem Fehler sowie beim Empfang des Beendigungssignals beendet. Daher legen diese Programme einfach einen booleschen Wert im Beendigungshandler fest und führen dann nach dem Verlassen der Hauptschleife Aufgaben für die Bereinigung und das Herunterfahren aus.

  • Initialisieren Sie Handles für GPIO-Peripheriegeräte.

  • Wenn die Anwendung Azure IoT Hub verwendet, stellen Sie eine Verbindung mit dem IoT-Client her und registrieren Rückruffunktionen für IoT-Features wie Nachrichten aus der Cloud an das Gerät, den Gerätezwillingsstatus und direkte Methodenaufrufe.

Bei Beendigung sollte die Anwendung Peripheriegeräte schließen, Handles löschen und zugewiesenen Speicher freigeben. Die Anwendung hat nur zwei Sekunden Zeit, nach Eingang des SIGTERM-Signals zu verlassen; Wenn die Anwendung nicht beendet wurde, sendet das Azure Sphere OS ein SIGKILL-Signal, das die Anwendung sofort beendet. Das SIGKILL-Signal sollte immer vermieden werden. Wenn die Anwendung routinemäßig Aktionen ausführt, die länger als zwei Sekunden dauern können, sollten Sie erwägen, der Anwendung eine verzögerte Aktualisierungsschleife hinzuzufügen. Anwendungen, die das Powerdown-Feature verwenden, sollten alle erforderlichen Bereinigungen ausführen, bevor Sie die Power-Down-APIs aufrufen.