[RK3288][Android6.0] 调试笔记 --- CPU温度降频控制
来源:互联网 发布:php去掉空格 编辑:程序博客网 时间:2024/05/17 20:02
rk3288平台关于温度调节cpu频率有个bug.
在rk3288.dtsi中,有:
temp-limit-enable = <1>;target-temp = <80>;min_temp_limit = <48>;
当温度升到超过80°时,随着温度升高,cpu频率最终会降到min_temp_limit的值,每次降的level按照下表执行
target-temp = <80>; normal-temp-limit = < /* delta-temp delta-freq */ 3 96000 6 144000 9 192000 15 384000 >;
第一列为降低每一级阀值,第二列为降低频率,默认温控开始温度是80°.
例如当前温度是82°,那么不作用,当达到83°时, 温控降频开始有效,假设系统当前要设置1008000KHz,那么经过温控系统之后会减去96000KHz. 如果温度很高,就会一直这样减下去,减到不能低于min_temp_limit为止.
最终影响系统频率的地方是在dvfs_get_limit_rate().
不过原始code中min_temp_limit的单位有问题,应该是KHz.
改动:
kris@eco:~/rk3288/kernel$ g df 15b426e089c6f5091168ab3a0552ac96faa290c1 b3e70eaeda236c57e239ea2c3c24da49304b240fdiff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsiindex e8dd31f..7d8804f 100644--- a/arch/arm/boot/dts/rk3288.dtsi+++ b/arch/arm/boot/dts/rk3288.dtsi@@ -997,7 +997,9 @@ tsadc-ch = <1>; temp-limit-enable = <1>; target-temp = <80>;- min_temp_limit = <48>;+ min_temp_limit = <312000>;
312MHz是rk给的建议频率.
代码使用:
dvfs.c:
读取:
static int dvfs_node_parse_dt(struct device_node *np, struct dvfs_node *dvfs_node){ of_property_read_u32_index(np, "min_temp_limit", 0, &dvfs_node->min_temp_limit); dvfs_node->min_temp_limit *= 1000;}
比较:
static void dvfs_temp_limit_normal(struct dvfs_node *dvfs_node, int temp){ if (arm_rate_step && (dvfs_node->temp_limit_rate > arm_rate_step)) { dvfs_node->temp_limit_rate -= arm_rate_step; printk("temp_limit_rate:%ld\n", dvfs_node->temp_limit_rate); if (dvfs_node->temp_limit_rate < dvfs_node->min_temp_limit) dvfs_node->temp_limit_rate = dvfs_node->min_temp_limit; dvfs_clk_set_rate(dvfs_node, dvfs_node->last_set_rate); dvfs_temp_limit_4k(); }}
阅读全文
1 0
- [RK3288][Android6.0] 调试笔记 --- CPU温度降频控制
- [RK3288][Android6.0] 调试笔记 --- 温度检测中断不会触发
- [RK3288][Android6.0] 调试笔记 --- 让cpu占用率达到100%
- [RK3288][Android6.0] 调试笔记 --- CPU默认调度策略
- [RK3288][Android6.0] 调试笔记 --- CPU使用的频率表
- [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED
- [RK3288][Android6.0] 调试笔记 --- GPU DVFS的控制开关
- [RK3288][Android6.0] 调试笔记 --- 温度对GPU频率的影响
- [RK3288][Android6.0] 调试笔记 --- 调试串口的更换
- [RK3288][Android6.0] 调试笔记 --- 移除锁屏功能
- [RK3288][Android6.0] 调试笔记 --- Su添加密码登陆功能
- [RK3288][Android6.0] 调试笔记 --- 伪电池驱动添加
- [RK3288][Android6.0] 调试笔记 --- 普通串口的添加
- [RK3288][Android6.0] 调试笔记 --- PreviewCallback获取NV12格式数据
- [RK3288][Android6.0] 调试笔记 --- 替换系统签名
- [RK3288][Android6.0] 调试笔记 --- 设置中文为默认输入法
- [RK3288][Android6.0] 调试笔记 --- apk安装添加黑名单
- [RK3288][Android6.0] 调试笔记 --- 实时录音会有呲呲噪音问题
- C# 读取 TXT文件的时候中文乱码解决方法
- weblogic 访问返回401-Unauthorized
- HDU 5862 Counting Intersections(树状数组)
- "没有废物"之前世今生(续)
- 经验分享 | 10 个最基本的JS面试问题及答案
- [RK3288][Android6.0] 调试笔记 --- CPU温度降频控制
- 1144:素数回文
- React native 上传图片遇到的问题
- TCP连接的状态详解以及故障排查
- web.xml里的Servlet和Filter示例
- 第一篇
- tarjan求强连通分量
- Java语言基础小结5
- std::lock_guard 和 std::unique_lock的区别