2023年12月9日发(作者:旧书不厌百回读的下一句)
展锐平台的温控策略介绍
这里以UDX710为例介绍下展锐平台的温控策略,展锐其他平台也类似。
1. UDX710芯片内部有6颗 Thermal nsor,相关位置信息如表 1-1。 2. 温度读取: 在控制台下通过 cat命令获取每个的温度,各个
nsor路径如路径如表1-2。 例如下面命令获取apcpu0的温度,结果为 34.652℃。注意单位为 0.0001℃。
1
2
# cat /sys/class/thermal/thermal_zone1/temp
34652
Senosr name也可能通过命令确认,读取 nsor目录的type节点即可。
1
2
# cat /sys/class/thermal/thermal_zone1/type
apcpu0-thmzone
3. 虚拟nsor soc-thmzone 通过软件查看nsor的文件节点,会发现有一个 thermal_zone0,type是 soc-thmzone。soc-thmzone
是 IPA(Intelligent Power Allocation智能功率分配)通过 ap cpu的所有nsor计算出来的一个温度,用来做cpu温控的。
4. AP温控措施 AP侧的温控主要是控制cpu,软件上使用的是IPA策略,根据目标控制温度以PID(Proportional Integral Derivative比例
积分微分)算法来降频拔核。 除此之外还有高温关机。 详细控制温度如表 2-1。 AP侧没有在xml中配置相关策略,而是直接使用dts中默
认的配置。 以dts的如下配置为例,70度(soc_threshold下的temperature = <70000>)是ipa的switch_on_temp, 85度(soc_target下
的temperature = <85000>)是control_temp。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
soc_thmzone: soc-thmzone {
polling-delay-passive = <100>;
polling-delay = <1000>;
sustainable-power = <1000>;
thermal-nsors = <&soc_nsor 17>;
trips {
soc_threshold: trip-point@0 {
temperature = <70000>; //IPA
开启温度
hysteresis = <1000>;
type = "passive";
};
soc_target: trip-point@1 {
temperature = <85000>; //IPA
控制温度
hysteresis = <1000>;
type = "passive";
};
soc_crit: soc_crit {
temperature = <113000>; //
重启温度适当提高
--> 113
hysteresis = <2000>;
type = "critical";
};
};
……
}
验证在85°C以上会降频的:
temp: cpu0-89430 nrcp-91570 cpu1-88811
freq: cpu0-1352000 1-1352000
Time : -----Wed Mar 9 18:45:56 CST 2022-----
temp: cpu0-90710 nrcp-92865 cpu1-90106
freq: cpu0-768000 1-768000
Time : -----Wed Mar 9 18:45:59 CST 2022-----
temp: cpu0-90710 nrcp-92347 cpu1-90106
freq: cpu0-768000 1-768000
Time : -----Wed Mar 9 18:46:02 CST 侧降温措施 5.1 4G功率回退 5.2 5G功率回退 5.3 5G降速 配置文件在代码中的路径: layers/meta-
unisoc/recipes-core/thermal/files/udx710-module/ 在设备中的路径:
/etc/ 调试时可以直接修改这个文件。由于/etc为只读文件系统,不能直接替换该文件进行调试。可以把配置
文件push到 /home/root/ 目录下,需要重启thermal进程,并且设备重新开机后失效,要重新启动thermald。命令如下:
adb push D: /home/root/
root@udx710-module:/ # /etc/init.d/ restart
文件如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
温度上升过程中的执行策略( Action):1. 在同一个 Level 里,如果这次的温度大于等于这个 Level 的温度,则跳到该 Level 里的下一个 Trip。
2. 如果当前 Trip 已经是该 Level 的最后一个 Trip,并且温度小于下一个 Level 的温度,则没有变化。
3. 如果当前 Trip 已经是该 Level 的最后一个 Trip,并且温度大于等于下一个 Level 的温度,则跳到下一个Level 的第一个Trip。
温度下降过程中的执行策略( Action):
1. 在同一个 Level 里,如果这次的温度小于这个 Level 的温度,则跳到该 Level 里的前一个 Trip。
2. 如果当前 Trip 已经是该 Level 的第一个 Trip,并且温度小于该 Level 的温度,则跳到前一个 Level 的 最后一个 Trip。
CP侧策略用到的nsor type是pa-thmzone,pa5g-thmzone。需要在设备树中添加:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
&thm_zone {
pa_thmzone: pa-thmzone {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-nsors = <&pa_thermistor>;
};
pa5g_thmzone: pa5g-thmzone {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-nsors = <&pa5g_thermistor>;
};
bd_thmzone: board-thmzone {
polling-delay-passive = <0>;
polling-delay = <0>;
thermal-nsors = <&board_thermistor>;
};
};
在控制台下可以读到这几个nsor的名字以及温度:
cat /sys/class/thermal/thermal_zone7/type
pa-thmzone
cat /sys/class/thermal/thermal_zone8/type
pa5g-thmzone
cat /sys/class/thermal/thermal_zone9/type
board-thmzone
cat /sys/class/thermal/thermal_zone7/temp
30126
验证cp侧温控策略可以用风枪给模块加热,让其温度达到xml中设置的温度,导出:
adb pull /mnt/data/ d:
检查log中应该有类似如下功率回退的命令:
Mar 9 18:14:55.985 (none) thermald[4100]: do,===>powerback, mArg:AT+SPTPPB=2, mFileNode: 就表示CP侧的
策略生效了。
本文发布于:2023-12-09 21:25:33,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/88/40379.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:展锐平台的温控策略介绍.doc
本文 PDF 下载地址:展锐平台的温控策略介绍.pdf
留言与评论(共有 0 条评论) |