日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

高通Thermal Overview之thermal-engine

發(fā)布時間:2023/12/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 高通Thermal Overview之thermal-engine 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)絡(luò)上的參考有限,僅有的一個thermal-engine的一篇博客也不是最新的,參考的這篇博客再加上最新的msm8953平臺的thermal-engine,對thermal-engine的配置、算法、加載進行介紹。

代碼位置vendor/qcom/proprietary/thermal-engine/

默認(rèn)配置文件thermal-engine.conf,里面目前用到的thermal控制算法monitorssvirtual


1.base format:

Strings

說明

{debug}

可選,若有此選項表示使能調(diào)試信息

sampling

默認(rèn)采樣率,以ms為單位

[<Algorithminstance label>]

算法實例標(biāo)簽

algo_type

算法類型,必須是算法實例的第一個字段

disable

可選,用于默認(rèn)情況下禁止該算法實例起作用


2.算法類型

inc/thermal_config.h enumalgo_type { UNKNOWN_ALGO_TYPE= -1, MONITOR_ALGO_TYPE= 0, PID_ALGO_TYPE, SS_ALGO_TYPE, TB_ALGO_TYPE, EQUILIBRIUM_TYPE, VIRTUAL_SENSOR_TYPE, BWLM_ALGO_TYPE, ALGO_IDX_MAX, };

monitor

如果溫度達(dá)到thresholds,觸發(fā)響應(yīng)的動作(限制),當(dāng)溫度低于thresholds_clr,結(jié)束動作(限制)

Strings

說明

algo_type

monitor

sensor

傳感器名稱

sampling

采樣率ms

descending

可選,默認(rèn)門限是升序,有此字段后門限順序為降序

thresholds

門限值 mCor mA

thresholds_clr

清除門限值

actions

達(dá)到門限時的動作,多個動作時用'+'連接

action_info

動作額外信息,多個額外信息間用'+'連接


pid

ProportionalIntegralDerivative,比例-積分-微分控制,當(dāng)溫度超過最大允許值時,CPU需要降頻,并且使用pid算法將溫度控制在set_point,該控制器輸出的結(jié)果可以被轉(zhuǎn)換成最大允許CPU頻率。

pid簡易的解釋,操作人員控制電加熱爐的爐溫,爐溫會設(shè)定一個set_point(需要維持的溫度),并且顯示當(dāng)前的溫度,操作人員根據(jù)觀察后,通過旋轉(zhuǎn)電位器的轉(zhuǎn)角,來控制電流的大小,進一步來控制溫度。增加或者減小電流的比例,與P值相關(guān);這個比例的誤差,與I值相關(guān);變化速率和未來趨勢與D值相關(guān)。


Strings

說明

algo_type

pid

sampling

采樣率ms

sensor

傳感器名稱

device

PID算法調(diào)整的設(shè)備

set_point

PID算法調(diào)整的目標(biāo)值mCor mA

set_point_clr

PID算法停止調(diào)整的值

p_const

PID算法中的P常量

i_const

PID算法中的I常量

d_const

PID算法中的D常量

i_samples

積分組件報錯的積分樣本數(shù)

dev_units_per_calc

Unitsof device adjustment per PID calculation outcome

每一個PID算法輸出調(diào)整設(shè)備單元值

freq_scale

Frequencyscaling factor for DUAL PID


ss

DTM策略,即DynamicThermalManagement,動態(tài)控制算法有兩個模式,DTM(用于頻率控制)PID(用于溫度保持)PID上文已經(jīng)描述,DTM是基于溫度setpoint,提升或這降低CPU的最大允許頻率。每一個最大允許頻率的調(diào)解是基于DCVSfrequency table中的可用頻率steps。溫度高于setpoint時,最大允許頻率會按step逐漸下降,溫度高于setpoint時,最大允許頻率會按step逐漸上升。該策略可以用于控制GPU頻率。


Strings

說明

algo_type

ss

sampling

采樣率ms

