Gerenciar o estado de desligamento para dispositivos do Azure Sphere
Importante
Esta é a documentação do Azure Sphere (Legado). O Azure Sphere (Legado) 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 Azure Sphere de alto nível pode usar a API de gerenciamento de energia para colocar o dispositivo no estado de desligamento. O estado de desligamento é o estado de energia mais baixo possível em que um dispositivo pode estar, além de estar totalmente desligado. O dispositivo pode ser acordado por qualquer um dos dois eventos:
- Chegada de um sinal de entrada acionando o pino WAKEUP.
- Passagem de um período de tempo especificado.
Para usar esse recurso, você deve:
- Configure o seu hardware.
- Consulte as seções Requisitos de energia RTC e Considerações sobre desligamento das Notas de hardware MT3620 para obter considerações gerais sobre design de hardware.
- Consulte as seções Fonte de alimentação e Modo de desligamento do guia do usuário RDB MT3620 para ver como configurar o hardware RDB para o modo de desligamento.
- Declare o valor ForcePowerDown para o recurso PowerControls no manifesto do aplicativo.
- Use PowerManagement_ForceSystemPowerDown da API de Gerenciamento de Energia.
Estado de desligamento
O estado de desligamento tem as seguintes características:
- Tudo está desligado, exceto o relógio em tempo real (RTC). Isso significa que toda a conectividade, RAM, flash, núcleos de CPU e assim por diante, estão todos desligados.
- Não há preservação do Estado. Acordar de Power Down é equivalente a uma inicialização fria.
- Wake from Power Down ocorre quando o alarme do relógio em tempo real dispara (despertar baseado no tempo) ou quando o pino WAKEUP é puxado para baixo (despertar baseado em eventos), o que ocorrer primeiro.
Nota
O certificado DAA (cliente) é armazenado persistentemente. Como resultado, um dispositivo não se conecta ao AS3 para obter um novo certificado após cada inicialização a frio ou desligamento que ocorre entre atualizações normais de 24 horas. Isso reduz o consumo de energia e o tempo necessário para se conectar à nuvem.
Especificações do MT3620
As considerações sobre o desligamento do MediaTek MT3620 são fornecidas nas notas de hardware do MT3620.
Forçar desligamento e atualizações
Aviso
O não cumprimento das orientações nesta seção pode resultar na impossibilidade de o dispositivo buscar atualizações de aplicativos ou do sistema operacional e exigir recuperação. Por favor, leia atentamente antes de usar ForcePowerDown.
Como o ForcePowerDown e o ForceReboot permitem que um aplicativo desligue o dispositivo a qualquer momento, torna-se responsabilidade desse aplicativo garantir que o dispositivo ainda seja capaz de verificar periodicamente se há atualizações ao usar o ForcePowerDown ou o ForceReboot. Para facilitar a verificação de atualizações nesse cenário, introduzimos notificações de eventos do sistema relacionadas a atualizações para fornecer aos aplicativos informações sobre o processo de atualização para que seus aplicativos possam tomar uma decisão informada sobre quando desligar o dispositivo. As notificações de eventos do sistema relevantes disponíveis 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: Foi iniciada a transferência de uma atualização do SO ou da aplicação. Este evento será seguido pelo evento SysEvent_Events_UpdateReadyForInstall quando a atualização estiver totalmente baixada e pronta para instalação. Se nenhuma atualização estiver disponível, SysEvent_Events_NoUpdateAvailable será enviada em vez deste evento.
- SysEvent_Events_UpdateReadyForInstall: O download de uma atualização foi concluído 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 atendê-los para garantir que o aplicativo não faça com que uma atualização seja adiada indefinidamente.
Fornecemos um aplicativo de exemplo que demonstra como compilar 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.
Rescisão do pedido
Depois que uma solicitação de desligamento é feita, um sinal SIGTERM é enviado para seu aplicativo. Se o seu aplicativo lida com o sinal, ele tem até 2 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, consulte Encerramento do aplicativo para atualização.
Aplicação de exemplo
O aplicativo de exemplo Power Down demonstra como usar corretamente o ForcePowerDown para reduzir o consumo de energia e, ao mesmo tempo, garantir que o dispositivo permaneça periodicamente acordado para verificar se há atualizações do sistema operacional e do aplicativo.
Este exemplo pisca um LED vermelho, representando o trabalho ou a "lógica de negócios" que um aplicativo pode precisar fazer enquanto o dispositivo está acordado e, em seguida, desliga o dispositivo por um período de tempo especificado. A cada Nono ciclo de desligamento/despertar, o aplicativo manterá o dispositivo acordado por mais tempo para verificar se há atualizações, em vez de desligar imediatamente após a conclusão da lógica de negócios (o LED vermelho piscando neste caso). Para garantir que as atualizações foram 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 o aplicativo sobre o status da verificação/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 em Desligamento.