本文基于高通msm8939/8994平台文档及源码。
说明文档: vendor/qcom/proprietary/thermal-engine/readme.txt;
源码文件: venror/qcom/proprietary/thermal-engine/thermal_config_v2.c;
实际配置文件: vendor/qcom/proprietary/thermal-engine/thermal-engine.conf。
关注源码文件的global_table,pid_table, tm_table, ss_table, v_table, eq_table声明。其中global_table为全局配置选项,对应2.1中的算法实例标签之前的部分;pid_table对应pid算法配置格式;tm_table对应monitor算法配置格式;ss_table对应ss算法配置格式;v_table对应virtual算法配置格式;eq_table对应equilibrium配置格式(此格式暂时未见使用)。
配置文件基本格式
{debug} //可选,若有此选项表示使能调试信息
sampling // 默认采样率,以ms为单位
[<算法实例标签>] // 算法实例标签
algo_type // 算法类型,必须是算法实例的第一个字段
disable //可选, 用于默认情况下禁止该算法实例起作用
...
算法类型
算法类型共有4种: monitor, pid, ss, virtual。每种的格式各不一样。
算法类型对应thermal_config.h(vendor/qcom/proprietary/thermal-engine/inc)中的algo_type枚举类型,实际上有5种,除以上4种外,还有一个equilibrium类型。但从algos数组声明(thermal_configi_v2.c)可以看出,equilibrium还未被使用。
monitor算法配置格式
[<算法实例标签>]
algo_type monitor
sensor <传感器名称>
sampling <采样率(ms)>
descending // 可选,默认门限是升序,有此字段后门限顺序为降序
thresholds <门限值(mC/mA)>
thresholds_clr <清除门限值>
actions <达到门限时的动作,多个动作时用'+'连接>
action_info <动作额外信息,多个额外信息间用'+'连接>
pid算法配置格式
[<算法实例标签>]
algo_type pid
sampling <采样率(ms)>
sensor <传感器名称>
device <被PID算法调制的设备>
set_point <PID算法调整的目标值(mC/mA)>
set_point_clr <PID算法停止调整的值>
p_const <PID算法中的P常量>
i_const <PID算法中的I常量>
d_const <PID算法中的D常量>
i_samples <积分组件报错时的积分样本数>
dev_units_per_calc <积分算法输出调整单元值(每次调整的值)>
ss算法配置格式
[<算法实例标签>]
algo_type ss
sampling <采样率(ms)>
sensor <传感器名称>
device <被PID算法调整的设备>
set_point <PID算法调整的目标值(mC/mA)>
set_point_clr <PID算法停止调整的值>
time_constant <当当前和上一个错误采样值相等时的延迟调整系数>
device_max_limit <设备最大值(mC/mA)> // 可选
virtual算法配置格式
该算法实际作用是用已存在的传感器模拟出一个新的传感器。</