安卓系统关机重启是什么原因(安卓手机老是关机重启是什么原因)

极力推荐Android 开发大总结文章:欢迎收藏

程序员Android 力荐 ,Android 开发者需要的必备技能

本篇文章主要介绍 Android 开发中的 异常重启 部分知识点,通过阅读本篇文章,您将收获以下内容:

一、lk 阶段重启

二、在kernel关机充电阶段重启

三、关闭异常掉电机制

在低电量时,插着充电器关机充电,手机会不断重启。

一、lk 阶段重启

低电量关机充电不断重启问题在lk 阶段重启的log如下

Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, Power Off

重启原因

设备支持DEVICE_TREE_SUPPORT,在lk启动kernel的boot_linux_fdt

int boot_linux_fdt(void *kernel, unsigned *tags, char *cmdline, unsigned machtype, void *ramdisk, unsigned ramdisk_size){ ............... #ifdef MTK_KERNEL_POWER_OFF_CHARGING /*Prevent the system jumps to Kernel if we unplugged Charger/USB before*/ if(kernel_charging_boot() == -1) { dprintf(CRITICAL,\"[%s] Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, Power Off\n\", __func__); #ifndef NO_POWER_OFF mt6575_power_off(); #endif ............... }}

由于在lk阶段的电流过大,导致charger的电压被拉低到4.3v以下,因为 VCDT_LV_VTH默认的电压是4.3v,所以在detect charger回返回false,由于插充电器的原因在power off之后又起来导致了不断重启的现象,其中VCDT_LV_VTH的设置可以参考datasheet的设置。

解决方案

1)首先检查lk阶段充电电流设置的大小,注意检查backlight_on设置的level。2)如果是用的swtich ic charger,首先的开启dpm功能,dpm功能是一种保护 charger vol在大电流的情况下不被拉的很低,Vin-dpm 电压的设置范围是 4.2-4.76v,default的值是4.2,一般要设置为4.5。3)如果在以上的修改还不生效,就把VCDT_LV_VTH值设置为4.2v。二、在kernel关机充电阶段重启

在kernel阶段重启有两个原因如下:

在关机充电时,charger detect存在的情况下,但是如果被识别为usb host mode,这时就会放回false,引起了power off这时应该去检测usb的id pin硬件上是不是被拉低了

kal_bool upmu_is_chr_det(void){ ........... if (mt_usb_is_device()) { battery_log(BAT_LOG_FULL, \"[upmu_is_chr_det] Charger exist and USB is not host\n\"); return KAL_TRUE; } else { battery_log(BAT_LOG_CRTI, \"[upmu_is_chr_det] Charger exist but USB is host\n\"); ...........}在charger电压超过了/kernel-3.10/drivers/power/mediatek/battery_common.c#charger_hv_detect_thread里面设置的电压,默认为6.5v这时,就会产生cable out,接着就会power off三、关闭异常掉电机制

修改一下异常掉电机制代码vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/k37mv1_bsp/inc/cust_rtc.h


关闭异常掉电机制