出于保护的目的,嵌入式系统会实时采集cpu的温度,对本身进行保护,同时我们也可以查看设定的温限的数值,举例(我使用的是OKMX6UL_S2).
1.查看当前cpu温度;
root@fetmx6ull-s:~# cat /sys/class/thermal/thermal_zone0/temp
43820
2.查看当前温限;
cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
95000
cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
105000
3.查看当前频率;
root@fetmx6ull-s:~# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
792000
从上面1,2,3可以看到,当前cpu的温度为 43820 / 1000 =43.8 ℃,当前温限1 = 95 ℃,当前温限2 = 105 ℃,当前频率为 792MHz。
温限1的作用是当cpu的温度超出这个温度后,cpu会降频;
温限2的作用是当cpu的温度超出这个温度的时候,系统会保护,重新启动;
下面我们来做实验。
1)首先要通过上面的方法来验证或者说得到我们的数据,就认为我们得到的数据和上面一样;
2)我想要让cpu降频,那么我们可以让温限1=一个比当前cpu温度更低的值,如
echo 40000 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp
然后通过
cat /sys/devices/virtual/thermal/thermal_zone0/trip_point_0_temp 查看是否设定正确
40000
这个时候查看频率
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
198000
可见当前的频率已经降频到198M了。
3)设定一个超出运行温度的值。
echo 40000 > /sys/devices/virtual/thermal/thermal_zone0/trip_point_1_temp
我们会发现,系统重新启动了
提示,系统温度已经达到46度,关机,这个就是根据这个判定的。
注意:这里的修改 只能本次生效,重新启动后就恢复了,要想永久修改这个值,只能修改设备树,然后替换现有设备树才行,因为系统启动的时候,内核会从设备树中读取数据放到温限的文件中去。这一部分内容我们有时间在学习。
欢迎评论交流,共同进步~