sensor

傳感器名稱

device

PID算法調(diào)整的設(shè)備

set_point

PID算法調(diào)整的目標(biāo)值mCor mA

set_point_clr

PID算法停止調(diào)整的值

time_constant

Multiplierof sampling period for holding off adjustments

whencurrent and last error sample are equivalent

device_max_limit

可選,fieldto specify device performance mitgation

Ifit is defined, this instance mitigates device up todevice_max_limit value.

Itexpects value in KHz for cpu device and Hz for gpu device

device_perf_floor

可選,fieldto specify device performance mitgation floor.

Ifit is defined, this instance stops mitigating a device to a levelwith a corresponding perf_lvl at or above device_perf_floor.


tb

8998最新支持的算法TokenBucket算法。頻率輸出通過反饋進行控制,類似PID算法概念。當(dāng)溫度高于set_point的時候,頻率降幅相對較大,然后通過頻率限制,進行溫控維持。


Strings

說明

algo_type

ss

sampling

采樣率ms

sensor

傳感器名稱

device

PID算法調(diào)整的設(shè)備

set_point

PID算法調(diào)整的目標(biāo)值mCor mA

set_point_clr

PID算法停止調(diào)整的值

time_constant

Multiplierof sampling period for holding off adjustments

whencurrent and last error sample are equivalent

up_loop_gain

tokenbucket reward calculations的增益乘法器

down_loop_gain

tokenbucket penalty calculations的增益乘法器

auto_penalty

高于set_point時,增加的額外penalty

Shouldbe in units of temperature/temp_scale_factor

auto_reward

低于set_point時,增加的額外reward

Shouldbe in units of temperature/temp_scale_factor

temp_scale_factor

溫度級別劃分因子。Dividerfor temperature to get it to units of Degree Celsius from thevalue returned by reading the sensor.

freq_scale_factor

頻率級別劃分因子。Multiplierfor device frequency readings. Default device frequency unit isKHz, so set to 1 if device frequency is read in KHz, 1000 for Hz.This is necessary because GPU freq is often in Hz.

quadratic_reward

Boolean(zero false, nonzero true) to use a quadratic reward system in thecontrol loop

quadratic_penalty

Boolean(zero false, nonzero true) to use a quadratic penalty system inthe control loop

use_timeout

Boolean(zero false, nonzero true) to use a timeout when exiting theactive control zone for this client. This helps in smoothinghandoff between LMH and thermal sensors

timeout

如果use_timeout==true,當(dāng)小于等于set_point時,該算法結(jié)束之前將等待'timeout'number of interruptsfeedingreward into the system of value 'set_point' - 'set_point_clr'.

unified_rail

If'unified_rail' is true for any configuration instance of thealgorithm, the unified rail logic of token bucket is applied


virtual

可以利用兩個以上的Tsensor,通過加權(quán),組成一個虛擬的sensor8998視頻時間15:20

Strings

說明

algo_type

virtual

trip_sensor

傳感器名稱

set_point

當(dāng)高于此溫度時,虛擬傳感器開始polling模式

set_point_clr

當(dāng)高于此溫度時,虛擬傳感器停止polling模式

sensors

用于計算溫度總和的傳感器數(shù)組

weights

權(quán)重值數(shù)組

math

默認(rèn)值0,使用weigths,可選的,1for minimum of sensors, 2 for max of sensors

sampling

采樣率ms


3.配置文件字段取值解釋

'thresholds'/'thresholds_clr'/'actions'/'action_info',最多接受8個空格分開的values

'actions'field


actions

說明

none

-ACTION - Do nothing

-ACTION_INFO - ignored

report

-ACTION - Report threshold crossing to UI

-ACTION_INFO - ignored

備注:

通過抽象本地socket"THERMALD_UI",以每行獨立的string格式,發(fā)送thresholdcrossing information。清除或者觸發(fā)alevel,或者其他action達(dá)到這個level將會導(dǎo)致消息的發(fā)送。參數(shù)按照以下順序發(fā)送

