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