- RK CPU调试技巧
- 2、CPU温度
- 查看CPU工作温度
- 3、CPU电压
- 查看CPU工作电压
- 设置CPU工作电压
- 查看CPU频率电压表
- 4、CPU频率
- 查看CPU频率
- 设置CPU定频
- 查看CPU频率的最大最小值
- 查看CPU调频策略
- CPU调频策略说明
- 内核配置CPU调频策略
- CPU频率设备节点详细说明
-
Android5.1
$ cat /sys/class/hwmon/hwmon0/device/temp1_input
-
Android7.1
$ cat /sys/class/thermal/thermal_zone0/temp
-
Android8.1 / Android9.0 / Android10.0 / Android11.0
$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
$ cat /sys/kernel/debug/regulator/vdd_cpu_l/voltage //CPU小核 $ cat /sys/kernel/debug/regulator/vdd_cpu_b/voltage //CPU大核设置CPU工作电压
$ echo 1250000 > /sys/kernel/debug/regulator/vdd_cpu_l/voltage //CPU小核 $ echo 1250000 > /sys/kernel/debug/regulator/vdd_cpu_b/voltage //CPU大核
查看CPU频率电压表电压单位:uV
$ cat /sys/kernel/debug/opp/oppsummary
device rate(Hz) target(uV) min(uV) max(uV)
-------------------------------------------------------------------
cpu0 408000000 950000 950000 1350000
600000000 950000 950000 1350000
816000000 1000000 1000000 1350000
1008000000 1125000 1125000 1350000
1200000000 1275000 1275000 1350000
1248000000 1300000 1300000 1350000
1296000000 1350000 1350000 1350000
1416000000 1350000 1350000 1350000
1512000000 1350000 1350000 1350000
4、CPU频率
查看CPU频率
- 方法一
$ cat /sys/devices/system/cpu/cpufreq/policy4/cpuinfo_cur_freq //大核 $ cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq //小核
- 方法二
$ cat /sys/devices/system/cpu/cpu4/cpufreq/scaling_cur_freq //大核 $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq //小核
- 方法三
$ cat /proc/cpuinfo | grep MHz设置CPU定频
- 方法一:命令行临时设置(重启失效)
$ echo userspace > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor //设置小核自定义频率 $ echo 1200000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed //设置小核频率 $ echo userspace > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor //设置大核自定义频率 $ echo 1600000 > /sys/devices/system/cpu/cpufreq/policy4/scaling_setspeed //设置大核频率
-
方法二:配置DTS
DTS中查找到CPU频率表,注释或disabled对应的频率
cpu0_opp_table: cpu0-opp-table {
compatible = "operating-points-v2";
opp-shared;
opp-408000000 {
opp-hz = /bits/ 64 <408000000>;
opp-microvolt = <950000 950000 1340000>;
clock-latency-ns = <40000>;
opp-suspend;
status = "disabled";
};
opp-600000000 {
opp-hz = /bits/ 64 <600000000>;
opp-microvolt = <950000 950000 1340000>;
clock-latency-ns = <40000>;
status = "disabled";
};
};
- 方法三:内核修改CPU调频策略
Default CPUFreq governor配置项,选择变频策略查看CPU频率的最大最小值
$ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq //最大值 $ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq //最小值查看CPU调频策略
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorCPU调频策略说明
-
conservative(保守模式)
根据CPU负载动态调频,按⼀定的⽐例平滑的升⾼或降低频率
-
ondemand(随需应变)
根据CPU负载动态调频,调频幅度⽐较⼤,可直接调到最⾼频或最低频
-
interactive(交互模式)
根据CPU负载动态调频,相⽐ondemand,响应时间更快,可配置参数更多,更灵活
-
userspace(用户模式)
提供相应接口供⽤⼾态应⽤程序调整频率
-
powersave(节能模式)
功耗优先,始终将频率设置在最低值
-
performance(性能模式)
性能优先,始终将频率设置为最⾼值
-
schedutil
EAS使⽤governor。EAS(Energy Aware Scheduling)是新⼀代的任务调度策略, 结合CPUFreq和CPUIdle的策略
在为某个任务选择运⾏CPU时, 同时考虑了性能和功耗,保证了系统能耗最低,并且不会对性能造成影响
Schedutil调度策略就是专⻔给EAS使⽤的CPU调频策略
默认调频策略Default CPUFreq governor
CPU Power Management >
CPU Frequency scaling --->
[*] CPU Frequency scaling
<*> CPU frequency translation statistics
[ ] CPU frequency translation statistics details
[*] CPU frequency time-in-state statistics
Default CPUFreq governor (interactive) --->
<*> 'performance' governor
<*> 'powersave' governor
<*> 'userspace' governor for userspace frequency scaling
<*> 'ondemand' cpufreq policy governor
-*- 'interactive' cpufreq policy governor
<*> 'conservative' cpufreq governor
[ ] 'schedutil' cpufreq policy governor
*** CPU frequency scaling drivers ***
<*> Generic DT based cpufreq driver
< > Generic ARM big LITTLE CPUfreq driver
<*> Rockchip CPUfreq driver
CPU频率设备节点详细说明
- 全志平台
$ ls /sys/devices/system/cpu/cpu0/cpufreq/
cpuinfo_min_freq: 该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)
cpuinfo_max_freq: 该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)
cpuinfo_transition_latency: 该文件定义了处理器在两个不同频率之间切换时所需要的时间 (单位: 纳秒)
scaling_driver: 该文件显示该CPU正在使用何种cpufreq driver
scaling_available_governors: 该文件显示当前内核中支持的所有cpufreq governor类型
scaling_governor: 通过echo命令,能够改变当前处理器的governor类型
cpuinfo_cur_freq: 当前cpu正在运行的工作频率
scaling_available_frequencies: 所有支持的主频率列表 (单位: 千赫兹)
scaling_min_freq/scaling_max_freq: 显示当前policy的上下限 (单位: 千赫兹)
需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freq
affected_cpus: 需要软件协调频率的CPU列表
related_cpus: 需要软件或者硬件来协调频率的CPU列表
scaling_driver: cpufreq控制的硬件驱动
scaling_cur_freq: 被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率
bios_limit: 如果BIOS告知操作系统限制某一cpu到一个低频率,用户能够从此文件中读取其所支持的最大频率。
scaling_setspeed: 如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。
只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。
- 瑞芯微平台
$ ls /sys/devices/system/cpu/cpufreq/policy0/
related_cpus
affected_cpus
cpuinfo_transition_latency
cpuinfo_max_freq
cpuinfo_min_freq
cpuinfo_cur_freq
scaling_available_frequencies
scaling_available_governors
scaling_governor
scaling_cur_freq
scaling_max_freq
scaling_min_freq
scaling_setspeed
stats/time_in_state
stats/total_trans
stats/trans_table



