一. LTF热管理框架简介
LTF(Linux Thermal Framework),主要位于BSP kernel模块,LTF抽象出两种类型的设备,热区设备TZD[Thermal Zone Device] 和冷却设备[Cooling Device]。
热区设备主要负责获取和上报从热传感器读取的转换温度值[单位毫摄氏度]。
冷却设备通过开关某一个特定的处理函数,来给绑定的热区设备组件降温。
一个热区设备最多可以有10个 trip[每个trip对应一个热阈值],每个trip能且只能绑定到一个冷却设备[降温处理函数];这样实现热区设备和冷却设备的绑定[一个热区设备最多绑定10个冷却器]。
LTF周期监控每一个热区设备,并且基于每个trip的trip point值激活绑定的冷却设备[降温处理函数],LTF的工作方式是轮询式。
这种基于轮询的软件控制方式,会消耗一定的CPU功耗[为了监控手机中所有热sensor],从ADC通道中读取sensor的温度值也有几十微秒的时间消耗。
基于Linux kernel 3.18代码,LTF代码位置:
Kernel-3.18/include/linux/thermal.h
Kernel-3.18/drivers/thermal/thermal_core.c
Kernel-3.18/drivers/thermal/backward_compatible.c
结合MT6797平台,LTF设备映射的proc文件目录[内核与native通讯]
/proc/driver/thremal/ 如下截图:
结合MT6797平台,LTF设备映射的sys文件目录[app与LTF通讯]
/sys/class/thermal
[
热区设备驱动和冷却设备驱动向热管理core
作注册时,热管理core为每个设备创建sys fs
sys/class/thermal/
]
如下截图:
二. 结合MT6797平台,分析散热管理实现原理及MTK的设计优化
不同平台根据各自主芯片内的senser
或板上的热敏电阻的分布位置,在内核封装不同的热区设备,并实现自己
的冷却器[降温处理函数]和散热策略。
如下图的软件框架图,
(一). 比较核心的mtk_thermal_monitor特性介绍如下:
1. 简单平移均值[SMA:simple moving average]:
SMA作为一个低通滤波器工作,用于降低温度噪声对散热策略的影响。
SMA过滤错误的热区温度值,原始的温度值通常由从ADC读到的
电压值转换而来,包含一定的不准确性。为避免热管理频繁的噪声干扰,
使用SMA低通滤波器输出降噪。实际excel配置文件中,Moving Average
配置为1~4,即每次采样取前4次或只取1次样本,取平均值作为热
传感器的最新数据。
2. 冷却器出口点:
当绑定的热区设备冷却下来指定的温度数点,冷却器出口点要保证冷却
器退出;热区域可以反映一个IC的结温。当负载增大时,温度可能显
著增加,当冷却器激活时温度可能显著降低。PCB板和结构具有热滞后
性,需要较长的时间来散热,一个正确的冷却退出点可以帮忙有效的冷
却并避免快速开关冷却器的开销。