这里以UDX710为例介绍下展锐平台的温控策略,展锐其他平台也类似。

1. UDX710芯片内部有6颗 Thermal sensor,相关位置信息如表 1-1。

2. 温度读取:
在控制台下通过 cat命令获取每个sensor的温度,各个sensor路径如路径如表1-2。

例如下面命令获取apcpu0的温度,结果为 34.652℃。注意单位为 0.0001℃。

 # cat /sys/class/thermal/thermal_zone1/temp
34652

Senosr name也可能通过命令确认,读取 sensor目录的type节点即可。

# cat /sys/class/thermal/thermal_zone1/type
apcpu0-thmzone

3. 虚拟sensor soc-thmzone
通过软件查看sensor的文件节点,会发现有一个 thermal_zone0,type是 soc-thmzone。soc-thmzone 是 IPA(Intelligent Power Allocation智能功率分配)通过 ap cpu的所有sensor计算出来的一个温度,用来做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。

                soc_thmzone: soc-thmzone {polling-delay-passive = <100>;polling-delay = <1000>;sustainable-power = <1000>;thermal-sensors = <&soc_sensor  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>;  //重启温度适当提高 --> 113hysteresis = <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 2022-----

5.CP侧降温措施
5.1 4G功率回退

5.2 5G功率回退

5.3 5G降速

配置文件thermalSensorsConfig.xml在代码中的路径:
layers/meta-unisoc/recipes-core/thermal/files/udx710-module/thermalSensorsConfig.xml
在设备中的路径: /etc/thermalSensorsConfig.xml
调试时可以直接修改这个文件。由于/etc为只读文件系统,不能直接替换该文件进行调试。可以把配置文件push到 /home/root/ 目录下,需要重启thermal进程,并且设备重新开机后失效,要重新启动thermald。命令如下:

adb push D:\thermalSensorsConfig.xml /home/root/
root@udx710-module:/ # /etc/init.d/thermald-init.sh restart

文件thermalSensorsConfig.xml如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<ThermalConfig><sensor><sensor_type>pa-thmzone</sensor_type><polling_delay>2000</polling_delay><DroPeriod>30000</DroPeriod><AvgPeriod>30000</AvgPeriod><zone_level id="1" type="active"><temp>105000</temp><trip id="0" ><action name="powerback" arg="AT+SPTPPB=0" file="" /></trip><trip id="1" ><action name="powerback" arg="AT+SPTPPB=2" file="" /></trip><trip id="2" ><action name="powerback" arg="AT+SPTPPB=4" file="" /></trip><trip id="3" ><action name="powerback" arg="AT+SPTPPB=6" file="" /></trip><trip id="4" ><action name="powerback" arg="AT+SPTPPB=8" file="" /></trip><trip id="5" ><action name="powerback" arg="AT+SPTPPB=10" file="" /></trip></zone_level></sensor><sensor><sensor_type>pa5g-thmzone</sensor_type><polling_delay>2000</polling_delay><DroPeriod>30000</DroPeriod><AvgPeriod>30000</AvgPeriod><zone_level id="1" type="active"><temp>105000</temp><trip id="0" ><action name="powerback" arg='AT+SP5GCMDS="set nr power_control",0,0' file="" /></trip><trip id="1" ><action name="powerback" arg='AT+SP5GCMDS="set nr power_control",0,2' file="" /></trip><trip id="2" ><action name="powerback" arg='AT+SP5GCMDS="set nr power_control",0,4' file="" /></trip><trip id="3" ><action name="powerback" arg='AT+SP5GCMDS="set nr power_control",0,6' file="" /></trip><trip id="4" ><action name="powerback" arg='AT+SP5GCMDS="set nr power_control",0,8' file="" /></trip><trip id="5" ><action name="powerback" arg='AT+SP5GCMDS="set nr power_control",0,10' file="" /></trip></zone_level></sensor>
</ThermalConfig>

温度上升过程中的执行策略( 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侧策略用到的sensor type是pa-thmzone,pa5g-thmzone。需要在设备树中添加:

&thm_zone {pa_thmzone: pa-thmzone {polling-delay-passive = <0>;polling-delay = <0>;thermal-sensors = <&pa_thermistor>;};pa5g_thmzone: pa5g-thmzone {polling-delay-passive = <0>;polling-delay = <0>;thermal-sensors = <&pa5g_thermistor>;};bd_thmzone: board-thmzone {polling-delay-passive = <0>;polling-delay = <0>;thermal-sensors = <&board_thermistor>;};
};

在控制台下可以读到这几个sensor的名字以及温度:
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中设置的温度,导出yocto.log:
adb pull /mnt/data/yocto.log d:\123.log
检查log中应该有类似如下功率回退的命令:
Mar 9 18:14:55.985 (none) user.info thermald[4100]: do,===>powerback, mArg:AT+SPTPPB=2, mFileNode:
就表示CP侧的策略生效了。

展锐平台的温控策略介绍相关推荐

  1. 【Quectel移远展锐平台5G模组RX500U/RG200U使用指南(一)】

    概述 移远的展锐平台5G模组是基于展锐udx710平台开发的5G模组,在华为被禁,MH5000-31无法继续使用后,这个成了国产5G模组的独苗了. 目前移远出了多款展锐的5G模组,RG500U-CN, ...

  2. 【Quectel移远展锐平台5G模组RX500U/RG200U使用指南(五)-几种工作模式的区别】

    前面介绍过网卡模式和路由模式的使用,接下来就详细介绍下两种方式的使用区别. 网卡模式 网卡模式下,上位机获取的是网络侧分的IP地址,以Windows为例,安装好Windows的驱动程序后,电脑USB接 ...

  3. 展锐平台PIN码输错三次后提醒PUK输入

    要求:不同的卡要记录输入错误此时,指定错误次数后准确提醒输入PUK错误: 问题分析:1.展锐平台提供的SIM卡的认证统计错误次数以及认证后上报错误码,都是通过服务器异步上报的(各自有认证和异步回调的函 ...

  4. 展锐平台userdebug版本关闭ylog

    展锐平台userdebug版本中,把ylog默认关闭,并且不影响休眠. 展锐平台分两部分,上层ylog apk以及ylog进程. ylog apk部分源码在:vendor/sprd/platform/ ...

  5. 展锐平台如何从modem log 中查看终端支持的GEA算法能力

    展锐平台如何从modem log 中查看终端支持的GEA算法能力 可在以下两个message中查看 1.691195-1 14:23:22.922 – – -> ATTACH_REQUEST 0 ...

  6. 展锐平台的camera sensor驱动代码设计解析(2)

    展锐平台的camera sensor驱动代码设计解析(1) 展锐平台的camera sensor驱动代码设计解析(2) 展锐平台的camera sensor驱动代码设计解析(3) Camera驱动的基 ...

  7. 展锐平台 Android 10.0 OTA升级开机Logo

    通过OTA升级更换开机logo图片 展锐部分平台的logo是放在pac包的时候才去更新的.所以只有线刷pac包,才能更新logo,如果我们需要在OTA升级包含开机logo则需要单独修改,以sl8541 ...

  8. 展锐平台 取消蓝牙配对码弹框

    文档说明 适用于 展锐8541E平台 Android 10 代码 取消蓝牙配对码弹框,实现蓝牙自配对 修改方法 /packages/apps/Settings下 diff --git a/src/co ...

  9. [展锐平台]如何配置LTE B41 带宽

    关键词:android LTE B41 平台信息: 平台:SC9863A 内核:linux5.4.161    系统:android/android12 问题: 如何配置LTE B41 带宽 1.关于 ...

最新文章

  1. 简单的批处理命令(一)
  2. How to get pure json data by ajax request
  3. linux系统改ip地址 永久生效,Linux修改IP永久生效
  4. mysql物流管理系统_wuliuwang 物流信息管理系统 ssh2 mysql(Logistics Information Management System) - 下载 - 搜珍网...
  5. 常用的汇编系统功能指令(包含字符功能类,中断终止类)
  6. quartz CronExpression表达式
  7. Objective-C NSSetNSMutableSet以及CountedSet
  8. MapReduce 中的两表 join 几种方案简介
  9. 微软Silverlight 5开发书籍汇总
  10. 用C#实现用免费smtp服务器(GMail)发邮件(转)
  11. TME上市两周年|为2020甜蜜发糖,收获2021的希望
  12. HTML实现复制功能
  13. 计算机硬件基础 试题,计算机硬件基础试题(库)
  14. ## 7.1 奇异值分解SVD和对称矩阵谱分解
  15. Oracle中的SQL函数(全)
  16. Java实现网易企业163邮箱发送邮件
  17. 作为学生,我是怎么半年赚到人生第一个三十万的
  18. 远程oracle 不通,Oracle开放1521端口 telnet不通解决办法
  19. fabs linux头文件,fabs(c语言fabs函数用法求精度)
  20. qq 浏览器 android x86版,qq浏览器安卓版x86

热门文章

  1. 理想、激情、生存———位技术管理人员的20年工作经历和感悟(2)
  2. 使用命令行检测Android内存泄露
  3. 光速不变问题新思考(光速不满足速度叠加原理)
  4. 4W字的Redis面试教程 再不会我可就锤你了
  5. 06 nginx 处理转发其他域的处理 以及 proxy_redirect
  6. 计算机直接制版的优势,计算机直接制版技术.ppt
  7. 三年白干!程序员违反腾讯敬业协议赔97万,返还15.8万;Linux之父家断电六天:内核更新延期;CakePHP 4.2.4发布...
  8. 制作自己的多媒体个性相册(上篇)
  9. python输入秒数输出分钟小时_Python函数将秒到分钟,小时,天问题,怎么解决
  10. element UI-文字提示(el-tooltip)