*sensorname - Name of sensor reporting

*temperature - Current temperature

*current_threshold_level - current threshold level triggered orcleared

*is_trigger - "true" on level trigger, "false"on level clearing

cpu

-ACTION - CPU調(diào)整cpu頻率

-ACTION_INFO - Max CPU frequency in KHz

cpuN

-ACTION - CPU frequency scaling where N is the specific CPU core[0..MAX CORES]

-ACTION_INFO - Max CPU frequency in KHz

clusterN

-ACTION - CLUSTER frequency scaling where N is the specific CLUSTERID

-ACTION_INFO - Max CLUSTER frequency in KHz

hotplug_N

-ACTION –拔掉第Ncpu

-ACTION_INFO - 0 for online a core, or 1 to offline it.

lcd

-ACTION - LCD brightness throttling,限制lcd的亮度

-ACTION_INFO - 0-255 value for max LCD brightness

modem

-ACTION - Request throttling of modem functionality,請求限制modem功能

-ACTION_INFO - 0-3 throttling level for modem mitigation

fusion

-ACTION - Request throttling of fusion modem functionality

-ACTION_INFO - 0-3 throttling level for fusion modem mitigation

battery

-ACTION - Battery charging current throttling

-ACTION_INFO - 0-3 throttling level for battery charging current

gpu

-ACTION - GPU frequency scaling

-ACTION_INFO - Max GPU frequency in Hz

wlan

-ACTION - WLAN throttling

-ACTION_INFO - 0-4 throttling level for WLAN mitigation

shutdown

-ACTION - Shutdown target

-ACTION_INFO - Shutdown delay in ms

vdd_

restriction

-ACTION - Request voltage restriction of all vdd rails on SoC

-ACTION_INFO - 1 for request for vdd_restriction,

0for release vdd_restriction

camera

-ACTION - camera fps throttling and camera shutdown mitigation

-ACTION_INFO - 0-3 throttling level for camera fps mitigation,

10level for camera app shutdown

camcorder

-ACTION - camcorder fps throttling and camcorder shutdownmitigation

-ACTION_INFO - 0-3 throttling level for camcorder fps mitigation,

10level for camcorder app shutdown

mdp

-ACTION - Request throttling of MDP CX voting

-ACTION_INFO - 0-3 throttling level for MDP mitigation

venus

-ACTION - Request throttling of VENUS CX voting

-ACTION_INFO - 0-3 throttling level for VENUS mitigation

modem_cx

-ACTION - Request throttling of modem CX voting

-ACTION_INFO - 0-3 throttling level for MODEM CX mitigation


'device'field


device

說明

cpu

-DEVICE - Dynamic CPU frequency scaling

cpuN

-DEVICE - Dynamic CPU frequency scaling where N is the specific CPUcore [0..MAX CORES]

clusterN

-DEVICE - Dynamic CLUSTER frequency scaling where N is the specificCLUSTER ID

gpu

-DEVICE - Dynamic GPU frequency scaling


4.配置文件示例

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)采樣率為1ssensorPMIC_THERM設(shè)置的采樣率是5s,覆蓋了默認(rèn)的;

2)當(dāng)溫度升到40.2度以上時,觸發(fā)門限1,調(diào)節(jié)CPU最大允許頻率為1188000KHz,在本例中,由于此頻率是最大值,因此實際無動作;同時上報此消息,action_info0被忽略;

3)上升到45度以上時,觸發(fā)門限2,下降到43度以下時,清除門限2,調(diào)節(jié)CPU最大允許頻率為368640 KHz

4)當(dāng)門限2在低于43度清除時,調(diào)節(jié)CPU的最大允許頻率回到1188000KHz上;

5)當(dāng)門限1在低于38度清除時,產(chǎn)生一個清楚門限1reportallmitigationreset


2:

