我的小i就是这样的情况,电池电量始终为0,所以不插电开不了机,进系统后立马报电量空自动关机了,所以自己编译了一个内核,使原来已经半砖状态的手机又起死回生了。
使用了飞人在这个帖子中的刷机模式(谢谢飞人的无私共享):
http://www.limofans.com/forum.php?mod=viewthread&tid=44056
主要是修改了内核的引导参数,从TF卡第四个分区进行引导:
CONFIG_CMDLINE="root=/dev/mmcblk0p4 rootfstype=ext3 mem=256M rootwait console=ttyS0,38400"
另外修改了电池I2C驱动程序,使电量返回值始终为接近满电状态。修改了文件arch/arm/sleep_charger.c
int sleep_get_max17040_battery_soc(void)
{
int soc = sleep_max17040_read(REG_SOC);
return 95;//soc;
}
和modules/battery/i2c_drv.c
int get_max17040_battery_soc(void)
{
int soc = max17040_read(REG_SOC);
return 95;//soc>>8;
}
int get_max17040_battery_precision_soc(void)
{
int soc = max17040_read(REG_SOC);
return 9500;//((soc>>8) *100) + (soc & 0xff)*4/10 ;
}
还有,如果你进不去刷机模式了,可以尝试先按住三个键,再上电池,我的就只能这样进刷机模式。
那些16G没坏的可以看我这个帖子:
http://www.limofans.com/forum.php?mod=viewthread&tid=652274
另这次编译内核发现个方法,只要在Makefile中加这两句,就可以一次性编译过去,不会报任何错,也不用改代码:
export PRJROOT = ..
export LINUX_VERSION = 2.6.24.7
编译器用的CodeSourcery arm-2008q1-126-arm-none-linux-gnueabi,好像2008q1之后的版本改了什么东西,默认配置下编译都会报错
之前用的那种方式基本上很难进去刷机模式了,现在发现个更好的方法,就是直接装电池,然后很快地按住音量减+拍照+开机,在充电图标出来之前,这样基本上每次都能进去刷机模式了。