Gerenciar o estado de desativação de dispositivos Azure Sphere
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).
Um aplicativo de Azure Sphere de alto nível pode usar a API de gerenciamento de energia para colocar o dispositivo no estado de desativação. O estado de desativação é o menor estado de energia possível em que um dispositivo pode estar, com exceção de estar totalmente desligado. O dispositivo pode ser ativado por um de dois eventos:
- Chegada de um sinal de entrada que dispara o pino de WAKEUP.
- Passagem de um período de tempo especificado.
Para usar esse recurso, você precisa:
- Configurar seu hardware.
- Confira as seções Requisitos de energia do RTC e as Considerações sobre a desativação das Notas de hardware do MT3620 para considerações gerais sobre o design de hardware.
- Confira as seções Fonte de energia e Modo de desativação do Guia do usuário do MT3620 RDB para ver como configurar o hardware RDB para o modo de Desativação.
- Declare o valor ForcePowerDown para a funcionalidade PowerControls no manifesto do aplicativo.
- Use PowerManagement_ForceSystemPowerDown da API de gerenciamento de energia.
Estado de desativação
O estado de desativação tem as seguintes características:
- Tudo é desligado, exceto o RTC (relógio em tempo real). Isso significa que todas as conectividades, RAM, flash, núcleos de CPU e assim por diante estão todos desligados.
- Não há preservação de estado. A ativação partindo do estado de desativação é equivalente a uma inicialização a frio.
- A ativação partindo do estado de desativação ocorre quando o alarme de relógio em tempo real é acionado (ativação baseada em tempo) ou quando o pino de WAKEUP é pressionado (ativação baseada em evento), o que ocorrer primeiro.
Observação
O certificado DAA (cliente) é armazenado persistentemente. Como resultado, um dispositivo não se conecta ao AS3 para um novo certificado após cada inicialização a frio ou desligamento que ocorre entre as atualizações normais de 24 horas. Isso reduz o consumo de energia e o tempo necessário para se conectar à nuvem.
Especificações MT3620
As considerações sobre desativação do MediaTek MT3620 são fornecidas nas Notas de hardware do MT3620.
Forçar a desativação e as atualizações
Aviso
Falha em seguir as diretrizes nesta seção poderá fazer com que o dispositivo não consiga buscar atualizações do aplicativo ou do SO e exija recuperação. Leia atentamente antes de usar ForcePowerDown.
Como ForcePowerDown e ForceReboot permitem que um aplicativo desligue o dispositivo a qualquer momento, torna-se responsabilidade desse aplicativo garantir que o dispositivo ainda possa verificar periodicamente se há atualizações ao usar ForcePowerDown ou ForceReboot. Para facilitar a verificação de atualizações nesse cenário, apresentamos notificações de eventos do sistema relacionadas à atualização para fornecer informações sobre o processo de atualização aos aplicativos, para que eles possam tomar uma decisão informada sobre quando desativar o dispositivo. As notificações de eventos do sistema disponíveis relevantes são:
- SysEvent_Events_NoUpdateAvailable: A verificação de atualização foi concluída e nenhuma atualização do sistema operacional ou do aplicativo está disponível.
- SysEvent_Events_UpdateStarted: Uma atualização do sistema operacional ou do aplicativo começou a ser baixada. Esse evento será seguido pelo evento SysEvent_Events_UpdateReadyForInstall quando a atualização for baixada totalmente e estiver pronta para instalação. Se nenhuma atualização estiver disponível, SysEvent_Events_NoUpdateAvailable será enviado em vez desse evento.
- SysEvent_Events_UpdateReadyForInstall: O download de uma atualização foi concluída e está pronto para ser aplicado na reinicialização.
Os aplicativos que usam ForcePowerDown precisam estar atentos ao estado de atualização do dispositivo. Os aplicativos que usam ForcePowerDown devem sempre se registrar para esses eventos e prestar atenção a eles para assegurar que o aplicativo não faça com que uma atualização seja adiada indefinidamente.
Fornecemos um aplicativo de exemplo que demonstra como criar corretamente verificações de atualização em um aplicativo que usa ForcePowerDown. É altamente recomendável que você comece com este exemplo ao desenvolver aplicativos com ForcePowerDown.
Encerramento do aplicativo
Depois que uma solicitação de desligamento é feita, um sinal SIGTERM é enviado ao seu aplicativo. Se o aplicativo manipula o sinal, ele tem até dois segundos para fazer o trabalho de limpeza. Caso contrário, o aplicativo será encerrado imediatamente. Para obter mais informações, incluindo como lidar corretamente com o sinal, confira encerramento do aplicativo para atualização.
Aplicativo de exemplo
O aplicativo de exemplo de desativação demonstra como usar corretamente o ForcePowerDown para reduzir o consumo de energia e, ao mesmo tempo, garantir que o dispositivo permaneça atualizado periodicamente para verificar se há atualizações do SO e do aplicativo.
Este exemplo pisca um LED vermelho, representando trabalho ou "lógica de negócios" que um aplicativo pode precisar executar enquanto o dispositivo está ativo e, em seguida, desativa o dispositivo por um período de tempo especificado. A cada enésimo ciclo de desativação/ativação, o aplicativo manterá o dispositivo ativo por mais tempo para verificar se há atualizações em vez de desativar imediatamente após a conclusão da lógica de negócios (com o LED vermelho piscando, nesse caso). Para garantir que as atualizações sejam concluídas antes de desligar, o aplicativo de exemplo usa três notificações de eventos do sistema (SysEvent_Events_NoUpdateAvailable, SysEvent_Events_UpdateStarted e SysEvent_Events_UpdateReadyForInstall) que informam ao aplicativo sobre o status da verificação e do download da atualização. O aplicativo de exemplo também mostra como medir o consumo atual do RDB para validar que o dispositivo está entrando no modo de desativação.