4. 电压域概念:PMIC、稳压器、电压调节、DVFS、电压域在DTS中的描述
电压域(Voltage Domain)是嵌入式电源管理中最核心的抽象概念之一。它并非物理上的单一电源轨,而是指一组共享同一可调电压源的逻辑或物理模块集合。理解电压域,是进行DTS时钟与电压协同优化的前提。
核心认知: 电压域 = 电源轨 + 负载设备 + 电压调节策略。DTS中的电压域描述,本质上是将硬件电源树映射为设备节点间的依赖关系。
4.1 电压域的基本构成要素
一个完整的电压域由以下三个层次构成:
- 电源供给层(PMIC & Regulator): 提供原始电压的硬件单元,如PMIC(Power Management IC)的BUCK、LDO输出,或外部稳压器。
- 电压调节层(Voltage Regulation): 通过PWM、PFM或线性调节方式,动态调整输出电压值。
- 负载设备层(Consumer Devices): 挂载在该电压域上的SoC内部模块(CPU簇、GPU、DDR控制器、外设总线等)。
4.2 PMIC与稳压器在DTS中的描述
在DTS中,PMIC和稳压器被抽象为regulator节点。每个regulator节点代表一个独立的电压输出通道。
4.2.1 典型PMIC节点结构
/* PMIC主节点 */
&pmic {
compatible = "mediatek,mt6359p-regulator";
interrupt-parent = &pio;
interrupts = <145 IRQ_TYPE_LEVEL_LOW>;
/* 子节点:每个regulator代表一个电压域输出 */
mt6359p_vcore_reg: mt6359p_vcore {
regulator-name = "vcore";
regulator-min-microvolt = <500000>; /* 0.5V */
regulator-max-microvolt = <1300000>; /* 1.3V */
regulator-always-on;
regulator-boot-on;
regulator-ramp-delay = <6250>; /* 6.25mV/us */
};
mt6359p_vmodem_reg: mt6359p_vmodem {
regulator-name = "vmodem";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1100000>;
regulator-always-on;
regulator-boot-on;
};
};
优化要点:
regulator-ramp-delay 直接影响电压切换时间。在初始化阶段,如果多个外设依次请求不同电压,ramp-delay会成为初始化瓶颈。适当减小该值(需硬件支持)可缩短外设初始化时间。
4.3 电压调节与DVFS机制
DVFS(Dynamic Voltage and Frequency Scaling) 是电压域优化的核心策略。它根据负载动态调整电压和频率,在保证性能的同时降低功耗。
| 调节模式 | 触发条件 | 电压变化速度 | 适用场景 |
|---|---|---|---|
| 静态电压调节 | 系统启动时固定 | 无变化 | 低功耗待机、RTC域 |
| 动态电压调节(DVS) | 软件主动请求 | 中等(~10us) | 外设初始化、模式切换 |
| 自适应电压调节(AVS) | 硬件自动检测 | 快速(~1us) | CPU/GPU运行中调压 |
| DVFS(频率+电压协同) | 负载变化/温度变化 | 协同调节 | 性能-功耗平衡 |
4.4 电压域在DTS中的完整描述
一个完整的电压域描述,需要将电源供给、负载设备和电压策略三者通过DTS属性关联起来。
4.4.1 电压域描述三要素
- 定义regulator供给节点: 在PMIC节点下声明每个电压域的输出能力(电压范围、电流限制、调节延迟)。
- 定义负载设备的电源需求: 在设备节点中通过
cpu-supply、vdd-supply等属性引用对应的regulator。 - 定义电压与频率的映射关系: 通过
operating-points-v2表,将频率点与电压值绑定。
/* 1. 定义CPU簇的电压域 */
cpu0: cpu@0 {
compatible = "arm,cortex-a55";
reg = <0x0 0x0>;
device_type = "cpu";
/* 引用vcore regulator */
cpu-supply = <&mt6359p_vcore_reg>;
/* 引用DVFS OPP表 */
operating-points-v2 = <&cpu_opp_table>;
};
/* 2. 定义OPP表(电压-频率映射) */
cpu_opp_table: opp-table-0 {
compatible = "operating-points-v2";
opp-shared;
opp-1000000000 {
opp-hz = /bits/ 64 <1000000000>; /* 1.0 GHz */
opp-microvolt = <750000>; /* 0.75V */
opp-level = <1>;
};
opp-1500000000 {
opp-hz = /bits/ 64 <1500000000>; /* 1.5 GHz */
opp-microvolt = <900000>; /* 0.90V */
opp-level = <2>;
};
opp-2000000000 {
opp-hz = /bits/ 64 <2000000000>; /* 2.0 GHz */
opp-microvolt = <1050000>; /* 1.05V */
opp-level = <3>;
};
};
常见配置陷阱:
- 电压域冲突: 多个设备共享同一regulator时,如果请求不同电压,会导致PMIC频繁切换,增加初始化延迟。解决方案:将初始化阶段电压需求一致的设备分组到同一电压域。
- OPP表缺失: 如果设备节点引用了
operating-points-v2但未定义对应表,内核会使用默认保守电压,导致性能下降。 - ramp-delay过大: 默认ramp-delay可能为10ms级别,对于需要快速初始化的外设(如eMMC、USB3.0),应检查硬件手册并适当减小。
4.5 电压域优化对外设初始化时间的影响
外设初始化过程中,电压域的稳定时间是一个关键延迟因素。以下表格展示了不同电压域配置下的初始化时间对比:
| 优化策略 | 默认配置 | 优化配置 | 初始化时间节省 |
|---|---|---|---|
| ramp-delay调整 | 10000 us | 6250 us | 37.5% |
| 预置目标电压 | 逐级升压(3步) | 一步到位 | 60% |
| 电压域合并 | 3个独立域 | 1个共享域 | 50% |
| AVS使能 | 固定电压 | 自适应调节 | 20%(减少过冲等待) |
实战建议: 在DTS优化过程中,优先检查以下三个电压域参数:
1.
2.
3.
1.
regulator-ramp-delay —— 决定电压切换速度。2.
regulator-min-microvolt 与 regulator-max-microvolt —— 决定电压域的可调范围。3.
opp-microvolt 在OPP表中的精度 —— 决定DVFS的调节粒度。
4.6 本章小结
电压域是连接硬件电源管理与DTS软件配置的桥梁。通过本章学习,你应该掌握:
- 电压域的三层架构:PMIC供给 → 电压调节 → 负载设备。
- 如何在DTS中正确描述regulator节点和consumer节点的关联。
- DVFS的工作流程及其在DTS中的OPP表配置方法。
- 电压域优化对外设初始化时间的直接影响,以及具体的优化参数调整策略。