rk3368 CPU动态调频与温度保护
Platform: RK3368
OS: Android 6.0
Kernel: 3.10.0
rk3368采用cpufreq进行CPU频率调节,但同时又做了过温保护和温度限制频率。
1. 过温保护
驱动位于kernel/drivers/thermal/rockchip_thermal.c
dts定义:
tsadc: tsadc@ff280000 {
compatible = "rockchip,rk3368-tsadc";
reg = <0x0 0xff280000 0x0 0x100>;
interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk_tsadc>, <&clk_gates20 0>;
rockchip,grf = <&grf>;
rockchip,cru = <&cru>;
rockchip,pmu = <&pmu>;
clock-names = "tsadc", "apb_pclk";
clock-frequency = <32000>;
resets = <&reset RK3368_SRST_TSADC_P>;
reset-names = "tsadc-apb";
//pinctrl-names = "default";
//pinctrl-0 = <&tsadc_int>;
#thermal-sensor-cells = <1>;
hw-shut-temp = <120000>;
status = "disabled";
};
可以看到当前hw-shut-temp = <120000>;也就是温度大于120度就会触发过温保护,强制关机。
查看当前CPU温度:
#cat /sys/rockchip_thermal/temp
CPU动态调频(DVFS)
Linux内部共有五种对频率的管理策略userspace,conservative,ondemand,powersave 和 performance.可以根据负载进行频率提升和降低。
查看支持的governors
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative ondemand userspace powersave interactive performance
DVFS的dts定义:
dvfs {
vd_arm: vd_arm {
regulator_name = "vdd_arm";
suspend_volt = <1000>; //mV
pd_core {
clk_core_b_dvfs_table: clk_core_b {
operating-points = <
/* KHz uV */
312000 1200000
504000 1200000
816000 1200000
1008000 1200000
>;
status = "okay";
cluster = <0>;
temp-limit-enable = <1>;
target-temp = <80>;
min_temp_limit = <216000>;
normal-temp-limit = <
/*delta-temp delta-freq*/
3 96000
6 144000
9 192000
15 384000
>;
performance-temp-limit = <
/*temp freq*/
100 816000
>;
lkg_adjust_volt_en = <1>;
channel = <0>;
tsadc-ch = <0>;
def_table_lkg = <25>;
min_adjust_freq = <216000>;
lkg_adjust_volt_table = <
/*lkg(mA) volt(uV)*/
0 25000
>;
pvtm_min_temp = <25>;
};
clk_core_l_dvfs_table: clk_core_l {
operating-points = <
/* KHz uV */
312000 1200000
504000 1200000
816000 1200000
1008000 1200000
>;
status = "okay";
cluster = <1>;
temp-limit-enable = <1>;
target-temp = <80>;
min_temp_limit = <216000>;
normal-temp-limit = <
/*delta-temp delta-freq*/
3 96000
6 144000
9 192000
15 384000
>;
performance-temp-limit = <
/*temp freq*/
100 816000
>;
lkg_adjust_volt_en = <1>;
channel = <0>;
tsadc-ch = <0>;
def_table_lkg = <25>;
min_adjust_freq = <216000>;
lkg_adjust_volt_table = <
/*lkg(mA) volt(uV)*/
0 25000
>;
pvtm_min_temp = <25>;
};
};
};
可以看到里面定义了大核和小核的两种限制模式,normal-temp-limit和performance-temp-limit。performance模式中,当温度高于80则频率限制在816000。而在normal模式中,则是每当温度上升delta-temp,则频率降低delta-freq,直到降到min_temp_limit为止。
实现代码位于:
arch/arm/mach-rockchip/dvfs.c
驱动初始化了一个工作队列dvfs_temp_limit_work_func,每隔HZ/10执行一次。主要任务是根据当前温度对temp_limit_rate进行修改。从而让dvfs_get_limit_rate返回的是限频的值。
系统默认为normal模式,在init.rc中写入的:
# set temperature control policy as normal mode
write /sys/module/rockchip_pm/parameters/policy 1
查看及修改当前电源策略:
# cat /sys/module/rockchip_pm/parameters/policy
# echo "1">/sys/module/rockchip_pm/parameters/policy
rk3368 CPU动态调频与温度保护相关推荐
- CPU动态调频二:interactive governor
Linux提供了多种governor供用户选择,这里以interactive为例,毕竟现在的android手机中都是采用该governor. 基于linux 3.14 以下代码若未指明位置则默认在dr ...
- linux动态调频响应时间,CPU动态调频(linux 3.14.0)一
最近做了一个关于CPU动态调频的project,边工作边学习,在此记录一下. code版本:3.14.0(在linxu目录顶层Makefile中可看到版本号) 设备:基于安卓4.4原生系统的某厂商的手 ...
- 初探Linux CPU动态调频与实测
关于 本文主要涉及Linux CPUFreq子系统是什么,为什么需要,怎么用. 并解决在实际测试中遇到的三个问题: scaling_governor没有userspace的问题. /proc/cpui ...
- linux CPU动态调频【转】
转自:https://www.xuebuyuan.com/2185926.html 针对sep4020的linux低功耗研究也有一段时间了,基本把低功耗的实现方式想清楚了(主要分成机制和策略),这段时 ...
- linux CPU动态调频
针对 sep4020的 linux低功耗研究也有一段时间了,基本把低功耗的实现方式想清楚了(主要分成机制和策略),这段时间的工作主要在机制上.暂时想实现的主要的机制有: cpu级,设备驱动级,系统平台 ...
- 【interactive governor】CPU动态调频:
#!/usr/bin/bash # interactive(互动)是目前最常用的调速器, CPU 频率是根据负载实现交互式反应, # ondemand(一经请求) # conserative(保守) ...
- CPU动态调频三:interactive governor如何选频
choose_freq函数用来选频,使选频后的系统workload小于或等于target load. 核心思想是:选择最小的频率来满足target load. 影响选频结果的因素有两个: 1.两次统计 ...
- iTOP-4418开发板支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计...
iTOP-4418开发板 支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计 核心板320PIN全引出,16G存储高配版本,核心板4418/6818全兼容,并跨行业大量应用 系 ...
- android 系统gpu 调试_基于Android系统的GPU动态调频方案 | Imagination中文技术社区
针对移动终端上GPU的高功耗问题,提出一种基于Android系统的GPU动态调频方案.方案根据各种应用对GPU的性能需求,引入了GPU的频率一性能模型,包括选择工作频率和测量相对性能的方法.动态调频算 ...
最新文章
- html如何超链接到servlet
- 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第3章-局部指数稳定的多欧拉-拉格朗日系统协同控制
- 图论相关算法理解和总结
- php 自定义菜单 openid,微信公众平台开发(99) 自定义菜单获取OpenID
- 优化android studio编译的apk大小
- Excel与DataGridView的操作示例
- 5步带你掌握工作流Activiti框架的使用
- VB 字符串续行符最多25行…………
- 102份深圳炒房材料曝光 网友举报千人炒房大会
- oracle应用程序开发,关于Oracle 数据库应用程序开发问题
- html中使用js实现福彩双色球随机选号
- Rhino(犀牛)室内模型导入Unity3d快速烘焙光影【2020】
- 服务器虚拟机声卡无法加载,Esxi虚拟机添加声卡
- java action例子_实例——创建ActionForm Bean
- win7网络不显示共享计算机,Win7电脑已开启共享却找不到设备 局域网显示空白该怎么解决...
- 【方向盘】启动命令和IDEA如何传递:VM参数、命令行参数、系统参数、环境变量参数、main方法参数
- sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表
- java中环境变量设置
- python课程知识点总结(循环结构~列表)(0基础学习,后持续更新)
- 棋牌服务器的租用选择