发布时间:2025-12-10 19:17:52 浏览次数:3
MSM8225 thermal设计「终于解决」点击打开链接1、概述1.1、Thermal综述笼统的讲,thermal是指移动终端电路板上的温度。Thermal的数值应当维持在合理的温度范围之内,过高的温度会影响用户的使用体验,更高的温度甚至会损坏设备。通过实际应用,发现了thermal一些潜在的问题,提高了thermal管理的必要性:市场对功能丰富的设备的需求提高了对温度的敏感度;丰富的多媒体功能,例如MiFi、多核GHz的处理器、图形处理器
点击打开链接
笼统的讲,thermal是指移动终端电路板上的温度。Thermal的数值应当维持在合理的温度范围之内,过高的温度会影响用户的使用体验,更高的温度甚至会损坏设备。通过实际应用,发现了thermal一些潜在的问题,提高了thermal管理的必要性:
市场对功能丰富的设备的需求提高了对温度的敏感度;
丰富的多媒体功能,例如MiFi、多核GHz的处理器、图形处理器、高清视频等,增加了散热;
更小更薄的PCB设计,集中了功率密度;
小外形设备里面的功率放大器温度容易达到很高;
启用数据传输速率更高的UL,往往会造成较高的发射功率,导致更多的散热;
触摸设备的外壳温度可能会引起客户的关注;
芯片级的温度必须保持低于指定的限制;
印刷电路板上面的嵌入式设备暴露在较高的环境温度和受限制的冷却设施,形成了一个更严重的热环境。
热设计(thermaldesign)的目标是为了提高产品的可靠性。良好的硬件热设计和基于软件的thermal管理方案可以使手机温度保持在可被用户接受的水平。
为了限制thermal对设备的不良影响,采用下面的物理设计和布局技术很有必要:
在产品设计和开发阶段进行热分析;
研究设备功率和热预算从而定位发热点;
在设备的机械结构中采用高效的thermal管理方法;
确保功率放大器放在热量容易消散的位置;
随着印刷电路板内的热路径广泛使用热通孔是必要的;
确保在确保在MSM/MDM附近以及电路板的对面没有其他大型电源散热组件。
强烈建议在工业设计中使用散热技术。
Thermal设计的目标是:
保护元件免于超过热设计极限,如果超出限制,设备性能将会降低,甚至会损坏器件;
确保体验者在使用或者携带时候触摸温度不会太高;
电源限制约束的风险降到最低;
管理并发操作时候的热风险;
允许有限的客户自定义温度阈值和降低功耗的方法。
为了妥善管理设备的thermal情景,必须从不同的热活性点测量温度。它是通过已经存在于该芯片组传感器和将热敏电阻放置在热活性点来实现。
首选的传感器位置如下所列。每个传感器可以被高通芯片内的ADC(HKADC)读取。
1、靠近功率放大器的热敏电阻器。功率放大器是导致设备温度上升的主要器件。
2、MSMs/MDMs中的热敏电阻或者内部传感器。较大处理器(AP或者modem处理器)的使用趋向于增加此类组件产生的热量。
3、独立的第三方组件。如果使用外部的发热元件,比如使用第三方AP的设计,应该放置热敏电阻。
4、TCXO热敏电阻。在极端热环境下,TCXO往往最容易受到加热,这可能会导致丢失呼叫和较差的性能。感知这种情况,将有助于调用thermal算法。
5、其他位置,比如battery、PMIC等。
高通公司建议将热敏电阻放置在温度活跃器件附近。
Thermal管理算法(ThermalManagementAlgorithm)提供一个安全策略,防止用户的移动设备损坏。要做到这一点,有必要降低功耗以使温度保持在可接受的水平。该算法仔细检测设备的关键温度并在modem和AP层设置合适的处理措施。
关键因素 | 热影响 | 描述 | 开发阶段 | 责任人 | |
研发 | QCT | ||||
机械散热设计 | ~70% | 散热的机械设计是必需的。 | 概念/模拟阶段 | Yes | No |
增加散热材料 | ~20% | 添加散热材料 | 模拟/验证阶段 | Yes | No |
软件管理 | ~10% | 需要保持热限制 | 验证阶段 | Yes | No |
表格1Thermal管理的关键因素
Thermal管理算法包括三种状态:
a)正常状态:被动的温度监控;
b)缓解状态:降低性能(应用处理器将运行在较低的时钟速率);
c)应急状态:强制关闭手机,以防止损坏。
该算法根据设备的温度判断设备属于何种状态。Thermal管理算法的工作方式如下:
a)如果测量温度<阈值温度,在正常状态下运行;
b)如果测得的温度>阈值温度,进入缓解状态;
c)如果温度恢复到滞后阈值(threshold-hysteresis)以下,恢复到正常状态;
d)如果温度>紧急阈值,关闭设备。
设计thermal管理算法需要符合以下条件:
a)采用温度传感器获取thermal温度数据;
b)在thermald.conf文件中设置阈值值。
阈值数据应该由手机的温度曲线决定,不同的阈值,系统的动作如下:
正常 | 较高 | 严重 | 危急 | |
CPU频率 | 整个频率范围 | 性能最高的频率除外 | 中高性能的频率除外 | 最高实用频率上限 |
显示强度 | 默认强度 | 上限为90% | 上限为75% | 上限为50% |
电池充电 | 完整充电 | 涓流充电 | 不充电 | 不充电 |
表格2系统的动作
MSM8x25采用如图1所示硬件设计。MSM8x25添加了一个板上热敏电阻,通过ADC驱动从该热敏电阻读取电路板温度数据,然后传递给thermal算法(thermalalgorithm)。
图表1MSM_THERMschematic
图表2I380WMSM_THERMschematic
如图3所示,Thermal管理软件包括3个主要模块:thermaldaemon、传感器输入(sensorinputs)以及thermal管理设备(thermalmanagementdevices)。此外,在boot和kernel初始化中采用算法管理thermal性能。
图表3LAthermalsoftwarearchitecture
Thermaldaemon是一个运行在LinuxAndroid用户层的超级用户程序,是thermal软件的控制核心。传感器输入(Sensorinput)用来作为读取的温度,数据来自PMIC_THERM或者MSM_THERM,这些数据从DALRPC或者从ONCRPC接口读取,ONCRPC接口与ADC驱动通信。Thermal管理设备(thermalmanagementdevices)是监听thermaldaemon的软件组件。当系统过热时,thermaldaemon发送event到thermal管理设备以设置设备性能到一个预先设定的水平。
ThermalDaemon(ThermalD)主要用来完成两项功能:监测温度和管理控制设备。
该daemon监测thermal/temperature的传感器数据,并根据thermald.conf配置文件(默认是/etc/thermald.conf)执行动作。在初始化阶段,ThermalD读取一个包含所有传感器和阈值数据的配置文件。如果超过温度阈值,ThermalD发送event到thermal管理设备。总体而言,设备管理接口划分为几个管理等级。典型地,将设备设置为4级,比如Level0是正常操作;Level1是管理的第一级。
(1)ThermalD生成
ThermalD对应的可执行文件是thermald,由vendor/qcom/proprietary/thermal/下的代码编译生成,存放在设备路径system/bin/thermald。
(2)ThermalD执行过程
图表4定义ThermalDservice
图表5启动ThermalD程序
图表6ThermalD处理流程
MSM8x25提供两种读取温度数据的方法供选择:HKADC从PMIC片上热敏电阻读取和通过ADC读取外部热敏电阻来检测MSM的运行温度。HKADC是PM8029芯片内部的一个硬件模块,提供读到的模拟数据。
软件设计上,MSM8x25相应有两个thermal缓解解决方案,这两种解决方案是互斥的:
a)PMIC热敏电阻:使用DALRPC。
b)MSM热敏电阻:外部热敏电阻,使用ONCRPC。
可以通过检查adc_null来查看ONCRPC是否可用,如果ONCRPC可用,则检查MSM热敏电阻是否工作,并最终从ONCRPC读取thermal温度;如果ONCRPC不可用,则从PMIC获取thermal温度数据。
HKADC是PM8029芯片内部的一个硬件模块,用来读取PMIC模拟输入。如图所示,在MSM8x25参考设计中有一个片上PMIC热敏电阻。从该热敏电阻读取的数据通过HKADC驱动传递到thermal算法(thermalalgorithm),HKADC驱动采用PMIC_THERMDALRPC。
图表7MSM8x25PMIC_THERMschematic
如图所示的逻辑电路必须添加一个板上热敏电阻(on-boardthermistor)来实现。从该热敏电阻读取的数据通过ADC驱动传递给thermal算法(thermalalgorithm),ADC驱动采用PMIC_THERMONCRPC。
图表8MSM_THERMschematic
Thermal管理设备(ThermalManagementDevices,***)是软件实体,用来降低系统硬件模块的整体功耗,从而降低热负荷。
Thermal配置文件配置了thermal管理软件的操作参数。每一部分作为一个thermal域定义(thermalzonedefinition),与一个温度传感器关联。在第一个thermal域定义的前面,thermal配置文件有一行默认采样率。该默认值用于为thermal域定义里面没有指定采样率的传感器配置采样率。此外,在默认采样率之前,如果插入单词debug将使能ThermalD的debug信息输出。
如表所示,一个thermal域的配置包括以下参数:
表格3Thermal域
Fieldname | Values | Units | Notes |
tempsensorname | SeeTable4 | ||
sampling | 1000to65535 | ms | samplingrateinms |
thresholds | -273to273 | °C | Thresholdtoactivate |
thresholds_clr | -273to273 | °C | Thresholdtoclear |
actions | SeeTable5 | Actiontoactuponatthresholds;multipleentriesallowedareseparatedby+withnospaces;thisshouldbesameforallthresholdlevels | |
action_info | SeeTable6 | Informationusedbyaction;multipleentriesallowedareseparatedby+withnospaces | |
Sampling是ThermalD与配置阈值比对温度的速度。Thresholds、thresholds_clr、actions和actions_info构成阈值组合。在一个区可能有多个阈值组合。每个阈值组合分别定义thresholds、thresholds_clr、actions和actions_info。
表格4Sensornames
Name | Notes |
pmic_therm | RemoteHKADCdriverusingDALRPC |
msm_therm | RemoteADCdriverusingremoteONCRPC |
表格5Sensoractionsandactioninformation
Item | Action | ActionInfo | Notes |
none | Donothing | Setto0;notusedbutneededforparsertoworkproperly | Donothing.Thismitigationstepisdisabled.Ifathresholdiscrossed,noactionistaken. |
report | ReportthresholdcrossingtoUI | Setto0;notusedbutneededforparsertoworkproperly | ThethresholdcrossinginformationissentacrossanabstractlocalsocketTHERMALD_UIinanewline-separatedstringformat.Parametersaresentinthefollowingorder: § sensorname–Nameofsensorreporting § temperature–Currenttemperature § current_threshold_level–Currentthresholdleveltriggeredorcleared § is_trigger–TRUEonleveltrigger,FALSEonlevelclearing |
cpu | CPUfrequencyscaling | MaxCPUfrequencyinKHz | SetsthemaxallowablefrequencyforCPUs,0to1200000kHz |
lcd | LCDbrightnessthrottling | 0-255valueformaxLCDbrightness | Setsthebacklightintensity;willnotadjustthemaxvalueoverthecurrentlyconfiguredbrightnesssetbytheuser. 0to255 § 0–Backlightoff § 255–Maximumbrightness |
modem | Requestthrottlingofmodemfunctionality | 0-3throttlinglevelformodemmitigation | MSM8x25不支持。 |
fusion | Requestthrottlingoffusionmodemfunctionality | 0-3throttlinglevelforfusionmodemmitigation | MSM8x25不支持。 |
battery | Batterychargingcurrentthrottling | 0-3throttlinglevelforbatterychargingcurrent | MSM8x25不支持。仅MSM8960支持 |
gpu | GPUfrequencyscaling | MaxGPUfrequencyinHz | |
wlan | WLANthrottling | 0-3throttlinglevelforWLANmitigation | MSM8x25不支持。仅MSM8960支持 |
shutdown | Shutdowntarget | Shutdowndelayinms | Sendsashutdownrequesttothekernelwithadelaytopowerdownthephone |
配置文件必须有一个pmic_therm或msm_thermthermal域定义以用作第一个入口。
注意,在thermald.conf文件的结尾应该有一个返回字符。
Actions参数标明了每个阈值对应的动作。在一个阈值组合里面的actions和actions_info必须用“+”隔开,并且不允许出现空格。
每个阈值必须对应一个明确的action。
每个action必须有一个对应的action_info。
Theexampleconfigurationfilebelowturnsonverbosedebugoutput(line1)anddefaultpollingrateto5sec(line2).Thethermalzonedefinitionisnamedpmic_thermormsm_thermbasedonthehardwareconfiguration.Thethermalzonedefinitionsetsasamplingrateforthissensorat1sec,whichoverridesthedefault5secrate.Thefirstthresholdgroupinthepmic_therm/msm_thermthermalzonedefinitionconfiguresanactivationthresholdat65°C,anactionfortheCPUtomitigatetoamaximumfrequencyof756MHz,asecondactionfortheLCDtomitigatetobrightnesslevel200outof255;thethresholdwillclearat60°C.Thesecondthresholdgroupconfiguresanactivationthresholdat75°C,anactionfortheCPUtomitigatetoamaxfrequencyof540MHz,asecondactionfortheLCDtomitigatetobrightnesslevel100outof255;thethresholdwillclearat70°C.CPUandLCDmanagementdevicesareresettotheirdefaultsettinguponclearingthelowestthresholdat60ºC.
debug
sampling5000
[pmic_therm]
sampling1000
thresholds6575
thresholds_clr6070
actionscpu+lcdcpu+lcd
action_info756000+200540000+100
当通过USB将手机连接到电脑后,执行下面的命令可以编辑配置文件:
adbpull/etc/thermald.conf
adbremount
<edit>
adbpushthermald.conf/etc/
Thermal配置文件的存放路径是/system/etc/thermald.conf。在源代码中的存放路径是vendor/qcom/proprietary/thermal/,使用ls-l命令查看,显示信息如下:
可见,在源代码中是没有命名为/thermald.conf的文件的。
之所以能够在/system/etc/下看到thermald.conf,是因为在文件device/qcom/msm7627a/init.qcom.thermald_conf.sh中,做了链接:
所以,使用adb命令可以查询到如下信息:
在配置文件第一行加入“debug“可以使ThermalD工作在Debugmode,否则ThermalD的log会非常少。
adbshellstopthermald
adbshell
#thermald–debug&
下面的命令将会使ThermalDlog信息显示在命令行窗口。
adblogcat-sThermalDaemon
显示时间:
adblogcat-vtime-sThermalDaemon
MSM8x25在modem没有热缓解(thermalmitigation)设计。
1、80-NA385-1_B_MSM8x25_Android_Pwr_Mgmt_Overview.pdf
2、80-N8633-5_A_MSM8x25_Thermal_Mgmt_Algorithm
文中图片、表格数据可联系本人索取。