关机充电,手机不断重启问题分析

本文聚焦Android开发中的异常重启问题,涵盖lk阶段重启、kernel关机充电阶段重启及关闭异常掉电机制三方面。分析了低电量关机充电不断重启的原因,如电流过大致电压拉低等,并给出相应解决方案,如检查充电电流设置、开启dpm功能等。

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

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

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

  1. 在关机充电时,charger detect存在的情况下,但是如果被识别为usb host mode,这时就会放回false,引起了power off
    这时应该去检测usbid 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");
     ...........
}
  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.微信红包,微信扫一扫即可领取红包

 

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

 

<think>嗯,用户提到的高通平台在关机充电时出现死机重启问题,我需要先理解可能的原因。首先,关机充电模式下,系统通常会进入低功耗状态,但部分硬件模块如充电管理、电池检测等仍需工作。可能的问题点包括电源管理固件或驱动异常、电池检测逻辑错误、硬件冲突等。 根据用户提供的引用[1],提到的是HD-audio的补丁加载,这可能与音频驱动有关,但不确定是否直接关联充电问题。不过,有时候系统在低功耗模式下,未正确挂载的驱动模块可能导致异常。需要检查充电相关的驱动模块,比如电池管理芯片的驱动、PMIC(电源管理集成电路)的配置,以及充电过程中的中断处理是否正常。 接下来,可能的解决方案包括更新或修复电源管理相关的驱动和固件,检查充电电路的硬件连接,以及调整低功耗模式下的系统配置。此外,查看内核日志(dmesg)和死机前的最后日志,可以定位到具体的错误信息,如空指针引用或资源竞争等问题。 用户可能需要逐步排查,比如先更新驱动,然后检查硬件,再调整系统配置。同时,参考高通官方文档或社区中类似问题的解决方案也会有帮助。需要确保建议的步骤清晰,并提示用户备份数据以防万一。</think>### 高通平台关机充电死机重启问题解决方案 #### 1. 初步排查硬件与固件 - **检查电池与充电电路**:使用万用表测量电池接口电压,确认是否存在短路或接触不良。高通平台充电管理依赖PMIC(电源管理集成电路),需验证其工作状态[^1] - **更新固件与驱动**:从高通开发者平台获取最新版PMIC驱动和充电管理固件,例如: ```c // PMIC驱动关键函数示例(电源状态检测) static int pmic_check_power_state(struct device *dev) { return regmap_read(pmic->regmap, REG_PWR_STATE, &val); } ``` #### 2. 系统日志分析 - **获取内核日志**: ```bash adb shell dmesg | grep -E "battery|charger|pmic" ``` - **常见错误模式**: - `kernel panic - not syncing: PMIC over-voltage protection` - `charger: Error: battery thermistor reading timeout` #### 3. 软件配置优化 - **调整充电策略**:修改`/sys/class/power_supply/battery/`下的参数文件: ```bash echo 1500000 > constant_charge_current_max # 限制最大充电电流为1.5A ``` - **禁用冲突模块**:在关机充电模式配置文件中注释可能冲突的驱动: ```c // drivers/power/supply/qcom/qpnp-qg.c // module_init(qpnp_qg_init); // 测试时暂时禁用 ``` #### 4. 低功耗模式调试 - **修改CPU休眠状态**: ```device-tree &qcom,pmic { qcom,s3-devs = <&pm8998_s3>; qcom,s3-mode = <1>; // 修改为深度休眠模式 }; ``` - **电压稳定性测试**:使用QPST工具进行PMIC电压波形捕获,确保充电过程中无异常电压波动 #### 5. 安全机制增强 - **增加看门狗检测**: ```c void charging_monitor_task(void) { while (1) { if (read_charger_status() == FAULT) { emergency_shutdown(); } mdelay(1000); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值