高通thermal-engine配置文件格式
點(diǎn)擊打開(kāi)鏈接
本文基于高通msm8939/8994平臺(tái)文檔及源碼。
?說(shuō)明文檔:??????????????? vendor/qcom/proprietary/thermal-engine/readme.txt;
???????? 源碼文件: ????????????? venror/qcom/proprietary/thermal-engine/thermal_config_v2.c;
???????? 實(shí)際配置文件: ???? vendor/qcom/proprietary/thermal-engine/thermal-engine.conf。
???????? 關(guān)注源碼文件的global_table,pid_table, tm_table, ss_table, v_table, eq_table聲明。其中g(shù)lobal_table為全局配置選項(xiàng),對(duì)應(yīng)2.1中的算法實(shí)例標(biāo)簽之前的部分;pid_table對(duì)應(yīng)pid算法配置格式;tm_table對(duì)應(yīng)monitor算法配置格式;ss_table對(duì)應(yīng)ss算法配置格式;v_table對(duì)應(yīng)virtual算法配置格式;eq_table對(duì)應(yīng)equilibrium配置格式(此格式暫時(shí)未見(jiàn)使用)。
?
配置文件基本格式
???????? {debug}???????????? //可選,若有此選項(xiàng)表示使能調(diào)試信息
???????? sampling??????????? // 默認(rèn)采樣率,以ms為單位
???????? [<算法實(shí)例標(biāo)簽>]???????????? // 算法實(shí)例標(biāo)簽
???????? algo_type????????? // 算法類(lèi)型,必須是算法實(shí)例的第一個(gè)字段
???????? disable?????????????? //可選, 用于默認(rèn)情況下禁止該算法實(shí)例起作用
???????? ...
算法類(lèi)型
???????? 算法類(lèi)型共有4種: monitor, pid, ss, virtual。每種的格式各不一樣。
?????????算法類(lèi)型對(duì)應(yīng)thermal_config.h(vendor/qcom/proprietary/thermal-engine/inc)中的algo_type枚舉類(lèi)型,實(shí)際上有5種,除以上4種外,還有一個(gè)equilibrium類(lèi)型。但從algos數(shù)組聲明(thermal_configi_v2.c)可以看出,equilibrium還未被使用。
monitor算法配置格式
???????? [<算法實(shí)例標(biāo)簽>]???
???????? algo_type????????? monitor?????????????????????? ????????
???????? sensor???????????????? <傳感器名稱(chēng)>??????????
???????? sampling??????????? <采樣率(ms)>
???????? descending???????????????? //?????? 可選,默認(rèn)門(mén)限是升序,有此字段后門(mén)限順序?yàn)榻敌?/p>
???????? thresholds???? <門(mén)限值(mC/mA)>
???????? thresholds_clr ?<清除門(mén)限值>
??????? actions??????? <達(dá)到門(mén)限時(shí)的動(dòng)作,多個(gè)動(dòng)作時(shí)用'+'連接>
???????? action_info??? <動(dòng)作額外信息,多個(gè)額外信息間用'+'連接>
?
pid算法配置格式
???????? [<算法實(shí)例標(biāo)簽>]???
???????? algo_type????????? pid???????????????????????????????
???????? sampling??????????? <采樣率(ms)>
???????? sensor???????????????? <傳感器名稱(chēng)>
???????? device??????????????? <被PID算法調(diào)制的設(shè)備>
???????? set_point?????????? <PID算法調(diào)整的目標(biāo)值(mC/mA)>
???????? set_point_clr???? <PID算法停止調(diào)整的值>
???????? p_const????????????? <PID算法中的P常量>
???????? i_const?????????????? <PID算法中的I常量>
???????? d_const????????????? <PID算法中的D常量>
???????? i_samples????????? <積分組件報(bào)錯(cuò)時(shí)的積分樣本數(shù)>
???????? dev_units_per_calc? <積分算法輸出調(diào)整單元值(每次調(diào)整的值)>
?
ss算法配置格式
???????? [<算法實(shí)例標(biāo)簽>]???
???????? algo_type????????? ss?????????????????????????????????
???????? sampling??????????? <采樣率(ms)>
???????? sensor???????????????? <傳感器名稱(chēng)>
???????? device??????????????? <被PID算法調(diào)整的設(shè)備>
???????? set_point?????????? <PID算法調(diào)整的目標(biāo)值(mC/mA)>
???????? set_point_clr???? <PID算法停止調(diào)整的值>
???????? time_constant? <當(dāng)當(dāng)前和上一個(gè)錯(cuò)誤采樣值相等時(shí)的延遲調(diào)整系數(shù)>
???????? device_max_limit???? <設(shè)備最大值(mC/mA)>??????????? // 可選
virtual算法配置格式
?????????該算法實(shí)際作用是用已存在的傳感器模擬出一個(gè)新的傳感器。
???????? [<虛擬傳感器名字>]????????
???????? algo_type????????? virtual??????????????????????????????????
???????? trip_sensor??????? <傳感器名稱(chēng)>
???????? set_point?????????? <當(dāng)高于此溫度時(shí),虛擬傳感器開(kāi)始polling模式>
???????? set_point_clr???? <當(dāng)高于此溫度時(shí),虛擬傳感器停止polling模式>
???????? sensors?????????????? <用于計(jì)算溫度總和的傳感器數(shù)組>
???????? weights?????????????? <權(quán)重值數(shù)組>
???????? sampling??????????? <默認(rèn)采樣率>
配置文件字段解釋
thresholds取值
???????? 'thresholds'/'thresholds_clr'/'actions'/'action_info'接受最多8級(jí)以空格分開(kāi)的門(mén)限。
action取值
?????????'none':
?????????????????? actions:? ???????? 無(wú)動(dòng)作
?????????????????? action_info:????? 忽略
?????????'report':
?????????????????? actions:????????????? 報(bào)告"穿過(guò)門(mén)限消息"給UI
?????????????????? action_info:????? 忽略
???????????????????備注:
?????????????????? "穿過(guò)門(mén)限消息"以每行獨(dú)立的格式報(bào)告給THERMALD_UI(一個(gè)抽象的本地socket);
?????????????????? 清除或觸發(fā)門(mén)限會(huì)導(dǎo)致消息上報(bào),比如n+1級(jí)門(mén)限被清除或者觸發(fā)了n級(jí)門(mén)限;其它
?????????????????? 動(dòng)作是達(dá)到門(mén)限時(shí)才觸發(fā);
?????????????????? 參數(shù)按以下順序發(fā)送:sensorname, temperature, current_threshold_level, is_trigger。其中:
?????????????????? current_threshold_level為當(dāng)前被觸發(fā)/清除的門(mén)限;is_trigger為true時(shí)表示觸發(fā),為false
?????????????????? 時(shí)表示清除。
????????'cpu':
?????????????????? actions:????????????? 調(diào)整cpu頻率
?????????????????? action_info:????? cpu最大允許頻率,單位:KHz
?????????'cpuN':
?????????????????? actions:????????????? 調(diào)整第N個(gè)cpu頻率
?????????????????? action_info:????? cpuN最大允許頻率,單位:KHz
?????????'hotplug_N':
?????????????????? actions:????????????? 拔掉第N個(gè)cpu(cpu_down)
?????????????????? action_info:????? 0: 插上cpu(cpu_up),? 1:拔掉cpu(cpu_down)
?????????'lcd':
?????????????????? actions:????????????? 限制lcd亮度
?????????????????? action_info:????? lcd最大亮度,取值范圍:0-255
?????????'modem':
?????????????????? actions:????????????? 請(qǐng)求限制modem功能
?????????????????? action_info:????? modem的限制級(jí)別,取值范圍:0-3
?????????'fusion':(???)
?????????????????? actions:????????????? 請(qǐng)求限制 fusion modem功能
?????????????????? action_info:????? fusion modem的限制級(jí)別,取值范圍:0-3
?????????'battery':
?????????????????? actions:????????????? 限制電池充電電流
?????????????????? action_info:????? 電池充電電流限制級(jí)別,取值范圍:0-3
?????????'gpu':
?????????????????? actions:????????????? 調(diào)整gpu頻率
?????????????????? action_info:????? gpu最大允許頻率,單位:KHz
?????????'wlan':
?????????????????? actions:????????????? wlan(無(wú)線局域網(wǎng))限制
?????????????????? action_info:????? WLAN限制級(jí)別,取值范圍0-4
?????????'shutdown':
?????????????????? actions:????????????? 關(guān)機(jī)
?????????????????? action_info:????? 關(guān)機(jī)延遲時(shí)間,單位: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可以總結(jié)出各action字段及動(dòng)作函數(shù)的對(duì)應(yīng)關(guān)系:
動(dòng)作名稱(chēng) | 執(zhí)行動(dòng)作函數(shù) | 動(dòng)作信息 |
'cpu' | cpu_all_action() | 最大頻率 |
'cpuN' | cpu_action() | 最大頻率 |
'hotplug_N' | hotplug_action() | 1級(jí) |
'wlan' | wlan_action() | MAX_WLAN_MITIGATION_LEVEL(4) |
'battery' | battery_action() | MAX_BATTERY_MITIGATION_LEVEL(3) |
'lcd' | lcd_action() | 255級(jí)亮度 |
'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:????????????? 調(diào)整cpu頻率
?????????????????? action_info:????? cpu最大允許頻率,單位:KHz
?????????'cpuN':
?????????????????? actions:????????????? 調(diào)整第N個(gè)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.????????默認(rèn)采樣率為1s;
2.????????PMIC_THERM傳感器采樣率為5s;
3.????????當(dāng)溫度升到到40.2度以上時(shí),觸發(fā)門(mén)限1,調(diào)節(jié)cpu最大允許頻率為1188000KHz,在本例中,由于此頻率是最大值,因此實(shí)際無(wú)動(dòng)作;同時(shí)上報(bào)此消息,action_info值0被忽略;
4.????????當(dāng)溫度降低到38度以下時(shí),清除門(mén)限1,并上報(bào)此消息;
5.????????當(dāng)溫度升高到45度以上時(shí),觸發(fā)門(mén)限2,調(diào)節(jié)cpu最大允許頻率為368640KHz;
6.????????當(dāng)溫度降低到43度以下時(shí),清除門(mén)限2,調(diào)節(jié)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.????????使能調(diào)試信息輸出;
2.????????默認(rèn)采樣率為2s;
3.????????對(duì)于電池電流限制(battery current limit)傳感器,采樣率為1s;
4.????????當(dāng)電池電流升到imax - 100mA時(shí),觸發(fā)門(mén)限1,并上報(bào)此消息;
5.????????當(dāng)電池電流降到imax - 500mA時(shí),清除門(mén)限1,并上報(bào)此消息;
6.????????當(dāng)電池電流升到imax時(shí),觸發(fā)門(mén)限2,并上報(bào)此消息;
7.????????當(dāng)電池電流降到imax -100mA時(shí),清除門(mén)限2,并上報(bào)此消息。
示例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.????????使能調(diào)試信息輸出;
2.????????本PID算法實(shí)例標(biāo)簽為T(mén)EST_PID;
3.????????使用tsens_tz_sensor0傳感器;
4.????????被調(diào)節(jié)設(shè)備是CPU;
5.????????采樣率為1s;
6.????????set_point值是PID調(diào)節(jié)算法的門(mén)限值和PID算法的設(shè)定值;
7.????????set_point_clr是停止PID調(diào)節(jié)算法的門(mén)限值;
8.????????p_const, i_const, d_const是PID等式中的p,i,d常量;
9.????????i_samples是PID等式中的積分錯(cuò)誤采樣次數(shù);
10.?????dev_units_per_calc 10000 kHz(設(shè)備是CPU,因此單位是kHz)是PID輸出增加的步進(jìn)值(即按10000KHz為步長(zhǎng)調(diào)整??);
?
示例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實(shí)例Test-PID基于virtual-sensor-0的結(jié)果;
2.????????virtual-sensor-0需要用戶手動(dòng)定義;
3.????????trip_sensor 用來(lái)指示虛擬傳感器何時(shí)開(kāi)始進(jìn)入polling模式(輪詢(xún)),trip_sensor必須為常規(guī)傳感器,不能為另外一個(gè)虛擬傳感器;
4.????????set_point是trip sensor的門(mén)限值,當(dāng)高于此門(mén)限值時(shí),trip sensor將從中斷模式進(jìn)入輪詢(xún)模式,輪詢(xún)頻率由虛擬傳感器的sampling字段設(shè)置;
5.????????set_point_clr是trip sensor的門(mén)限值,當(dāng)?shù)陀诖碎T(mén)限值時(shí),trip sensor將停止輪詢(xún)模式然后等待下一個(gè)門(mén)限事件;
6.????????weights給定了傳感器數(shù)組的權(quán)重值;
7.????????虛擬傳感器的set_point必須小于pid算法的set_point,以便當(dāng)達(dá)到set_point時(shí)pid能收到通知,另外,如果虛擬傳感器未進(jìn)入輪詢(xún)模式,pid將不能獲取到它的溫度;
8.????????如果tirp sensor不支持從中斷模式到查詢(xún)模式的改變,第8條可以被忽略。此時(shí)虛擬傳感器的采樣率將應(yīng)該和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.????????使能調(diào)試信息輸出;
2.????????當(dāng)采樣電流達(dá)到imax的70%時(shí),門(mén)限1觸發(fā),調(diào)整cpu最大允許頻率為768000KHz;
3.????????當(dāng)采樣電流達(dá)到imax的90%時(shí),門(mén)限2觸發(fā),調(diào)整cpu最大允許頻率為384000KHz;
4.????????bcm僅支持2級(jí)門(mén)限調(diào)節(jié);
5.????????有效的門(mén)限值取值為:40000,50000,60000,70000,80000,90000。
總結(jié)
以上是生活随笔為你收集整理的高通thermal-engine配置文件格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android驱动开发之Hello实例(
- 下一篇: MSM8225 thermal设计