遇到系統卡死的情形,我們經常長按power鍵10多s觸發reset,強制機器重啟。Pmic可以通過設置寄存器來配置不同的reset等級實現不同的效果。
13.1、reset等級(RESET_TYPE)
- warm reset:這種等級的reset將保留DDR memory以及一部分的PMIC寄存器。
- hard reset:將清空DDR memory,以及保留和warm reset一樣的部分PMIC寄存器。
- dvdd hard reset:將清空DDR memory,以及保留更多的PMIC寄存器,類似拔電池並保留VCOIN的狀態。
- xvdd hard reset:將清空DDR memory和PMIC寄存器。
如果想達到拔電池的reset效果,可以通過配置DVDD hard reset來實現。如果要達到拔掉紐扣電池的效果,配置XVDD hard reset。
如果要想觸發reset后可以抓dump,需要warm reset。有時候本身release代碼,長按電源鍵,默認是warm reset,我們需要改成vdd hard reset。
13.2、reset設置
如果需要配置觸發reset的等級和時間,通常需要修改兩處:
/*pm_sbl_boot_oem.c*/
err_flag |= pm_app_pon_reset_cfg(PM_APP_PON_RESET_SOURCE_KPDPWR, ...)
/**.dtsi*/
qcom, pon_1 {
......
qcom.s1-timer = <6720> //modify here
}