Linux内核学习25--LinuxPM(TODO)
1 简介
还是以树莓派为例子来看吧。。。
用户空间(vcgencmd、sysfs、thermal、cpufreq)
↑
Linux标准电源管理框架 (cpufreq / cpuidle / runtime‑PM / suspend‑resume / thermal)
↑
DA9091 PMIC I2C底层驱动、regulator电源轨驱动
↑
设备树dts电源节点、I2C硬件总线
↑
DA9091 硬件寄存器
之前写过,树莓派5用的是定制的DA9091。属于 MFD(Multi‑Function Device)多功能芯片驱动架构。包含:
drivers/mfd/da9091.c //MFD多功能复合芯片主驱动
drivers/regulator/da9091‑regulator.c //8路电源调压驱动
drivers/hwmon/da9091‑hwmon.c //ADC电压电流温度传感器
drivers/rtc/da9091‑rtc.c //板载RTC驱动
drivers/watchdog/da9091‑wdt.c //硬件看门狗
drivers/input/da9091‑powerkey.c //电源按键中断驱动
这里的核心是Regulator电源轨驱动。
2 LinuxPM
包含Suspend、cpufreq、cpuidle、Runtime‑PM、Regulator。
1 系统休眠 / 唤醒(System‑wide PM) 整机挂起:Suspend‑to‑RAM、待机、休眠、关机;所有设备统一挂起,CPU 停机。
对应接口:
/sys/power/state
2 Runtime‑PM 设备运行时电源管理 系统正常运行、用户空间还在跑;单个外设闲置就单独断电,不需要整机休眠。 NVMe、USB、HDMI、PCIe‑RP1 全部靠它控制电源轨。
3 CPU 调频 cpufreq 调整 CPU 主频、核心电压(对接 DA9091 regulator)
4 CPU 空闲管理 cpuidle CPU 无事进入 WFI、深度空闲时钟关闭
5 Thermal 温控子系统 温度过高降频、开启风扇、电源节流
第 1 阶段:Linux Suspend/Resume
↓
第 2 阶段:Runtime PM
↓
第 3 阶段:GPIO/IRQ Wakeup
↓
第 4 阶段:I2C/SPI/UART 外设 suspend/resume
↓
第 5 阶段:regulator / clock / pinctrl
↓
第 6 阶段:功耗测量 + trace/ftrace
↓
Qualcomm RB5
↓
PMIC / RPMh / genpd / 电源域
“Raspberry Pi Linux PM Lab:自己写一个 platform driver,实现 Runtime PM + System Suspend/Resume + GPIO Wakeup,然后用 ftrace 把完整 PM 时序抓出来。”
I2C/SPI 做“休眠后无法通信”
System Suspend
│
↓
device suspend
│
↓
Runtime PM
│
↓
genpd
│
┌──────┴──────┐
↓ ↓
clock regulator
│ │
└──────┬──────┘
↓
power off
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)