和你一起終身學(xué)習(xí),這里是程序員Android
本篇文章主要介紹 Android 開(kāi)發(fā)中的 異常重啟 部分知識(shí)點(diǎn),通過(guò)閱讀本篇文章,您將收獲以下內(nèi)容:
一、lk 階段重啟
二、在kernel關(guān)機(jī)充電階段重啟
三、關(guān)閉異常掉電機(jī)制
在低電量時(shí),插著充電器關(guān)機(jī)充電,手機(jī)會(huì)不斷重啟。
一、lk 階段重啟
低電量關(guān)機(jī)充電不斷重啟問(wèn)題在lk 階段重啟的log如下
Unplugged Usb/Charger in Kernel Charging Mode Before Jumping to Kernel, Power Off
重啟原因
設(shè)備支持DEVICE_TREE_SUPPORT,在lk啟動(dòng)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階段的電流過(guò)大,導(dǎo)致charger的電壓被拉低到4.3v以下,因?yàn)? VCDT_LV_VTH默認(rèn)的電壓是4.3v,所以在detect charger回返回false,由于插充電器的原因在power off之后又起來(lái)導(dǎo)致了不斷重啟的現(xiàn)象,其中VCDT_LV_VTH的設(shè)置可以參考datasheet的設(shè)置。
解決方案
- 1)首先檢查lk階段充電電流設(shè)置的大小,注意檢查
backlight_on設(shè)置的level。 - 2)如果是用的
swtich ic charger,首先的開(kāi)啟dpm功能,dpm功能是一種保護(hù)charger vol在大電流的情況下不被拉的很低,Vin-dpm電壓的設(shè)置范圍是4.2-4.76v,default的值是4.2,一般要設(shè)置為4.5。 - 3)如果在以上的修改還不生效,就把
VCDT_LV_VTH值設(shè)置為4.2v。
二、在kernel關(guān)機(jī)充電階段重啟
在kernel階段重啟有兩個(gè)原因如下:
- 在關(guān)機(jī)充電時(shí),
charger detect存在的情況下,但是如果被識(shí)別為usb host mode,這時(shí)就會(huì)放回false,引起了power off
這時(shí)應(yīng)該去檢測(cè)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電壓超過(guò)了/kernel-3.10/drivers/power/mediatek/battery_common.c#charger_hv_detect_thread里面設(shè)置的電壓,默認(rèn)為6.5v這時(shí),就會(huì)產(chǎn)生cable out,接著就會(huì)power off
三、關(guān)閉異常掉電機(jī)制
修改一下異常掉電機(jī)制代碼vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/k37mv1_bsp/inc/cust_rtc.h

至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺(jué)得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請(qǐng)聯(lián)系小編刪除,歡迎您的建議與指正。同時(shí)期待您的關(guān)注,感謝您的閱讀,謝謝!