RV1126B System Monitor 机制说明
System Monitor 是 Rockchip 内核中的全局策略管理器:读取温度与系统状态,并对 CPU、NPU、DDR 等设备施加限频、调压或 CPU 上下线策略。它不是温度传感器,也不替代 Thermal 的硬件过温保护。
作用
- 按温度表限制 NPU、CPU 等 Devfreq 设备的最高频率。
- 根据休眠、视频、性能、重启等系统状态更新设备的 QoS 限制。
- 在 DTS 配置支持时,执行低温调压、CPU 上下线和 DDR tREFI 调整。
NPU 温控链路
TSADC 温度
-> cpu-thermal
-> rockchip-system-monitor
-> 已注册的 NPU
-> temp-freq-table
-> NPU Devfreq 最大频率 QoS
NPU 驱动初始化后注册到 System Monitor。System Monitor 沿 NPU 节点的 operating-points-v2 引用找到 npu_opp_table,读取其中的 rockchip,temp-freq-table。
rockchip,temp-freq-table = <
70000 600000
75000 510000
80000 396000
>;
上表表示:温度超过 70°C、75°C、80°C 时,NPU 最大频率依次限制为 600 MHz、510 MHz、396 MHz。温度值单位是 m°C,频率单位是 kHz;源码使用严格大于判断,因此温度正好到达阈值时不会立即进入下一档。
管理方式
System Monitor 设置的是 NPU Devfreq 的最大频率 QoS,不是直接锁定当前频率。因此:
- 低于第一档时,不施加该温度表限制,NPU 可按负载升频。
- 超过阈值时,NPU 不能超过对应上限,但空闲时仍可更低。
- 降温后会解除或放宽限制;降温路径有约 2°C 的变化门限,以减小频率反复跳变。
temp-freq-table 与 Linux Thermal 的 cooling-maps 是两条独立路径。因此 cool1 保持为 0 不代表温度表未生效;应以 NPU 实际频率是否被限制为准。
关键位置
- System Monitor DTS 节点:
kernel-6.1/arch/arm64/boot/dts/rockchip/rv1126b.dtsi - System Monitor 驱动:
kernel-6.1/drivers/soc/rockchip/rockchip_system_monitor.c - NPU Devfreq 注册与调频:
kernel-6.1/drivers/rknpu/rknpu_devfreq.c
运行时可查看:
cat /sys/class/devfreq/22000000.npu/cur_freq
cat /sys/class/devfreq/22000000.npu/available_frequencies