Qualcomm thermal的介绍
點擊打開鏈接
隨著智能設備的發(fā)展,很多產品越做越小,在一塊很小的板子和結構內會附帶很多功能,加上很多應用需要處理數(shù)據(jù)很大,必定造成設備很容易發(fā)熱。且發(fā)熱不僅會帶來體驗的不足還會帶來大量的電量消耗。所以在移動消費產品,對熱量的解決方案還是很重要的。今天我們就介紹下高通410C開發(fā)板上熱量管理的機制,軟件如何控制。
?????? 首先在軟件架構上我們分為以下部分。
一:驅動部分
驅動代碼位置:
共有部分:kernel/deriver/thermal_core.c
????????????????????kernel/driver/user_space.c
platform部分:
????????????????mitigation部分:
?????????????????kernel/driver/msm_thermal-dev.c
?????????????????kernel/driver/msm_thermal.c
????????????????sensor部分:
????????????????qpnp-temp-alarm.c
????????????????msm8974-tsens.c
簡要敘述驅動文件關鍵位置,基本理解驅動構架以及如何運作。
msm8974-tsens.c
1:sensor的注冊,將thermal注冊為class類:
2:thermal_zone_device_ops接口的填充,以給thermal_core的調用。
3:觸發(fā)中斷與通知上層。
thermal_core.c
1:thermal_zone_devices_register()提供相應sensor register接口,按先后順序注冊/sys/class/thermal/thermal_zoneN。
2:為上層提供trip_temp、type等接口,如: ??
????? root@msm8916_32:/ # cat /sys/class/thermal/thermal_zone5/trip_point_0_type ????
????? configurable_hi
????? root@msm8916_32:/ # cat /sys/class/thermal/thermal_zone5/trip_point_0_temp ????
????? 85
這里trip_point_0_temp為high temp thresthold,那么trip_point_1_temp為low temp thresthold ??
3:調用sensor相關接口:
關于tpye name與thermal_zone的對應關系:
以8016為例:
???????????????????????????????????type ????????????????????????name ?????????????????????????????????
????????????????????????? thermal_zone0 ??????????battery
????????????????????????? thermal_zone1 ??????????tsens_tz_sensor0
????????????????????????? thermal_zone2 ??????????tsens_tz_sensor1
????????????????????????? thermal_zone3 ??????????tsens_tz_sensor2 ???????pop_mem
????????????????????????? thermal_zone4 ??????????tsens_tz_sensor4 ???????cpu2-3
????????????????????????? thermal_zone5 ??????????tsens_tz_sensor5 ???????cpu0-1
????????????????????????? thermal_zone6 ??????????pm8916_tz
????????????????????????? thermal_zone7 ??????????bms
msm_thermal.c
mitigation分為輪訓與中斷,首先看下poll部分:
每隔指定的時間就會check溫度,當超過范圍會降頻,關閉cpu,重設thsreshold等操作。
interrupt部分,默認啟動的是中斷方式,這里是interrupt的初始化。
再以hotplug細說interrupt的運行,這里會根據(jù)dts里面的參數(shù)先設置,后通過set_threshold調用之前sensor填充的接口,寫入到寄存器里面,當達到溫度后,觸發(fā)中斷后會通知上層,再溫度非常高的話會運行起kernel mitigation,通過hotplug notify來做相應處理
二:上層thermal-engine部分:
?
???????thermal工作機制:首先上層設置trig point,包括恢復溫度與臨界溫度,thermal engine主要有algo_monitor運作sensor monitor起輔助作用夠成。algo_monitor依賴?sensor_monitor的運作,而sensor_monitor的運行依賴中斷的觸發(fā)。
1:首先初始化engine,設置臨界溫度(85度)其它參數(shù)等信息。
2:當溫度升高達到臨界溫度,底層中斷觸發(fā)同時通知上層,algo_monitor由block狀態(tài)到運行起來,同時啟動50ms的timer來采樣sensor的溫度:
a:當溫度大于trig point時,cpu開始降頻,每次溫度下降一個等級。
b:當溫度小于trig point時,cpu可以恢復到max狀態(tài),當時取消timer同時將trig point恢復到85度。
關于 set_point部分的設定。ss-data.c中,關于temp threshold的深入。
下面討論高溫threshold
1:首先上層set_point(默認85度)會寫入/sys/class/thermal/thermal_zoneX/trip_point_0_temp。
2:當sensor溫度達到85度后,觸發(fā)中斷通知上層與kernel mitigation
流程:tsens_isr->thermal_sensor_trip->thermal_sensor_trip->__update_sensor_thresholds???
由于85度,并沒有達到kernel mitigation與cpu hotplug的95度thresthold,那里這里的pos->notify()并不會跑進mitigation與hotplug。
在__update_sensor_thresholds()里面會將trip_point_0_temp由85度改為95度。這時中斷不再觸發(fā),需要等到高溫95度觸發(fā)中斷。此時thermal-engine已經(jīng)在運轉,超過85度已經(jīng)啟用cpu降頻。很快cpu溫度會從85度以上降低下來,假如降低到84度時,那么trip_point_0_temp是不是應該重新置為85度呢?
下面貼出重新設回threshold的方法:
在ss_algorithm.c的handle_thresh_sig()里面會去處理同時重新設定cpu可以跑到最高freq。
假如機器溫度實在是太高超過了95度,那么kernel mitigation與cpu hotplug將會運轉起來。
利用msm_thermal.c提供的cpus_offlined接口關閉指定的cpu。
禁用cpu3 :
?????? echo 8 > ?sys/module/msm_thermal/core_control/cpus_offlined ??
CPU升溫:
?????? cat /dev/zero > /dev/null &? ? 執(zhí)行30次
打開feature:
?????? stop thermal-engine?
?????? thermal-engine --debug &?
?????? logcat -v time -s ThermalEngine?
logcat現(xiàn)場分析,第一段logcat分析:
下面的由于溫度達到了pop_mem的70度,那么algo_monitor就運作起來了,
03-07 22:01:44.619 D/ThermalEngine( 2110): tsens_uevent: tsens_tz_sensor2
03-07 22:01:44.619 D/ThermalEngine( 2110): sensor_monitor: tsens_tz_sensor2 Reading 70000 .
03-07 22:01:44.619 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:01:44.619 D/ThermalEngine( 2110): thresh_notify: SS Id SS-POPMEM, Update recieved pop_mem 70000 ?//底層中斷激活
03-07 22:01:44.619 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(0), Hi(0) 2147483647, Lo(0) -2147483648, Interval(0) 2147483647
03-07 22:01:44.619 D/ThermalEngine( 2110): sensor_monitor: tsens_tz_sensor2 Wait for client request.
03-07 22:01:44.619 D/ThermalEngine( 2110): algo_monitor: Thresh EVT
03-07 22:01:44.619 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC ?//pop_mem 70度
03-07 22:01:44.619 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM, Read pop_mem 70000mC
03-07 22:01:44.619 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM Transition State 2
03-07 22:01:44.619 D/ThermalEngine( 2110): sensors_manager_set_thresh_lvl: tsens_tz_sensor2 Hi(0) 0, Lo(1) 45000, Interval(0) 0
03-07 22:01:44.619 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(1), Hi(0) 2147483647, Lo(1) 45000, Interval(0) 2147483647 ? ?//設置低溫point45度觸發(fā)中斷
03-07 22:01:44.619 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_0_type)
03-07 22:01:44.619 D/ThermalEngine( 2110): TSENS threshold at 0 enabled: 0
03-07 22:01:44.619 D/ThermalEngine( 2110): Setting up TSENS thresholds low: 45
03-07 22:01:44.619 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_1_type)
03-07 22:01:44.619 D/ThermalEngine( 2110): TSENS threshold at 1 enabled: 1 //寫入低有效 45度觸發(fā)
//上面的中斷觸發(fā)激活了timer
03-07 22:01:44.619 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
03-07 22:01:44.619 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:01:44.619 D/ThermalEngine( 2110): sensor_monitor: tsens_tz_sensor2 Sensor wait.
03-07 22:01:45.619 D/ThermalEngine( 2110): algo_monitor: Timer EVT
03-07 22:01:45.619 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:69000 mC
03-07 22:01:45.619 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM Read pop_mem 69000mC, Err 1000mC, SampleCnt 1//此時讀取到的69度
03-07 22:01:45.619 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM, E0 1000mC, E1 0mC
03-07 22:01:45.619 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:69000 mC
03-07 22:01:45.619 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM, Read pop_mem 69000mC
03-07 22:01:45.619 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM Transition State 3 ?//stop采樣,重新設置70度高有效
03-07 22:01:45.619 D/ThermalEngine( 2110): device_clnt_cancel_request: DEV cpu
03-07 22:01:45.619 D/ThermalEngine( 2110): sensors_manager_set_thresh_lvl: tsens_tz_sensor2 Hi(1) 70000, Lo(0) 0, Interval(0) 0
03-07 22:01:45.619 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(1), Hi(1) 70000, Lo(0) -2147483648, Interval(0) 2147483647
03-07 22:01:45.619 D/ThermalEngine( 2110): Setting up TSENS thresholds high: 70
03-07 22:01:45.619 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_0_type)
03-07 22:01:45.619 D/ThermalEngine( 2110): TSENS threshold at 0 enabled: 1
03-07 22:01:45.619 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_1_type)
03-07 22:01:45.619 D/ThermalEngine( 2110): TSENS threshold at 1 enabled: 0
//溫度在70以下取消timer
03-07 22:01:45.619 D/ThermalEngine( 2110): settimer: Start timer 0.000(sec)
//下一輪的中斷激活
03-07 22:01:45.619 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:01:49.629 D/ThermalEngine( 2110): tsens_uevent: tsens_tz_sensor2
03-07 22:01:49.629 D/ThermalEngine( 2110): sensor_monitor: tsens_tz_sensor2 Reading 70000 .
03-07 22:01:49.629 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:01:49.629 D/ThermalEngine( 2110): thresh_notify: SS Id SS-POPMEM, Update recieved pop_mem 70000
03-07 22:01:49.629 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(0), Hi(0) 2147483647, Lo(0) -2147483648, Interval(0) 2147483647
03-07 22:01:49.629 D/ThermalEngine( 2110): sensor_monitor: tsens_tz_sensor2 Wait for client request.
03-07 22:01:49.629 D/ThermalEngine( 2110): algo_monitor: Thresh EVT
03-07 22:01:49.629 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:01:49.629 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM, Read pop_mem 70000mC
03-07 22:01:49.629 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM Transition State 2
03-07 22:01:49.629 D/ThermalEngine( 2110): sensors_manager_set_thresh_lvl: tsens_tz_sensor2 Hi(0) 0, Lo(1) 45000, Interval(0) 0
03-07 22:01:49.629 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(1), Hi(0) 2147483647, Lo(1) 45000, Interval(0) 2147483647
03-07 22:01:49.629 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_0_type)
03-07 22:01:49.629 D/ThermalEngine( 2110): TSENS threshold at 0 enabled: 0
03-07 22:01:49.629 D/ThermalEngine( 2110): Setting up TSENS thresholds low: 45
03-07 22:01:49.629 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_1_type)
03-07 22:01:49.629 D/ThermalEngine( 2110): TSENS threshold at 1 enabled: 1
//設定1s timer
03-07 22:01:49.629 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
03-07 22:01:49.629 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:01:49.629 D/ThermalEngine( 2110): sensor_monitor: tsens_tz_sensor2 Sensor wait.
03-07 22:01:50.629 D/ThermalEngine( 2110): algo_monitor: Timer EVT
03-07 22:01:50.629 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:01:50.629 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM Read pop_mem 70000mC, Err 0mC, SampleCnt 1
03-07 22:01:50.629 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM, E0 0mC, E1 0mC
第二段logcat分析:
采樣到71度啟動降頻,這時底層會設置高位point為95度
03-07 22:04:15.669 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
03-07 22:04:15.669 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:04:16.669 D/ThermalEngine( 2110): algo_monitor: Timer EVT
03-07 22:04:16.669 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:71000 mC
03-07 22:04:16.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM Read pop_mem 71000mC, Err -1000mC, SampleCnt 1
03-07 22:04:16.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM, E0 -1000mC, E1 0mC
03-07 22:04:16.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu, op_value 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu0, op_value 1152000
03-07 22:04:16.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[0] to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): CPU[0] frequency limited to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu1, op_value 1152000
03-07 22:04:16.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[1] to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): CPU[1] frequency limited to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu2, op_value 1152000
03-07 22:04:16.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[2] to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): CPU[2] frequency limited to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu3, op_value 1152000
03-07 22:04:16.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[3] to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110): CPU[3] frequency limited to 1152000
03-07 22:04:16.669 D/ThermalEngine( 2110):?increase_mitigation_lvl: SS Id SS-POPMEM, Device cpu, Req. Freq 1152000Khz, Applied freq 1152000kHz, TC delay 1
03-07 22:04:16.669 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
下一輪timer:
剛才降頻了,這次采樣到溫度恢復到了70度,那么cpu恢復最大值,同時設置低有效45度。
03-07 22:04:16.669 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:04:17.669 D/ThermalEngine( 2110): algo_monitor: Timer EVT
03-07 22:04:17.669 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:04:17.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM Read pop_mem 70000mC, Err 0mC, SampleCnt 1
03-07 22:04:17.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM, E0 0mC, E1 -1000mC
03-07 22:04:17.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu, op_value 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu0, op_value 1209600
03-07 22:04:17.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[0] to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): CPU[0] frequency limited to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu1, op_value 1209600
03-07 22:04:17.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[1] to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): CPU[1] frequency limited to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu2, op_value 1209600
03-07 22:04:17.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[2] to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): CPU[2] frequency limited to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): devices_manager_set_op_value: DEV cpu3, op_value 1209600
03-07 22:04:17.669 I/ThermalEngine( 2110): ACTION: CPU - Setting CPU[3] to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110): CPU[3] frequency limited to 1209600
03-07 22:04:17.669 D/ThermalEngine( 2110):?decrease_mitigation_lvl: SS Id SS-POPMEM, Device cpu, Req. Freq 1209600Khz, Applied freq 1209600kHz, TC delay 0
03-07 22:04:17.669 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:04:17.669 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM, Read pop_mem 70000mC
03-07 22:04:17.669 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM Transition State 2
03-07 22:04:17.669 D/ThermalEngine( 2110): sensors_manager_set_thresh_lvl: tsens_tz_sensor2 Hi(0) 0, Lo(1) 45000, Interval(0) 0
03-07 22:04:17.669 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(1), Hi(0) 2147483647, Lo(1) 45000, Interval(0) 2147483647
03-07 22:04:17.669 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_0_type)
03-07 22:04:17.669 D/ThermalEngine( 2110): TSENS threshold at 0 enabled: 0
03-07 22:04:17.669 D/ThermalEngine( 2110): Setting up TSENS thresholds low: 45
03-07 22:04:17.669 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_1_type)
03-07 22:04:17.669 D/ThermalEngine( 2110): TSENS threshold at 1 enabled: 1
03-07 22:04:17.669 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
03-07 22:04:17.669 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:04:18.669 D/ThermalEngine( 2110): algo_monitor: Timer EVT
03-07 22:04:18.669 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:04:18.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM Read pop_mem 70000mC, Err 0mC, SampleCnt 1
03-07 22:04:18.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM, E0 0mC, E1 0mC
03-07 22:04:18.669 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
03-07 22:04:18.669 D/ThermalEngine( 2110): algo_monitor: Wait for EV
03-07 22:04:19.669 D/ThermalEngine( 2110): algo_monitor: Timer EVT
03-07 22:04:19.669 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:04:19.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM Read pop_mem 70000mC, Err 0mC, SampleCnt 1
03-07 22:04:19.669 D/ThermalEngine( 2110): handle_timer_sig: SS Id SS-POPMEM, E0 0mC, E1 0mC
03-07 22:04:19.669 I/ThermalEngine( 2110): Sensor:tsens_tz_sensor2:70000 mC
03-07 22:04:19.669 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM, Read pop_mem 70000mC
03-07 22:04:19.669 D/ThermalEngine( 2110): handle_thresh_sig: SS Id SS-POPMEM Transition State 2
03-07 22:04:19.669 D/ThermalEngine( 2110): sensors_manager_set_thresh_lvl: tsens_tz_sensor2 Hi(0) 0, Lo(1) 45000, Interval(0) 0
03-07 22:04:19.669 D/ThermalEngine( 2110): update_active_thresh: tsens_tz_sensor2 Active(1), Hi(0) 2147483647, Lo(1) 45000, Interval(0) 2147483647
03-07 22:04:19.669 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_0_type)
03-07 22:04:19.669 D/ThermalEngine( 2110): TSENS threshold at 0 enabled: 0
03-07 22:04:19.669 D/ThermalEngine( 2110): Setting up TSENS thresholds low: 45
03-07 22:04:19.669 D/ThermalEngine( 2110): enable_threshold: tsens_tz_sensor2 (/sys/devices/virtual/thermal/thermal_zone3/trip_point_1_type)
03-07 22:04:19.669 D/ThermalEngine( 2110): TSENS threshold at 1 enabled: 1
03-07 22:04:19.669 D/ThermalEngine( 2110): settimer: Start timer 1.000(sec)
03-07 22:04:19.669 D/ThermalEngine( 2110): algo_monitor: Wait for EV
總結:
??????? 以上就是高通的thermal機制的介紹,它可以在溫度過高時,通過軟件對多核CPU的降頻和關閉,達到降低溫度一個目的。希望通過本文對大家能有一定幫助,對高通的thermal機制有個大概的了解,并對自己的產品做一個熱量控制調試。
總結
以上是生活随笔為你收集整理的Qualcomm thermal的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 5.1 修改系统默认语言
- 下一篇: MSM8994 thermal管理