您的位置:網(wǎng)站首頁(yè) > 電器維修資料網(wǎng) > 正文 >
修改HTC Soc控制手機(jī)耗電
來(lái)源: 日期:2013-11-2 20:36:32 人氣:標(biāo)簽:
在手機(jī)性能過(guò)剩的情況下,我們可以手動(dòng)調(diào)整soc參數(shù),在不影響手機(jī)日常使用的前提下,來(lái)降低cpu頻率和降低降溫閥值,這樣可以很好的控制手機(jī)發(fā)熱。同樣將下載的rom包用解壓工具解壓,一般soc文件都保存在system文件夾中,具體目錄是“/system/etc/init.post_boot.sh”和“/system/etc/init.qcom.post_boot.sh”。而文件我們可以通過(guò)記事本直接打開(kāi),由于htc one是采用的msm8960平臺(tái)的soc,所以我們要搜索“case "$target" in”,并更改字樣為:
case "$target" in
"msm8960")
boot文件可以直接利用寫(xiě)字板打開(kāi)
要修改soc,首先應(yīng)該著手考慮的就是cpu,畢竟它是手機(jī)運(yùn)行的核心,也是日常使用 容易發(fā)熱的部件。要修改soc需要在linux環(huán)境中進(jìn)行(如果沒(méi)有安裝linux系統(tǒng),也可以在windows系統(tǒng)中安裝虛擬機(jī)進(jìn)行編譯,不過(guò)具體的操作同我們反編譯后用notepad++修改完全相同。而且由于沒(méi)有改變文件類型,在修改后我們直接選擇保存即可,無(wú)需進(jìn)行專門(mén)的打包,或者簽名操作。然后利用“廚房”工具,直接將修改后的rom打包重新刷入手機(jī)即可。
htc one使用的是高通驍龍600 cpu,高通驍龍600雖然性能強(qiáng)悍,但是耗電相對(duì)也比較嚴(yán)重,在進(jìn)行省電優(yōu)化時(shí)著重需要調(diào)整控制cpu的兩個(gè)調(diào)速器:ondemand(按需)以及msm-dcvs(msm動(dòng)態(tài)頻率電壓調(diào)節(jié))。
調(diào)整ondemand(按需)可以讓cpu的執(zhí)行率大大提高,效率上也能得到優(yōu)化。而調(diào)整msm-dcvs(msm動(dòng)態(tài)頻率電壓調(diào)節(jié))可以讓cpu更加合理的運(yùn)行,通過(guò)調(diào)整它可以很好的控制待機(jī)耗電。
在進(jìn)行省電和調(diào)整時(shí),需要對(duì)cpu的四個(gè)核心進(jìn)行專門(mén)的設(shè)置,這些數(shù)據(jù)的參數(shù),都是進(jìn)過(guò)仔細(xì)驗(yàn)證的,可以保證手機(jī)流暢運(yùn)行的情況下, 大程度的節(jié)省電量大家可以放心修改,具體的方法如下:
省電設(shè)置:
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
性能設(shè)置:
使用ondemand
echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
echo 50 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
echo 30000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate
直接使用msm-dcvs
echo "msm-dcvs" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "msm-dcvs" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
echo "msm-dcvs" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor
echo "msm-dcvs" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor
大神技巧:修改soc控制手機(jī)發(fā)熱量
現(xiàn)在的智能手機(jī),雖然性能越來(lái)越強(qiáng)悍,但是發(fā)熱卻也同樣越來(lái)越嚴(yán)重,特別是像htc one這樣使用金屬材質(zhì)打造的手機(jī),因?yàn)闄C(jī)身導(dǎo)熱性更好,相同溫度下同其他材質(zhì)相比用戶會(huì)感覺(jué)機(jī)身溫度更高,所以控溫顯得更為重要。對(duì)溫度的控制我們依然可以通過(guò)修改soc來(lái)實(shí)現(xiàn)。
gpu頻率調(diào)節(jié):
htc one所配備的gpu是adreno 320 ,性能雖然強(qiáng)悍,但是發(fā)熱卻同樣不容小視,而控制gpu發(fā)熱唯一有效的方式就是降頻,經(jīng)過(guò)長(zhǎng)時(shí)間的試驗(yàn),發(fā)現(xiàn)可以將原來(lái)400mhz的頻率降低到320mhz,在不影響手機(jī)性能的同時(shí),讓手機(jī)溫度明顯降低,具體的操作如下:
echo 320000000 > /sys/devices/platform/kgsl-3d0.0/kgsl/kgsl-3d0/max_gpuclk
使用第三方內(nèi)核
由于htc的官方內(nèi)核已經(jīng)加密,所以無(wú)法通過(guò)直接編譯內(nèi)核進(jìn)行降溫操作,不過(guò)可以使用第三方的開(kāi)源內(nèi)核進(jìn)行編譯來(lái)實(shí)現(xiàn)相應(yīng)的降溫操作,這里以elementalx內(nèi)核為例,告訴大家如何進(jìn)行降溫閥值的修改。
ex內(nèi)核降溫閥值總共四個(gè),每一個(gè)可以根據(jù)自己的需要進(jìn)行專門(mén)的設(shè)置,而且elementalx內(nèi)核有專門(mén)的溫度監(jiān)控機(jī)制,可以根據(jù)手機(jī)溫度自動(dòng)調(diào)整cpu頻率。
為了很好地控制手機(jī)溫度,建議從46攝氏度開(kāi)始進(jìn)行頻率限制,將cpu頻率降到1242mhz(elementalx內(nèi)核l2頻率為1242mhz,所以1242mhz是平衡點(diǎn)),54攝氏度降頻到918mhz(通過(guò)實(shí)測(cè)1242mhz滿載時(shí)就很難超過(guò)54攝氏度了),75攝氏度降為702mhz,85攝氏度降為度384mhz。具體操作如下:
降溫閥值:
echo 46,54,75,85 > /sys/module/msm_thermal/parameters/limit_temp_degc
降溫對(duì)應(yīng)頻率:
echo 1242000,918000,702000,384000 > /sys/module/msm_thermal/parameters/limit_freq
大神技巧:超頻二級(jí)緩存和gpu讓手機(jī)性能更為強(qiáng)
超頻二級(jí)緩存
cpu會(huì)直接把 常用的數(shù)據(jù)存放在緩存中,在需要時(shí)提取,手機(jī)在進(jìn)行一些復(fù)雜運(yùn)算時(shí),緩存就能起到很大作用。而高通cpu的二級(jí)緩存頻率普遍低于cpu頻率,這就讓二級(jí)緩存成為了cpu性能在發(fā)揮時(shí)的一個(gè)瓶頸。對(duì)手機(jī)cpu的二級(jí)緩存進(jìn)行超頻,可以很大程度的提升手機(jī)性能。
二級(jí)緩存超頻后性能提升效果圖
而對(duì)二級(jí)緩存進(jìn)行超頻的操作也相對(duì)比較簡(jiǎn)單,首先按照上期的內(nèi)核編譯法,將內(nèi)核進(jìn)行編譯,然后在在內(nèi)核源碼中,找到“\arch\arm\mach-msm\acpuclock-8064.c”文件并在其中搜索:“static struct l2_level l2_freq_tbl[] __initdata = {”,然后找到第14檔,然后將14檔對(duì)應(yīng)的cpu頻率改為1134mhz,將15檔對(duì)應(yīng)的cpu頻率改為1242mhz或1296mhz,這樣設(shè)置可以在需要cpu滿負(fù)荷工作時(shí)更加穩(wěn)定,二級(jí)緩存性能也能全面提升,當(dāng)cpu空閑時(shí)也能更加節(jié)電。
然后將內(nèi)核代碼中“1566,1674,1728”的l2字符后的數(shù)字改為“15”并保存即可,這樣對(duì)二級(jí)緩存超頻的操作就結(jié)束了。經(jīng)常抱怨cpu性能不夠的用戶,在執(zhí)行這個(gè)操作之后可以較好地提升手機(jī)性能。
修改二級(jí)緩存時(shí)一定要非常細(xì)心
gpu超頻
雖然htc one使用的gpu adreno 320性能很強(qiáng)大,但是對(duì)于1080p的屏幕分辨率,400mhz的adreno 320還是會(huì)多少有些吃力,要解決這個(gè)問(wèn)題, 好的方法還是對(duì)gpu進(jìn)行超頻。
不同頻率的gpu跑分結(jié)果
從測(cè)試圖中我們可以看出,gpu在保持在450mhz時(shí),性能 為理想。為gpu超頻的具體方法和為二級(jí)緩存超頻沒(méi)有什么太大的差別,都是通過(guò)編譯內(nèi)核實(shí)現(xiàn)的。
首先將內(nèi)核進(jìn)行編譯,然后在內(nèi)核源碼的“\arch\arm\mach-msm”下找到“board-m7-gpu.c”文件,打開(kāi)并搜索“.gpu_freq = 400000000”,然后將“400000000”改為“450000000”。再找到“clock-8960.c文件”,打開(kāi)并搜索“static struct clk_freq_tbl clk_tbl_gfx3d_8960[] = {同時(shí)在值“f_gfx3d(400000000, pll2, 1, 2)”下面加入代碼“f_gfx3d(450000000, pll15, 1, 2)”。繼續(xù)搜索“static unsigned long fmax_gfx3d_8064[max_vdd_levels] __initdata = {”,找到“[vdd_dig_high] = 400000000”把“400000000”改成“450000000”。 后搜索“static struct rcg_clk gfx3d_clk = {”并找到值“vdd_dig_fmax_map3(low, 128000000, nominal, 300000000, high, 400000000)”同樣改為“450000000” 后保存并將內(nèi)核編譯就可以完成gpu的超頻了。
【看看這篇文章在百度的收錄情況】