您的位置:网站首页 > 电器维修资料网 > 正文 >
修改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的超频了。
【看看这篇文章在百度的收录情况】