Linux 在消费电子领域的应用已经相当普遍,而对于消费电子产品而言,省电是一个重要的议题。
Linux 电源管理非常复杂,牵扯到系统级的待机、频率电压变换、系统空闲时的处理以及每个设备驱动对系统待机的支持和每个设备的运行时(Runtime)电源管理,可以说它和系统中的每个设备驱动都息息相关。
对于消费电子产品来说,电源管理相当重要。因此,这部分工作往往在开发周期中占据相当大的比重,下图呈现了 Linux 内核电源管理的整体架构。大体可以归纳为如下几类:
1)CPU 在运行时根据系统负载进行动态电压和频率变换的 CPUFreq。
2)CPU 在系统空闲时根据空闲的情况进行低功耗模式的 CPUIdle。
3)多核系统下 CPU 的热插拔支持。
4)系统和设备针对延迟的特别需求而提出申请的 PM QoS,它会作用于 CPUIdle 的具体策略。
5)设备驱动针对系统挂起到 RAM/硬盘 的一系列入口函数。
6)SoC 进入挂起状态、SDRAM 自刷新的入口。
7)设备的运行时动态电源管理,根据使用情况动态开关设备。
8)底层的时钟、稳压器、频率/电压表(OPP模块完成)支撑,各驱动子系统都可能用到。