概述
电源管理架构 及 低功耗模式 请参考 低功耗开发指南 相关章节
对 zephyr 支持情况
管理机制:
System-Managed Management 下 device 级别的管理尚未支持
低功耗等级:
PM_STATE_SUSPEND_TO_IDLE:对应时钟门控 (Clock Gating)PM_STATE_SUSPEND_TO_RAM0:对应电源门控 (Power Gating)default:CPU idle(
WFI)
唤醒源支持情况:
Device |
State |
|---|---|
BT_WAKE_HOST |
YES |
CAN |
YES |
SDIO_HOST |
YES |
RMII |
YES |
CAPTOUCH |
YES |
ADC |
YES |
RTC |
YES |
GPIO |
YES |
UART_LOG |
YES |
UART |
YES |
Timer |
YES |
IWDG |
YES |
SDIO_WIFI |
NO |
BT_SCB |
NO |
SDIO_BT |
NO |
AON_WAKEPIN |
NO |
AON_TIM |
NO |
PWR_DOWN |
NO |
USB |
NO |
BOR |
NO |
进入低功耗的策略
zephyr 支持两种进入低功耗的策略:Residency Based 和 Application Defined,参考 Power Management Policies。
我们基于 zephyr 提供的 Residency Based 策略加入了额外的检查逻辑,流程如下:
首先检查 BT/WIFI 等模块允许进入低功耗
然后将
expire ticks与 dts 中预定义的 state 进行比较,驻留时间满足则进入选定的 state,例如如下 state 定义:power-states { pm_cg: pm_cg { compatible = "zephyr,power-state"; power-state-name = "suspend-to-idle"; min-residency-us = <3000>; exit-latency-us = <2000>; }; pm_pg: pm_pg { compatible = "zephyr,power-state"; power-state-name = "suspend-to-ram"; min-residency-us = <5000>; exit-latency-us = <2500>; }; };遍历所有 state,当空闲时间大于
min-residency-us + exit-latency-us即选定该状态,直到不满足为止,详细参考 Residency Based Policy。
休眠唤醒流程
下图中主要是示例了 AP(zephyr OS) 的 flow,AP 休眠前以及唤醒过程中和 NP 核如何协同工作请参考 低功耗开发指南