MSM8994 thermal管理
点击打开链接
1、MSM8994 Power Thermal Management Overview文档摘要
本文档为80-NM328-12_A_MSM8994_LA_Power_Thermal_Mgmt_Overview.pdf的学习笔记。
Thermal Mitigation Software Concept Architecture
Thermal Mitigation软件架构:
Graphic core temp:GPU温度
physical layout:物理布局
throttle:调节
Temperature Sensors – Placement and Increased Coverage
温度传感器的位置和增加的覆盖
1、温度传感器被放置在硅芯片的热点附近。
MSM8660上首次使用片上温度传感器(On-die sensors),有1个On-die sensors;
MSM8960有5个on-die sensors;
MSM8930 有10个on-die sensors;
APQ8084, MSM8974, and APQ8064有11个on-die sensors;
MSM8994有16个on-die sensors。大大提高了识别和定位热问题的能力。
2、增加温度传感器(thermistors) 是PWB需要,放在功率放大器附近。
3、由于采用新的硬件架构,片上温度传感器(On-die sensor)的精度和采样率大大提高。
MSM8994的精度:<1.5℃
采用率达到3.5ms,thermal actions响应更灵敏
在SBL1阶段,如果温度超过high/low阈值,基于硬件设计的tsens_reset将触发温度保护以保护设备。
Placement of MSM8994 On-Die Temperature Sensors
MSM8994片上温度传感器的位置。
MSM8994上一共有16个片上温度传感器。
如下图所示,片上温度传感器的位置及sensor ID由绿点表示。
Thermal Management Software Overview
Thermal管理软件概述。
1、thermal管理软件
§ 管理内存情形下的温度,上限为85℃。
管理外设表面温度,金属上限为55℃,OEM /载体通常为45°C
2、Sensors
§ MSM芯片上的传感器
§ 板上热敏电阻 – PMIC, PA, XO, etc.
3、设备管理
§ 通过降低性能实现被动式散热
§ OEM可以通过设置配置文件来设置阈值。
Boot Thermal Management (BTM) Algorithms
开机热管理(BTM)算法。
限制启动电压
§ 在设备启动之前确保温度是在有效工作范围。
§ 温度阈值、延时时间、最大尝试次数,这些值在boot loader build中设置
BTM Configuration Hardcoded
BTM配置硬编码。
§ .nLowerThresholdDegC默认设置为150℃,BTM几乎是禁用的。 is set to 150蚓 by default and BTM is virtually disabled.
§ 如果OEM为.nLowerThresholdDegC定义了适当的温度阈值,当前温度高于阈值时候,开机可以延期并多次尝试。但尝试次多超过规定值时候,开机将失败。
boot_images/core/hwengines/tsens/config/8994/BootTempCheckBsp.c
Kernel Thermal Monitor (KTM)
1、Bootup降温
KTM是一个kernel driver,该驱动在开机时候很早就被初始化,这样可以保证该驱动正确运行并保护设备不会因为过热损坏。
一旦该驱动初始化完毕,它将开始轮询温度,并当温度超过阈值时候采取降温措施。
在Bootup时候,KTM可以做的温度mitigations/monitoring包括:
§ CPU frequency mitigation,CPU频率减缓
§ CPU core control,CPU核心控制
§ Thermal reset,热复位
§ Vdd restriction,Vdd限制
§ CX phase selection voting,
§ GFX phase selection voting,
§ PMIC Auto/PWM mode switch,PMIC Auto/PWM模式切换
§ VDD MX voting,
§ Optimum current request,
§ 在开机阶段的后期,KTM切换到中断模式。在转换到中断模式之前,bootup阶段所有的降温措施将不再起作用。
2、Post-bootup降温
在系统进入初始化后期阶段之后,KTM将清除掉当前所有的mitigation/monitoring并转换到中断模式。在该阶段,thermal-sys framework被初始化,thermal使用framework设置阈值及接收通知。转换到中断模式不需要依赖thermal engine。
在post-bootup时候,KTM可以做的温度mitigations/monitoring包括:
§ Emergency frequency mitigation,紧急频率减缓
§ Emergency hotplug,紧急热插拔
§ Thermal reset,热复位
§ Vdd restriction,Vdd限制
§ CX phase selection voting
§ GFX phase selection voting
§ VDD MX voting
§ Optimum current request
§ 以上KTM特性与thermal engine一起更好的保护设备。
KTM Configuration Kernel Device Tree
KTM内核设备树配置。
qcom,msm-thermal {
compatible = "qcom,msm-thermal";
qcom,sensor-id = <5>;
qcom,poll-ms = <250>;
qcom,limit-temp = <60>;
qcom,temp-hysteresis = <10>;
qcom,freq-step = <2>;
qcom,freq-control-mask = <0xf>;
qcom,core-limit-temp = <80>;
qcom,core-temp-hysteresis = <10>;
qcom,core-control-mask = <0xe>;
qcom,hotplug-temp = <110>;
qcom,hotplug-temp-hysteresis = <20>;
qcom,cpu-sensors = "tsens_tz_sensor6", "tsens_tz_sensor13",
"tsens_tz_sensor14", "tsens_tz_sensor15";
qcom,vdd-restriction-temp = <5>;
qcom,vdd-restriction-temp-hysteresis = <10>;
qcom,pmic-sw-mode-temp = <85>;
qcom,pmic-sw-mode-temp-hysteresis = <75>;
qcom,pmic-sw-mode-regs = "vdd-dig";
qcom,vdd-dig-rstr{
qcom,vdd-rstr-reg = "vdd-dig";
qcom,levels = <5 7 7>; /* Nominal, Super Turbo, Super Turbo */
qcom,min-level = <1>; /* No Request */
};
qcom,vdd-gfx-rstr{
qcom,vdd-rstr-reg = "vdd-gfx";
qcom,levels = <5 7 7>; /* Nominal, Super Turbo, Super Turbo */
qcom,min-level = <1>; /* No Request */
};
qcom,vdd-apps-rstr{
qcom,vdd-rstr-reg = "vdd-apps";
qcom,levels = <1881600 1958400 2265600>;
qcom,freq-req;
};
}
KTM Mitigation Thresholds Examples
User Space Thermal Engine
1、Thermal daemon从MSM8660平台开始使用。
2、Thermal engine在thermal daemon基础上实现了多个温度传感器的集中管理并支持多个算法
Thermal engine支持thermal daemon和高级动态算法并联运行。OEM可以通过修改thermal engine配置文件来选择算法。
虚拟传感器(Virtual sensor):使用2个以上传感器,按权重计算温度,使得得到的温度值更精准。
Override mode:修改setpoint,以提高性能。
Thermal engine参数举例:
Thermal Mitigation Algorithms
热缓解算法。
1、在thermal配置文件中可以使用两种算法。
§ Dynamic Thermal Management (DTM) – algo_type_ss,动态热管理
§ Monitor – algo_type monitor
2、DTM
§ Configuration – algo_type ss
§ OEM决定维持的温度,算法动态执行OEM制定的措施,比如调节CPU频率。
用来控制表面温度和片上温度。要求调整的措施比monitor少,温度限制执行更严格。
§ 仅对CPU和CPU进行操作,比如降低最大频率。
§ 通过修改thermal-engine.conf文件中的set_point和set_point_clr来修改阈值。
3、Monitor algorithm for LCD, modem, camcorder, battery
§ Configuration – algo_type monitor
§ OEM定制一组温度阈值以及与各温度对应的温度措施。
§ Monitor算法用于LCD, modem, camcorder, and battery mitigation。不推荐CPU and GPU mitigation,因为CPU and GPU mitigation要求广泛的调整以维持setpoint。
§ 通过修改thermal-engine.conf文件中的set_point和set_point_clr来修改阈值。
对于CPU and GPU mitigation,强烈推荐使用DTM,而不是monitor,因为DTM可以大大减轻调整的工作,提高性能,更能严格保持在OEM设定的温度点setpoint。
Threshold Algorithm
阈值算法。
检测温度超过阈值,相应的降温措施将启动。比如当传感器温度达到70℃,GPU频率将从500降到333MHz。
最终传感器温度保持的温度点是85℃。
Dynamic Algorithm Example (Estimated Response)
动态算法的例子(估计响应)。
当温度超过setpoint(75℃),降低设备性能直到温度稳定。轮询模式启用,采样率为定义的数值。
当温度温度超过setpoint以及温度降到setpoint(75℃)以下,设备性能均会降低。
最大允许频率可以呈递增、递减变化。
如果温度50℃以下,中断模式将再次启用。
仅用来控制CPU/GPU。
Default Thermal Configuration
Thermal默认配置。
1、QTI在代码中提供了一套默认的thermal配置。该套配置参数需要根据OEM的需要进行调整。调整方法可以参考文档:Thermal Tuning Procedure (80-N9649-1)。
2、使用adb命令可以查看当前的thermal配置:thermal-engine -o
§ 该命令将打印出当前的thermal规则,包括QTI和OEM设置的。
3、默认的配置参数
(1)关键温度结点的管理规则 (默认85℃)
§ Label examples – [SS-CPU0], [SS-CPU1], [SS-CPU2], [SS-CPU3], [SS-CPU4-5-6-7]
§ 这些规则不应该增加它们的默认值。
§ 源程序:
§ /vendor/qcom/proprietary/thermal-engine/ss-data.c
§ /vendor/qcom/proprietary/thermal-engine/thermal_monitor-data.c
(2)表面温度管理规则
§ OEM在thermal-engine.conf中添加,然后放到手机路径/system/etc/thermal-engine.conf
(3)其他默认规则不要修改 e.g., VDD_RSTR_MONITORTSENSX
Adding Custom Thermal Configuration to Device
添加自定义热配置到设备。
1、不需重新编译代码,自定义的thermal配置可以添加到设备里面。
2、先基于老的thermal-engine.conf修改,然后使用adb命令推送到手机里面。
§ adb push <location_of_thermal-engine.conf> /system/etc/thermal-engine.conf
3、比如,为GPU添加一条规则。在thermal-engine.conf中添加:
[SS-GPU]
algo_type ss
sampling 65
sensor tsens_tz_sensor12
device gpu
set_point 60000
set_point_clr 57000
time_constant 0
上面例子为thermal配置添加了一个名叫[SS-GPU]的规则,将修改后的thermal-engine.conf推送到手机,然后重启手机,新thermal配置将生效。
4、同样,不添加新规则,修改原来的规则也可以按照上面方法来操作。
5、禁用一个规则
例如禁用规则[SS-POPMEM]:
[SS-POPMEM]
disable 1
Overall AP Thermal Management Mechanism
整体AP热管理机制。
有三种不同的TMS:
§ SBL temperature check
§ Kernel thermal monitor
§ Full thermal engine with KTM post-boot feature enabled
Thermal Software Features/Management Devices
Feature |
Description |
CPU TM |
调整最大允许操作频率。 |
GPU TM |
调整最大允许操作频率。 |
CPU Core |
关闭安全机制以确保在关键温度点之前CPU核心关闭。 |
Modem TM |
调整峰值数据速率、最大发射功率、数据呼叫终止。 |
Camcorder TM |
调整编码帧率、关闭解码功能 |
WLAN TM |
调整峰值数据速率 |
LCD Backlight TM |
调整最大背光亮度 |
Battery Charging TM |
调整最大允许充电率 |
Battery Current Limiting |
限制充电电流 |
Speaker Coil Calibration |
扬声器线圈的校准。扬声器线圈电阻与温度的自动校准,防止温度过高或者输出功率过高损坏扬声器线圈。 |
Voltage Restriction |
Voltage restriction enables low operating voltage above 0°C by adjusting the required minimum voltage at temperature extremes |
Kernel TM |
Adjustment of maximum allowed operating frequency during kernel initialization and post-boot device protection |
Override Mode |
Overrides thermal setpoint to allow higher performance for benchmarks or thermally aware applications |
Dynamic Parameter Update |
Important parameter sets can be updated at runtime for better OEM-specific dynamic thermal management |
2、References
1、80-NM328-12_C_MSM8994_MSM8992_LA_Power_Thermal_Mgmt_Overview.pdf
2、80-NM328-12_A_MSM8994_LA_Power_Thermal_Mgmt_Overview.pdf
文中图片和表格可以联系本人。
MSM8994 thermal管理相关推荐
- MSM8225 thermal设计
点击打开链接 1.概述 1.1.Thermal综述 笼统的讲,thermal是指移动终端电路板上的温度.Thermal的数值应当维持在合理的温度范围之内,过高的温度会影响用户的使用体验,更高的温度甚至 ...
- 新兴解决方案增强了电动汽车电源(功耗)管理
新兴解决方案增强了电动汽车电源(功耗)管理 Emerging solutions enhance electric-vehicle power management 电动汽车正变得越来越受欢迎,因为在 ...
- Qualcomm thermal的介绍
点击打开链接 随着智能设备的发展,很多产品越做越小,在一块很小的板子和结构内会附带很多功能,加上很多应用需要处理数据很大,必定造成设备很容易发热.且发热不仅会带来体验的不足还会带来大量的电量消耗.所以 ...
- MTK6573电源管理(PM)小结
继续MTK平台的研究 开始研究电源管理,因为PM永远是嵌入式的核心技术,所以静下来走一遍流程. MTK启动的过程: 硬件板载的启动入口为 static __init int board_init(vo ...
- 鸟哥的Linux私房菜(基础篇)- 第二十六章、Linux 核心编译与管理
第二十六章.Linux核心编译与管理 最近升级日期:2009/09/18 我们说的 Linux 其实指的就是核心 (kernel) 而已.这个核心控制你主机的所有硬件并提供系统所有的功能,所以说,他重 ...
- 工质热物理性质计算程序的编制及应用_新能源动力电池热管理方案设计和热流体仿真...
动力电池作为新能源汽车的主要动力源,其对新能源汽车的重要性不言而喻.在实际的车辆使用过程中,电池会的面临的使用工况复杂多变. 在低温下,锂离子电池会出现内阻增大.容量变小的现象,极端情况更会导致电解液 ...
- android+5.q,MSM8909+Android5.1.1电池管理(2)--qpnp-linear-charger.txt驱动学习概要
MSM8909+Android5.1.1电池管理(2)--qpnp-linear-charger.txt驱动学习概要 参考文件 \kernel\Documentation\power\qpnp-lin ...
- linux系统电源时钟,linux电源管理的一些梳理
由于项目产品需要过能源之星3.0,所以最近做了一些电源管理低功耗方面的工作,抽个时间正好梳理一下. 其实Linux 电源管理非常复杂,牵扯到很多方面,比如系统级的待机.频率电压变换.系统空闲时的处理以 ...
- 16个千兆光口8个千兆Combo光电复用口管理型工业以太网交换机环网+WEB管理+SNMP+VLAN
8*1000M路以太网电口,16路千兆光接口,支持SNMP网管,18ms内自愈环网保护,工作温度:-40℃-85℃.相对湿度:95% ±3RH(无凝结).传输距离40km(其它数据接入共用,实现数据上 ...
最新文章
- NHibernate 配置文件的处理和使用多数据库的多层架构思路(第二部分)
- no python interpreter configured
- 第10章:Shell基础
- Parcelable最强解析
- Hive分析窗口函数(一) SUM,AVG,MIN,MAX
- 「LibreOJ Round #11」Misaka Network 与测试 (网络流跑二分图匹配)
- Java8————Stream API
- 【node】node连接mongodb操作数据库
- 限流的简单使用及学习
- 虚拟机中centos7 安装过程中没有自动获取到网络
- kaggle--猫狗数据集分类
- linux卸载intel驱动程序,删除 Ubuntu Intel 官方驱动包并添加 pdadoka PPA
- 网络规划 网络工程 用户需求分析 网络结构设计
- 航顺HK32F030Mxx官方例程调试笔记(一)
- tzc 1292 排序
- [转载]Buffon投针实验:究竟为什么是pi?
- JavaScript 原型链总结(一)
- 球形FP-MAP的接收端迭代检测模型
- 深入解析python版SVM源码系列(三)——计算样本的预测类别
- SONM月报_2018年8月
热门文章
- yolov4网络结构_重磅更新!YoLov4最新论文!解读YoLov4框架!
- 父类的静态方法能否被子类重写?
- gridreport5.6如何设置打印3次_米家照片打印机1S:手机里的美好回忆不用网络仅一分钟即可留住...
- java怎么测试dao_java-Mockito使用模拟对象测试DAO
- linux c语言文件拷贝_linux - 远程拷贝文件之scp
- 自定义组合控件:Banner、轮播图、广告栏控件
- windoes windoes server 上安装mysql(MSI安装包安装、压缩包安装)
- 产品技术(研发)部门组织架构及岗位职责
- python的最大绘图速度_Python数据可视化之高速绘图神器PyQtGraph库,强烈建议收藏...
- 小辣椒p60手机怎么样_手机推荐:小辣椒手机彻底爆发,6+128仅699,还要啥自行车?...