Sdílet prostřednictvím


Inicializace a ukončení

Důležité

Toto je dokumentace k Azure Sphere (starší verze). Azure Sphere (starší verze) se vyřazuje 27. září 2027 a uživatelé musí do této doby migrovat do Azure Sphere (integrované). K zobrazení dokumentace k Azure Sphere (integrované) použijte selektor verzí umístěný nad obsahem.

Při spuštění by každá aplikace Azure Sphere měla provést určitou inicializaci:

  • Zaregistrujte obslužnou rutinu SIGTERM pro žádosti o ukončení. Operační systém zařízení Azure Sphere odešle signál ukončení SIGTERM, který indikuje, že aplikace se musí ukončit, nejčastěji při čekání na aktualizaci, ale také v reakci na žádost o vypnutí zařízení. V rámci inicializačního kódu by aplikace měla pro tyto požadavky zaregistrovat obslužnou rutinu. Příklad:

      #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);
    

    V obslužné rutině ukončení může aplikace provádět jakékoli úlohy vypnutí, které vyžaduje. Obslužné rutiny ukončení musí být poSIX async-signal-safe. Zejména nesmí obsahovat volání .Log_Debug() Ukázkové programy se ukončí při chybě i při přijetí signálu ukončení. Proto tyto programy jednoduše nastavují logickou hodnotu v obslužné rutině ukončení a potom provádějí úlohy čištění a vypnutí po ukončení hlavní smyčky.

  • Inicializovat úchyty pro periferní zařízení GPIO.

  • Pokud aplikace používá Azure IoT Hub, připojte se k klientovi IoT a zaregistrujte funkce zpětného volání pro funkce IoT, jako jsou zprávy typu cloud-zařízení, stav dvojčete zařízení a volání přímých metod.

Při ukončení by aplikace měla zavřít periferní zařízení, zničit popisovače a uvolnit přidělenou paměť. Aplikace má pouze dvě sekundy na ukončení po přijetí signálu SIGTERM; pokud aplikace nebyla ukončena, operační systém Azure Sphere odešle signál SIGKILL, který aplikaci okamžitě ukončí. Signál SIGKILL by se měl vždy vyhnout. Pokud aplikace pravidelně provádí akce, které by mohly trvat déle než dvě sekundy, zvažte přidání odložené smyčky aktualizace do aplikace. Aplikace, které používají funkci Powerdown, by měly před voláním rozhraní API pro vypnutí provést potřebné vyčištění.