管理 Azure Sphere 设备的掉电状态

重要

这是 Azure Sphere(旧版)文档。 Azure Sphere(旧版)将于 2027 年 9 月 27 日停用,用户此时必须迁移到 Azure Sphere(集成)。 使用位于 TOC 上方的版本选择器查看 Azure Sphere(集成)文档。

高级 Azure Sphere 应用程序可以使用电源管理 API 将设备置于“掉电”状态。 “掉电”状态是指除完全关机外,设备可能处于的最低电源状态。 此设备可由以下两个事件中的任一个唤醒:

  • 收到触发 WAKEUP 引脚的输入信号。
  • 超过指定时间。

要使用此功能,必须满足以下条件:

  1. 配置硬件。
  2. 应用程序清单中声明 PowerControls 功能的 ForcePowerDown 值
  3. 使用电源管理 API 中的“PowerManagement_ForceSystemPowerDown”

掉电状态

掉电状态具有以下特征:

  • 除实时时钟 (RTC) 外,所有设备均已关闭。 这意味着所有连接、RAM、闪存、CPU 内核等都处于关闭状态。
  • 没有保留任何状态。 从掉电状态唤醒相当于冷启动。
  • 触发实时时钟警报时或唤醒引脚拉低时都会发生从掉电状态唤醒(以先发生者为准),前者属于基于时间的唤醒,后者属于基于事件的唤醒。

注意

DAA(客户)证书持久存储。 因此,在正常 24 小时更新之间发生的每次冷启动或关闭后,设备不会连接到 AS3 以获取新证书。 这减少了电源消耗和连接到云所需的时间。

MT3620 详细信息

MT3620 硬件说明中提供了 MediaTek MT3620 掉电注意事项。

强制掉电和更新

警告

如果未遵循此部分中的指导,可能会导致设备无法获取应用程序或 OS 更新,并且需要恢复。 使用 ForcePowerDown 之前,请仔细阅读。

由于 ForcePowerDown 和 ForceReboot 都允许应用程序在任何时候关闭设备电源,因此该应用程序有责任确保设备在使用 ForcePowerDown 或 ForceReboot 时仍能定期检查更新。 为了在这种情况下更容易检查更新,我们引入了与更新相关的系统事件通知,以向应用程序提供有关更新过程的信息,这样应用程序便可对何时关闭设备做出明智决策。 相关的可用系统事件通知包括:

  • SysEvent_Events_NoUpdateAvailable:更新检查已完成,没有可用的 OS 或应用程序更新。
  • SysEvent_Events_UpdateStarted:OS 或应用程序更新已开始下载。 当更新已完全下载并可供安装时,此事件之后将是 SysEvent\u UpdateReadyForInstall 事件。 如果没有可用的更新,则将发送 SysEvent_Events_no update available,而不是此事件
  • SysEvent_Events_UpdateReadyForInstall:更新已完成下载,并已准备好在重新启动时应用。

使用 ForcePowerDown 的应用程序需要注意设备的更新状态。 使用 ForcePowerDown 的应用程序应始终注册这些事件,并注意这些事件,以确保应用不会导致更新无限期推迟。

我们提供了一个示例应用程序,演示如何将更新检查正确构建到使用 ForcePowerDown 的应用程序中。 强烈建议你在使用 ForcePowerDown 开发应用程序时从此示例开始。

应用程序终止

发出 Power Down 请求后,SIGTERM 信号将发送到应用。 如果应用处理该信号,则最多有 2 秒钟的时间来执行清理工作。 否则,应用将立即终止。 有关详细信息,包括如何正确处理信号,请参阅更新的应用终止

示例应用程序

掉电示例应用程序演示如何正确使用 ForcePowerDown 来降低功耗,同时确保设备定期保持唤醒状态以检查 OS 和应用更新。

此示例闪烁 LED 红灯,表示设备处于唤醒状态时应用可能需要执行的操作或业务逻辑,然后关闭一段指定时间的设备电源。 每 n 次掉电/唤醒周期,应用都会使设备的唤醒时间延长,以检查更新,而不是在业务逻辑完成后立即关闭电源(在这种情况下,闪烁红色 LED 指示灯)。 为了确保在掉电前已完成更新,该示例应用使用三个系统事件通知(SysEvent_Events_NoUpdateAvailable、SysEvent_UpdateStarted 和 SysEvent_UpdateReadyForInstall),通知应用有关更新检查/下载的状态。 示例应用还演示了如何测量 RDB 的电流消耗,以验证设备是否正在进入掉电状态。