Gestire lo stato power down per i dispositivi Azure Sphere

Un'applicazione Azure Sphere di alto livello può usare l'API di gestione del risparmio energia per spostare il dispositivo nello stato Power Down. Lo stato di spegnimento è lo stato di alimentazione più basso possibile in un dispositivo, oltre a essere completamente spento. Il dispositivo può essere svegliato da uno dei due eventi:

  • Arrivo di un segnale di input che attiva il pin WAKEUP.
  • Passaggio di un determinato periodo di tempo.

Per usare questa funzionalità, è necessario:

  1. Configurare l'hardware.
  2. Dichiarare il valore ForcePowerDown per la funzionalità PowerControls nel manifesto dell'applicazione.
  3. Usare PowerManagement_ForceSystemPowerDown dall'API Power Management .

Stato Disacco attivo

Lo stato Disacco attivo ha le caratteristiche seguenti:

  • Tutto è spento tranne l'orologio in tempo reale (RTC). Ciò significa che tutta la connettività, RAM, flash, core della CPU e così via, sono tutti spenti.
  • Non esiste alcuna conservazione dello stato. Riattivarsi da Power Down equivale a un avvio a freddo.
  • La riattivazione dall'alimentazione si verifica quando la sveglia dell'orologio in tempo reale viene eseguita (riattivazione basata sul tempo) o quando il pin WAKEUP viene tirato basso (riattivazione basata su eventi), a seconda di quale evento si verifica per primo.

Nota

Il certificato DAA (cliente) viene archiviato in modo permanente. Di conseguenza, un dispositivo non si connette ad AS3 per un nuovo certificato dopo ogni avvio a freddo o accensione che si verifica tra i normali aggiornamenti di 24 ore. In questo modo si riduce il consumo di energia e il tempo necessario per connettersi al cloud.

Specifiche di MT3620

Le considerazioni relative all'alimentazione di MediaTek MT3620 sono disponibili nelle note hardware di MT3620.MediaTek MT3620 power down considerations are provided in MT3620 hardware notes.

Forzare l'accensione e gli aggiornamenti

Avviso

Se non si seguono le istruzioni in questa sezione, il dispositivo potrebbe non essere in grado di recuperare gli aggiornamenti dell'applicazione o del sistema operativo e richiedere il ripristino. Leggere attentamente prima di usare ForcePowerDown.

Poiché sia ForcePowerDown che ForceReboot consentono a un'applicazione di spegnere il dispositivo in qualsiasi momento, è responsabilità di tale applicazione assicurarsi che il dispositivo sia ancora in grado di controllare periodicamente la disponibilità di aggiornamenti quando si usa ForcePowerDown o ForceReboot. Per semplificare il controllo degli aggiornamenti in questo scenario, abbiamo introdotto notifiche sugli eventi di sistema correlate agli aggiornamenti per fornire alle applicazioni informazioni sul processo di aggiornamento in modo che le app possano prendere decisioni informate su quando spegnere il dispositivo. Le notifiche relative agli eventi di sistema disponibili sono:

  • SysEvent_Events_NoUpdateAvailable: la verifica degli aggiornamenti è terminata e non sono disponibili aggiornamenti del sistema operativo o dell'applicazione.
  • SysEvent_Events_UpdateStarted: è stato avviato il download di un aggiornamento del sistema operativo o dell'applicazione. Questo evento sarà seguito dall'evento SysEvent_Events_UpdateReadyForInstall quando l'aggiornamento sarà completamente scaricato e pronto per l'installazione. Se non è disponibile alcun aggiornamento, verrà inviato SysEvent_Events_NoUpdateAvailable invece di questo evento.
  • SysEvent_Events_UpdateReadyForInstall: il download di un aggiornamento è terminato ed è pronto per essere applicato al riavvio.

Le applicazioni che usano ForcePowerDown devono essere consapevoli dello stato di aggiornamento del dispositivo. Le applicazioni che utilizzano ForcePowerDown devono sempre registrarsi per questi eventi e prestare loro una considerazione per assicurarsi che l'app non causa il rinvio di un aggiornamento a tempo indeterminato.

Viene fornita un'applicazione di esempio che mostra come compilare correttamente i controlli di aggiornamento in un'applicazione che usa ForcePowerDown. È consigliabile iniziare con questo esempio quando si sviluppano app con ForcePowerDown.

Risoluzione della domanda

Dopo aver effettuato una richiesta di accensione, viene inviato un segnale SIGTERM all'app. Se il segnale viene gestito dall'app, il lavoro di pulizia può richiedere fino a 2 secondi. In caso contrario, l'app verrà terminata immediatamente. Per altre informazioni, incluso come gestire correttamente il segnale, vedi Terminazione dell'app per l'aggiornamento.

Applicazione di esempio

L'applicazione di esempio Power Down mostra come usare correttamente ForcePowerDown per ridurre il consumo di energia assicurando al contempo che il dispositivo rimanga periodicamente attivo per controllare la disponibilità di aggiornamenti del sistema operativo e delle app.

Questo esempio lampeggia un LED rosso, che rappresenta il lavoro o la "logica di business" che un'app potrebbe dover fare mentre il dispositivo è attivo, quindi spegne il dispositivo per un determinato periodo di tempo. Ogni ciclo di accensione/riattivazione Nth, l'app manterrà il dispositivo attivo più a lungo per controllare la disponibilità di aggiornamenti invece di spegnersi immediatamente dopo il completamento della logica di business (il LED rosso lampeggiante in questo caso). Per assicurarsi che gli aggiornamenti siano stati completati prima dell'accensione, l'app di esempio usa tre notifiche di eventi di sistema (SysEvent_Events_NoUpdateAvailable, SysEvent_Events_UpdateStarted e SysEvent_Events_UpdateReadyForInstall) che informano l'app dello stato del controllo/download dell'aggiornamento. L'app di esempio mostra anche come misurare il consumo corrente di RDB per verificare che il dispositivo stia immettendo Power Down.