你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

嵌入式系统之温限使用

2022/1/2 0:15:47

出于保护的目的,嵌入式系统会实时采集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度,关机,这个就是根据这个判定的。

注意:这里的修改 只能本次生效,重新启动后就恢复了,要想永久修改这个值,只能修改设备树,然后替换现有设备树才行,因为系统启动的时候,内核会从设备树中读取数据放到温限的文件中去。这一部分内容我们有时间在学习。

欢迎评论交流,共同进步~