zoukankan      html  css  js  c++  java
  • 关机充电,手机不断重启问题分析

    极力推荐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启动kernelboot_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
    ", __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.76vdefault的值是4.2,一般要设置为4.5
    • 3)如果在以上的修改还不生效,就把VCDT_LV_VTH值设置为4.2v

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

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

    1. 在关机充电时,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
    ");
    		return KAL_TRUE;
    	} else {
    		battery_log(BAT_LOG_CRTI,
      	      "[upmu_is_chr_det] Charger exist but USB is host
    ");
         ...........
    }
    
    1. 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
    关闭异常掉电机制

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

    既然都看到这里,领两个红包在走吧!
    以下两个红包每天都可以领取

    1.支付宝搜索 522398497,或扫码支付宝红包海报。

    支付宝扫一扫,每天领取大红包

    2.微信红包,微信扫一扫即可领取红包
    微信扫一扫,每天领取微信红包

  • 相关阅读:
    02 基本介绍
    01 概述 网络分层
    04 可扩展
    Java 注解2
    03 高可用
    重拾安卓_00_资源帖
    JavaUtil_09_通用工具类-01_Hutool
    java支付宝开发-01-沙箱环境接入
    java支付宝开发-00-资源帖
    svn_学习_01_TortoiseSVN使用教程
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11327649.html
Copyright © 2011-2022 走看看