为什么要有温控
温控 或者又叫 温保(温度保护)方案在所有的电子产品上基本都存在,因为不可避免设备在恶劣环境下工作,为了能够最大限度保护元器件使用寿命,引入了温控的功能。
在高温时降低自身发热,无法抑制温度上升时,断电停止工作。
在低温时维持功率,无法抑制时,停止工作。
高温温控方案
低温时软件能做的事情较少,所以我们主要从高温的场景来为大家介绍一下高通的温控机制实现。
高通的温控方案实现主要分三部分
- 内核的sensor温度监控
- 应用层的温度策略处理
- modem或CPU等cooling device的实际动作
在硬件上,一般会有在SOC内部的sensor及外挂在board上的sensor。SOC内部的sensor通常使用中断的方式来向内核驱动报告温度变化,外挂的sensor一般采用ADC,软件来轮询检测温度变化。
相关处理流程
在流程上,整个温控方案也可以分为三个部分
-
在开机引导时 如SBL uboot等,启动高低温检测,此时需要检测环境温度是否适宜工作,如果超出所设置的范围,则不应继续引导,需走关机流程。
-
系统启动后,内核运行thermal驱动,启动温度的监控、上报,读取dts中的配置,进行sys节点的创建等。
如下图:
-
应用层thermal进程启动,解析系统中的配置文件(配置文件是整个温控策略的体现,需根据项目需求整体评估),将温度阈值通过sys节点传入内核,将需要执行的action及action info保存;当温度达到阈值时,内核驱动将事件上报给应用层,thermal进程获取到事件后去判断-执行相应的action,如果是APPS相关的策略,就在AP侧执行(如CPU降频 拔核等),如果是modem相关的策略,通过QMI传给modem,由modem启动相关策略(如降速、降功率、断开网络等)。
温度缓解策略介绍
AP侧的cooling action主要为对CPU的频率、核数进行限制,减少CPU的发热。 在温度到达一个极限值时,触发软件关机。
CP侧的cooling action一般有降速、降功率、掉网等
-
降速:实现会有上行 和 下行两种限制,上行的限制一般通过上报虚假的较小的缓冲区与基站协商小的带宽,下行的限制则为取消载波聚合、减少RX等。(注意:限速一般是采用步进式,随着温度的升高,限制速率越来越低,会分几个等级。但是如果限制的最低速率特别低的话可能会导致数据业务断开,所以对于需要保持数据业务连接的场景,尽量取一个合理的最小速率)
-
降功率:设置PA的功率回退,同样为步进式,随着温度升高,功率回退越多。
-
掉网:断开网络,仅限紧急呼叫。
具体应该在什么温度的时候做什么样的操作,需要由项目、使用场景等进行评估。
调试方法
高通平台通过
cat /var/log/messages | grep thermal
可以查看thermal应用层的日志
cat /sys/class/thermal/thermal_zone9/temp
可以查看相应sensor的温度
此处的thermal_zone() 是由内核通过读DTS的配置创建出来的,而具体某个thermal_zone对应的是哪个sensor,需要从DTS的配置中查看。
当然也可以自己创建thermal_zone,可以与已有的thermal_zone监听同一个sensor,完成自己的一些功能。