debug sampling 2000[PMIC_THERM_MONITOR] algo_type monitor sensor PMIC_THERM sampling 5000 thresholds 40200 45000 50000 thresholds_clr 38000 43000 48000 actions cpu+report cpu report+shutdown action_info 768000+0 368640 0+6000

描述:

1)使能debuglogging輸出;

2)默認(rèn)采樣率2ssensorPMIC_THERM的采樣率設(shè)置為5s

3)上升到大于40.2度觸發(fā)門限1,下降到低于38度清除門限1,當(dāng)門限1觸發(fā)時,最大允許CPU的頻

率是768000KHz,并且產(chǎn)生一個report(action_infovalue 0 is ignored)

4)上升到大于45度觸發(fā)門限2,下降到低于43度清除門限2,當(dāng)門限2觸發(fā)時,最大允許CPU的頻率

368640KHz

5)上升到大于50度觸發(fā)門限3,下降到低于48度清除門限3,當(dāng)門限3觸發(fā)時,產(chǎn)生一個report并且

6s后關(guān)機。


3:

debug 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)采樣率是2sbatterycurrent limit 'bcl'的采樣率設(shè)置為1s

3)當(dāng)ibat上升到(imax- 100mA)時,觸發(fā)門限1,當(dāng)下降到(imax– 500mA)時,清除門限1When

triggered,generate a report (action_info value 0 is ignored).

4)當(dāng)ibat上升到imax時,觸發(fā)門限2,當(dāng)下降到(imax– 100mA)時,清除門限2When

triggered,generate a report (action_info value 0 is ignored).


4:

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_calc10000
描述:

1)使能debuglogging

2)PID算法實例標(biāo)簽為TEST_PID

3)使用tsens_tz_sensor0傳感器

4)被調(diào)節(jié)的設(shè)備是CPU

5)采樣時間1s

6)set_point值是PID調(diào)節(jié)算法的門限值和PID算法的設(shè)定值;

7)set_point_clr是停止PID調(diào)節(jié)算法的門限值;

8)p_const, i_const, d_constPID等式中的p,i,d常量;

9)dev_units_per_calc 10000kHz(kHz unit because this is CPU device) ismultiplied

withPID calculation outcome to determine adjustment on the cpu device.


5:

debug[virtual-sensor-0] algo_type virtual trip_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_calc5000

描述:

1)PID實例Test-PID基于virtual-sensor-0的結(jié)果;

2)virtual-sensor-0需要用戶手動定義;

3)trip_sensor用來指示虛擬傳感器何時開始進入polling模式(輪詢)

4)trip_sensor必須為常規(guī)傳感器,不能為另外一個虛擬傳感器;

5)set_pointtripsensor的門限值,當(dāng)高于此門限值時,tripsensor將從中斷模式進入輪詢模式,輪詢

頻率由虛擬傳感器的sampling字段設(shè)置

6)set_point_clrtripsensor的門限值,當(dāng)?shù)陀诖碎T限值時,tripsensor將停止輪詢模式然后等待下一個

門限事件;

7)sensors定義了常規(guī)傳感器數(shù)組,這些傳感器要參與權(quán)重溫度的計算

8)weights給定了傳感器數(shù)組的權(quán)重值;

9)虛擬傳感器的set_point必須小于pid算法的set_point,以便當(dāng)達(dá)到set_pointpid能收到通知,另外,

如果虛擬傳感器未進入輪詢模式,pid將不能獲取到它的溫度;

10)如果tirpsensor不支持從中斷模式到查詢模式的改變,第8條可以被忽略。此時虛擬傳感器的采樣率將應(yīng)該和pid的采樣率一致。


6:

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)使能debuglogging

2)當(dāng)采樣電流達(dá)到imax70%時,門限1觸發(fā),調(diào)整cpu最大允許頻率為768000KHz

3)當(dāng)采樣電流達(dá)到imax90%時,門限2觸發(fā),調(diào)整cpu最大允許頻率為384000KHz

4)bcm僅支持2級門限調(diào)節(jié);

