管理 Azure 球體裝置的 Power Down 狀態

高階 Azure 球體應用程式可以使用電源管理 API 將裝置置於 Power Down 狀態。 [電源向下] 狀態是裝置在完全關閉電源以外的最低電力狀態。 裝置可以藉由兩個事件之一喚醒:

  • 出現觸發 WAKEUP PIN 碼的輸入訊號。
  • 指定時間的段落。

若要使用此功能,您必須:

  1. 設定您的硬體。
  2. 應用程式資訊清單中宣告PowerControls功能的 ForcePowerDown 值。
  3. 使用Power Management API PowerManagement_ForceSystemPowerDown

電源向下鍵狀態

Power Down 狀態具有下列特性:

  • 除了系統時鐘 (RTC) 外,所有專案都已關閉。 這表示所有連線、RAM、flash、CPU 核心等等都已關閉。
  • 沒有保留狀態。 從 Power Down 喚醒相當於冷開機。
  • 從 Power Down 喚醒會在系統時鐘鬧鐘 (以時間為基礎的喚醒) 啟動,或是從事件型喚醒) (取 [喚醒] 圖釘時,以時間為基礎的喚醒) ,以何者為先發生。

注意

DAA (客戶) 憑證會持續儲存。 因此,每次在一般 24 小時更新之間進行冷開機或電源關閉之後,裝置不會連線至 AS3 以取得新憑證。 這會降低耗電量和連線到雲端所需的時間。

MT3620 特定專案

MediaTek MT3620 Power Down 考慮事項會在 MT3620 硬體筆記中提供。

強制電源向下和更新

警告

若未遵循本節中的指引,可能會導致您的裝置無法擷取應用程式或作業系統更新,而需要修復。 使用 ForcePowerDown 之前,請仔細閱讀。

由於 ForcePowerDown 和 ForceReboot 都允許應用程式隨時關閉裝置電源,因此應用程式有責任確保裝置在使用 ForcePowerDown 或 ForceReboot 時仍可定期檢查更新。 為了讓在此案例中更輕鬆地檢查更新,我們引進了與更新相關的系統事件通知,以提供應用程式更新程式的相關資訊,讓您的應用程式能夠在何時關閉裝置電源時做出明智的決策。 相關可用的系統事件通知為:

  • SysEvent_Events_NoUpdateAvailable:更新檢查已完成,沒有可用的作業系統或應用程式更新。
  • SysEvent_Events_UpdateStarted:作業系統或應用程式更新已開始下載。 當更新完全下載並可供安裝時,此事件之後會接 SysEvent_Events_UpdateReadyForInstall 事件。 如果沒有可用的更新, 系統會傳送SysEvent_Events_NoUpdateAvailable ,而不是此事件。
  • SysEvent_Events_UpdateReadyForInstall:更新已完成下載,並準備好在重新開機時套用。

使用 ForcePowerDown 的應用程式必須留意裝置的更新狀態。 使用 ForcePowerDown 的應用程式應一律註冊這些事件並留意,以確保應用程式不會造成更新無限期延後。

我們提供 範例應用程式 ,示範如何在使用 ForcePowerDown 的應用程式中正確建立更新檢查。 強烈建議您在使用 ForcePowerDown 開發應用程式時,先從此範例開始。

應用程式終止

提出 Power Down 要求之後,系統會傳送 SIGTERM 訊號給您的應用程式。 如果您的應用程式處理訊號,最多有 2 秒鐘的時間可以執行清理工作。 否則,應用程式將會立即終止。 如需詳細資訊,包括如何正確處理訊號,請參閱 應用程式終止以進行更新

範例應用程式

Power Down 範例應用程式示範如何正確使用 ForcePowerDown 降低耗電量,同時仍然確保裝置會定期保持喚醒狀態,以檢查作業系統和應用程式更新。

此範例會閃爍 LED 紅色,代表應用程式在裝置處於喚醒狀態時可能需要執行的工作或「商務邏輯」,然後在指定的時間內將裝置向下移動。 每隔 Nth Power Down/wake cycle,應用程式會讓裝置保持喚醒狀態更久,以檢查更新,而不是在完成商務邏輯之後立即關閉電源, (在此情況下閃爍的紅色 LED) 。 為了確保更新在關閉之前已完成,範例應用程式會使用三個 系統事件通知 (SysEvent_Events_NoUpdateAvailable、SysEvent_Events_UpdateStarted和SysEvent_Events_UpdateReadyForInstall) ,通知應用程式有關更新檢查/下載的狀態。 範例應用程式也會顯示如何測量 RDB 目前的使用量,以驗證裝置正在輸入 Power Down。