高通thermal-engine配置文件格式
點擊打開鏈接
本文基于高通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算法配置格式
?????????該算法實際作用是用已存在的傳感器模擬出一個新的傳感器。
???????? [<虛擬傳感器名字>]????????
???????? algo_type????????? virtual??????????????????????????????????
???????? trip_sensor??????? <傳感器名稱>
???????? set_point?????????? <當高于此溫度時,虛擬傳感器開始polling模式>
???????? set_point_clr???? <當高于此溫度時,虛擬傳感器停止polling模式>
???????? sensors?????????????? <用于計算溫度總和的傳感器數組>
???????? weights?????????????? <權重值數組>
???????? sampling??????????? <默認采樣率>
配置文件字段解釋
thresholds取值
???????? 'thresholds'/'thresholds_clr'/'actions'/'action_info'接受最多8級以空格分開的門限。
action取值
?????????'none':
?????????????????? actions:? ???????? 無動作
?????????????????? action_info:????? 忽略
?????????'report':
?????????????????? actions:????????????? 報告"穿過門限消息"給UI
?????????????????? action_info:????? 忽略
???????????????????備注:
?????????????????? "穿過門限消息"以每行獨立的格式報告給THERMALD_UI(一個抽象的本地socket);
?????????????????? 清除或觸發門限會導致消息上報,比如n+1級門限被清除或者觸發了n級門限;其它
?????????????????? 動作是達到門限時才觸發;
?????????????????? 參數按以下順序發送:sensorname, temperature, current_threshold_level, is_trigger。其中:
?????????????????? current_threshold_level為當前被觸發/清除的門限;is_trigger為true時表示觸發,為false
?????????????????? 時表示清除。
????????'cpu':
?????????????????? actions:????????????? 調整cpu頻率
?????????????????? action_info:????? cpu最大允許頻率,單位:KHz
?????????'cpuN':
?????????????????? actions:????????????? 調整第N個cpu頻率
?????????????????? action_info:????? cpuN最大允許頻率,單位:KHz
?????????'hotplug_N':
?????????????????? actions:????????????? 拔掉第N個cpu(cpu_down)
?????????????????? action_info:????? 0: 插上cpu(cpu_up),? 1:拔掉cpu(cpu_down)
?????????'lcd':
?????????????????? actions:????????????? 限制lcd亮度
?????????????????? action_info:????? lcd最大亮度,取值范圍:0-255
?????????'modem':
?????????????????? actions:????????????? 請求限制modem功能
?????????????????? action_info:????? modem的限制級別,取值范圍:0-3
?????????'fusion':(???)
?????????????????? actions:????????????? 請求限制 fusion modem功能
?????????????????? action_info:????? fusion modem的限制級別,取值范圍:0-3
?????????'battery':
?????????????????? actions:????????????? 限制電池充電電流
?????????????????? action_info:????? 電池充電電流限制級別,取值范圍:0-3
?????????'gpu':
?????????????????? actions:????????????? 調整gpu頻率
?????????????????? action_info:????? gpu最大允許頻率,單位:KHz
?????????'wlan':
?????????????????? actions:????????????? wlan(無線局域網)限制
?????????????????? action_info:????? WLAN限制級別,取值范圍0-4
?????????'shutdown':
?????????????????? actions:????????????? 關機
?????????????????? action_info:????? 關機延遲時間,單位:ms
?????????備注:
???????? 從gen_dev_list變量聲明(vendor/qcom/proprietary/thermal-engine/devices/devices.c)可以看出,還有如下取值:'vdd_restriction', 'kernel', 'camera','camcorder', 'vdd_dig_swmode','opt_curr_req',
'venus','modem_cx'。從gen_dev_list及hotplug_dev_list可以總結出各action字段及動作函數的對應關系:
動作名稱 | 執行動作函數 | 動作信息 |
'cpu' | cpu_all_action() | 最大頻率 |
'cpuN' | cpu_action() | 最大頻率 |
'hotplug_N' | hotplug_action() | 1級 |
'wlan' | wlan_action() | MAX_WLAN_MITIGATION_LEVEL(4) |
'battery' | battery_action() | MAX_BATTERY_MITIGATION_LEVEL(3) |
'lcd' | lcd_action() | 255級亮度 |
'shutdown' | ts_shutdown_action() | UINT32_MAX |
'none' | ? | ? |
'report' | ts_report_action() | ? |
'modem' | modem_action() | 3 |
'fusion' | fusion_modem_action() | 3 |
'vdd_restriction' | vdd_restriction_action() | 1 |
'kernel' | kernel_mitigation_action() | 1 |
'camera' | camera_action() | MAX_CAMERA_MITIGATION_LEVEL(10) |
'camcorder' | camcorder_action() | MAX_CAMCORDER_MITIGATION_LEVEL(10) |
'vdd_dig_swmode' | vdd_dig_automode_diable_action() | 1 |
'opt_curr_req' | optimum_current_request_action | 1 |
'mdp' | mdp_action() | MAX_MDP_MITIGATION_LEVEL(3) |
'venus' | venus_action() | MAX_VENUS_MITIGATION_LEVEL(3) |
'modem_cx' | modem_cx_limit_action() | 3 |
'gpu' | gpu_action() | 最大頻率 |
表 1 action屬性
device取值
?????????'cpu':
?????????????????? actions:????????????? 調整cpu頻率
?????????????????? action_info:????? cpu最大允許頻率,單位:KHz
?????????'cpuN':
?????????????????? actions:????????????? 調整第N個cpu頻率
?????????????????? action_info:????? cpuN最大允許頻率,單位:KHz
備注:
???????? device還可取以下值: 'gpu', 'clusterN'????
?
配置文件示例
示例1
?????????配置文件:
?
???????? sampling??? ????? 1000
?
???????? [PMIC_THERM_MON]
???????? algo_type???? ?? monitor
???????? sensor?????? ??? PMIC_THERM
???????? sampling????? ? 5000
???????? thresholds???? ? 40200????????? 45000?? ?? 50000
???????? thresholds_clr?? 38000????????? 43000?? ?? 48000
???????? actions????? ???? cpu+report?????? cpu?????? cpu
???????? action_info?? ??? 1188000+0????? 368640? ?? 245760
?
?????????描述:
1.????????默認采樣率為1s;
2.????????PMIC_THERM傳感器采樣率為5s;
3.????????當溫度升到到40.2度以上時,觸發門限1,調節cpu最大允許頻率為1188000KHz,在本例中,由于此頻率是最大值,因此實際無動作;同時上報此消息,action_info值0被忽略;
4.????????當溫度降低到38度以下時,清除門限1,并上報此消息;
5.????????當溫度升高到45度以上時,觸發門限2,調節cpu最大允許頻率為368640KHz;
6.????????當溫度降低到43度以下時,清除門限2,調節cpu最大允許頻率為1188000KHz。
示例2
?????????配置文件:
?
???????? sampling??? ????? 2000
?
???????? [bcl_monitor]
???????? algo_type???? ?? monitor
???????? descending
???????? sensor?????? ??? bcl
???????? sampling????? ? 1000
???????? thresholds???? ? 100??? ???? 0
???????? thresholds_clr?? 500??? ??? 100
???????? actions????? ???? report???????? report????????
???????? action_info?? ??? 0?? ???????? 0
?
?????????描述:
1.????????使能調試信息輸出;
2.????????默認采樣率為2s;
3.????????對于電池電流限制(battery current limit)傳感器,采樣率為1s;
4.????????當電池電流升到imax - 100mA時,觸發門限1,并上報此消息;
5.????????當電池電流降到imax - 500mA時,清除門限1,并上報此消息;
6.????????當電池電流升到imax時,觸發門限2,并上報此消息;
7.????????當電池電流降到imax -100mA時,清除門限2,并上報此消息。
示例3
?????????配置文件:
?
???????? debug
?
???????? [TEST_PID]
???????? algo_type??? ????????????? pid
???????? sensor?????????? ???? tsens_tz_sensor0
???????? device???????????? cpu
???????? sampling?????????? 1000
???????? set_point??????????? 85000
???????? set_point_clr????????? 65000
???????? p_const??????????? 1.0
???????? i_const???????????? 1.0
???????? d_const??????????? 1.0
???????? i_samples?????????? 10
???????? dev_units_per_calc ???? 10000
?
?????????描述:
1.????????使能調試信息輸出;
2.????????本PID算法實例標簽為TEST_PID;
3.????????使用tsens_tz_sensor0傳感器;
4.????????被調節設備是CPU;
5.????????采樣率為1s;
6.????????set_point值是PID調節算法的門限值和PID算法的設定值;
7.????????set_point_clr是停止PID調節算法的門限值;
8.????????p_const, i_const, d_const是PID等式中的p,i,d常量;
9.????????i_samples是PID等式中的積分錯誤采樣次數;
10.?????dev_units_per_calc 10000 kHz(設備是CPU,因此單位是kHz)是PID輸出增加的步進值(即按10000KHz為步長調整??);
?
示例4
?????????配置文件:
?
???????? debug
?
???????? [virtual_sensor-0]
???????? algo_type??? ????????????? virtual
???????? sensor?????????? ???? tsens_tz_sensor8
???????? set_point??????????? 35000
???????? set_point_clr????????? 30000
???????? sensors?????????? ???tsens_tz_sensor1? tsens_tz_sensor5
???????? weights???????????????????????? 40? 60
???????? sampling?????????????????????? 250
?
???????? [Test-PID]
???????? algo_type????????????????????? pid
???????? sensor?????????????????????????? virtual-sensor-0
???????? device???????????? cpu1
???????? sampling?????????? 250
???????? set_point??????????? 55000
???????? set_point_clr????????? 50000
???????? p_const??????????? 1.25
???????? i_const???????????? 0.8
???????? d_const??????????? 0.5
???????? i_samples?????????? 10
???????? dev_units_per_calc ???? 5000
?
?????????描述:
1.????????PID實例Test-PID基于virtual-sensor-0的結果;
2.????????virtual-sensor-0需要用戶手動定義;
3.????????trip_sensor 用來指示虛擬傳感器何時開始進入polling模式(輪詢),trip_sensor必須為常規傳感器,不能為另外一個虛擬傳感器;
4.????????set_point是trip sensor的門限值,當高于此門限值時,trip sensor將從中斷模式進入輪詢模式,輪詢頻率由虛擬傳感器的sampling字段設置;
5.????????set_point_clr是trip sensor的門限值,當低于此門限值時,trip sensor將停止輪詢模式然后等待下一個門限事件;
6.????????weights給定了傳感器數組的權重值;
7.????????虛擬傳感器的set_point必須小于pid算法的set_point,以便當達到set_point時pid能收到通知,另外,如果虛擬傳感器未進入輪詢模式,pid將不能獲取到它的溫度;
8.????????如果tirp sensor不支持從中斷模式到查詢模式的改變,第8條可以被忽略。此時虛擬傳感器的采樣率將應該和pid的采樣率一致。
示例5
?????????配置文件:
?
???????? debug
?
???????? [bcm_monitor]
???????? algo_type??? ????????????? monitor
???????? sensor?????????? ???? bcm
???????? sampling?????????? 1000
???????? thresholds????????? 70000???????? 90000 ??????????????? // 注意,單位為m%
???????? thresholds_clr??????? 69000???????? 89000
???????? actions???????????? cpu???????????? cpu
???????? action_info????????? 768000?????? 384000
?
?????????描述:
1.????????使能調試信息輸出;
2.????????當采樣電流達到imax的70%時,門限1觸發,調整cpu最大允許頻率為768000KHz;
3.????????當采樣電流達到imax的90%時,門限2觸發,調整cpu最大允許頻率為384000KHz;
4.????????bcm僅支持2級門限調節;
5.????????有效的門限值取值為:40000,50000,60000,70000,80000,90000。
總結
以上是生活随笔為你收集整理的高通thermal-engine配置文件格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android驱动开发之Hello实例(
- 下一篇: MSM8225 thermal设计