5)有效的門限值取值為:40000,50000,60000,70000,80000,90000


7:

debug[TB-CPU4] algo_type tb sampling 10 sensor tsens_tz_sensor13 device cluster1 set_point 85000 set_point_clr 50000 time_constant 1 up_loop_gain 2 down_loop_gain 3 auto_penalty 1.0 auto_reward 0.0 temp_scale_factor 1000 freq_scale_factor 1 quadratic_reward 1 quadratic_penalty 1 use_timeout 0 timeout 1

1)使能debuglogging

2)我們配置CPU4tokenbucket控制。由于算法是tbsensortsens_tz_sensor13devicecluster1

這個instancemonitortsens_tz_sensor13并且控制cluster1的頻率;

3)10ms發(fā)生一次溫度讀取和頻率mitigation

4)當(dāng)溫度上升到85度時,將觸摸3)事件,溫度下降到50度時clr

5)time_constant is currently unused but is reserved for futureuse.當(dāng)前使用,為未來使用保留

6)up_loop_gain set to 2 means that for every degree thattsens_tz_sensor13 is below its set_point, the reward
willincrease by a factor of 2. --2倍

7)down_loop_gain set to 3 means that for every degree thattsens_tz_sensor13 overshoots its set_point, the

penalty willincrease by a factor of 3. --3

8)auto_penalty of 1.0 means that the number of degrees of overshootused to calculate penalty will always be

incrementedby 1.0. This means that at 85C, the temperature overshoot will be 1C,86C->2C, etc.

9)auto_reward of 0.0 means that the number of degrees of undershootused to calculate the reward will not be

augmented.This means that at 80C, the temperature undershoot will be 5C,81C->4C, etc.

10)temp_scale_factorof 1000 means that the temperature readings from tsens_tz_sensor13are received in mC

andnot C. This used to vary between tsens sensors and other types ofsensors in the thermal-engine such as

gensensors.

11)freq_scale_factorof 1 means that the frequency readings from device1 are recieved inkHz. This varies

betweendevices, for instance the GPU frequency readings on 8994 are receivedin Hz, and therefore the

freq_scale_factorfor the 8994 GPU is 1000.

12)quadratic_rewardof 1 means to square the amount of reward. Whereas reward wouldnormally be

(undershoot *up_loop_gain), if this value is nonzero then reward is calculated as(undershoot *

up_loop_gain)^2.

13)quadratic_penaltyof 1 means to square the amount of penalty. Whereas penaltywouldnormally be

(overshoot *down_loop_gain), if this value is nonzero then penalty is calculatedas (overshoot *

down_loop_gain)^2.

14)use_timeoutof 0 means that when the readings on tsens_tz_sensor13 reach theirset_point_clr, the algorithm

shouldimmediately stop polling and stop mitigating. If this value werenonzero, then the algorithm would

wait fortimeout number of sequential interrupts (i.e. timeout * sampling ms)in which the reading from

tsens_tz_sensor13was below set_point_clr before ceasing to poll and mitigate.


5. 加載

關(guān)于sperakercall80-N9649-1_D中的內(nèi)容,ThermalCalibration Procedure for Speaker Coil Protection

speakercoil(線圈)thermal校準(zhǔn)的目標(biāo)是準(zhǔn)確的測量出來自溫度傳感器中的speakercoil的溫度

可以通過三步實現(xiàn):

1.轉(zhuǎn)換resistanceto temperature –通過實際測量找出他們之間的線性關(guān)系b= T- mR

2.決定thermalmanagement algorithm中的offsetvalue – 查看logcat顯示最小溫度32度,實際萬用表測量是27度,那么offset= 27 -32 = -5

3.Program offset into device –這個是thermal-engine-o輸出sperker-cal內(nèi)容

[SPEAKER-CAL] sampling30000 30000 10 1800000 sensorpm8953_tz sensorstsens_tz_sensor1 tsens_tz_sensor2 tsens_tz_sensor3 tsens_tz_sensor14tsens_tz_sensor15 temp_range6000 10000 2000 max_temp45000 offset-4000

