Compartilhar via


Inicialização e encerramento

Importante

Esta é a documentação do Azure Sphere (herdado). O Azure Sphere (herdado) será desativado em 27 de setembro de 2027 e os usuários devem migrar para o Azure Sphere (integrado) até esse momento. Use o seletor de versão localizado acima do sumário para exibir a documentação do Azure Sphere (Integrado).

Na inicialização, cada aplicativo do Azure Sphere deve executar alguma inicialização:

  • Registre um manipulador SIGTERM para solicitações de encerramento. O sistema operacional do dispositivo do Azure Sphere envia o sinal de encerramento SIGTERM para indicar que esse aplicativo deve sair, com mais frequência quando uma atualização está pendente, mas também em resposta a uma solicitação de desligamento do dispositivo. Como parte do código de inicialização, o aplicativo deve registrar um manipulador para essas solicitações. Por exemplo:

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

    No manipulador de encerramento, o aplicativo pode executar todas as tarefas de desligamento que ele exige. Manipuladores de encerramento devem ser POSIX async-sinal-safe. Em particular, eles não devem conter chamadas para Log_Debug(). Os programas de exemplo saem quando ocorrem erros, bem como quando recebem o sinal de encerramento. Portanto, esses programas simplesmente definem um valor booliano no manipulador de encerramento e então executam tarefas de limpeza e desligamento depois de saírem do loop principal.

  • Inicialize os identificadores para periféricos GPIO.

  • Se o aplicativo usa o Hub IoT do Azure, conecte-se ao cliente de IoT e registre as funções de retorno de chamada para recursos de IoT, como mensagens da nuvem para dispositivo, o status do dispositivo gêmeo e chamadas de método direto.

No encerramento, o aplicativo deve fechar periféricos, destruir identificadores e liberar a memória alocada. O aplicativo tem apenas dois segundos para sair após o recebimento do sinal SIGTERM; se o aplicativo não tiver sido encerrado, o sistema operacional do Azure Sphere enviará um sinal SIGKILL que encerrará imediatamente o aplicativo. O sinal SIGKILL deve sempre ser evitado. Se o aplicativo executar rotineiramente ações que podem levar mais de dois segundos para serem concluídas, considere adicionar um loop de atualização adiado ao aplicativo. Os aplicativos que usam o recurso Powerdown devem fazer a limpeza necessária antes de chamar as APIs de desligamento.