已經(jīng)定義的宏,ANDROID

未定以的宏,ENABLE_OLD_PARSER

thermal.c

structthermal_setting_tthermal_settings;//包含一個setting_info鏈表,它包含關(guān)于thermal算法的基本數(shù)據(jù) intmain(int argc, char **argv) { … if(!config_file) { if((config_file = get_target_default_thermal_config_file())) info("Usingtarget config file '%s'\n", config_file); else//這條路system/etc/thermal-engine.conf info("Notarget config file, falling back to '%s'\n", CONFIG_FILE_DEFAULT); } if(output_conf) {//thermal-engine -o,dumpconfig file of active settings devices_manager_init(); devices_init(minimum_mode); sensors_manager_init(); ... return 0; } … devices_manager_init();//啥也沒做 devices_init(minimum_mode);//通過讀取sys節(jié)點信息,初始化gpufreq、cpufreq、clusterfreq、 thermal_ioctl、qmi_communication、各種dev、vdd*、profile_switch、lcd、battery_mitigation等等 target_algo_init();///*Vote to keep kernel mitigation enabled until init is done */ kernel_dev =devices_manager_reg_clnt("kernel");//獲取/sys/kernel/下的節(jié)點信息,并且組裝成鏈表 if(kernel_dev == NULL) { msg("%sFailed to create kernel device handle\n", __func__); } req.value =1; device_clnt_request(kernel_dev,&req);sensors_manager_init//啥也沒做 sensors_init(minimum_mode);//1.通過/sys/module/msm_thermal/sensor_info開始初始化sensors[], 2./sys/devices/virtual/thermal/thermal_zone*,繼續(xù)初始化sensors[], 3.將bcl加入structsensors_mgr_sensor_info *sensor_list if(thermal_algo_framework_init() != THERMAL_ALGO_SUCCESS){//thermal_threads = NULL; info("%s:Error initializing thermal algorithm framework", __func__); return 1; }init_settings(&thermal_settings);//清0 pid_init_data(&thermal_settings);//初始化定義好的pid數(shù)據(jù),加入thermal_settings.setting_info里 thermal_monitor_init_data(&thermal_settings);//monitor speaker_cal_init_data(&thermal_settings); ss_init_data(&thermal_settings); tb_init_data(&thermal_settings);virtual_sensors_init_data(&thermal_settings); virtual_sensors_init(&thermal_settings,config_file);//初始化并且loadconfig_file數(shù)據(jù)到虛擬傳感器鏈表load_config(&thermal_settings,config_file, LOAD_ALL_FLAG);//thermal_config_v2.cthermal_server_init(); /*創(chuàng)建4個server套接字,并且使用select方法監(jiān)聽 1.sockfd_server_send,通知已經(jīng)注冊client端thermalcurrent level 2.sockfd_server_recv,獲得client發(fā)送數(shù)據(jù),并調(diào)用callback相應(yīng)更新,在pid、montior、speaker、ss后面等初始化時加入了callback 3.sockfd_server_log,將獲得與客戶端鏈接的新fd加入socket_fd[MAX_SOCKET_FD] 4.sockfd_server_recv_passive,清緩存,清除select描述符集,清除thermal_send_fds[],里面存儲了每次新連接的clientfd */ pid_algo_init(&thermal_settings);//初始化pid,并且開啟線程pid_algo_monitor thermal_monitor(&thermal_settings); ss_algo_init(&thermal_settings); speaker_cal_init(&thermal_settings); if(tb_algo_init(&thermal_settings) != THERMAL_ALGO_SUCCESS) { info("%s:Error initializing token bucket", __func__); return 1; } if(kernel_dev) device_clnt_cancel_request(kernel_dev); while (1) pause(); ...//釋放資源 }


總結(jié)

以上是生活随笔為你收集整理的高通Thermal Overview之thermal-engine的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。