WINCE6.0+I.MX515系统idle后复位无效问题
1. 问题
系统进入idle(D1)状态后,按硬复位按键黑屏,设备没有重新启动,此时设备电流在380mA左右。
2. 硬复位按键原理图
按键接口图:
图1
连接到CPU端的复位引脚:
图2
连接到PMIC的复位引脚:
图3
按下复位按键之后,低电平有效触发。
3. PMIC关于复位引脚
图4
RESETB &RESETBMCU have open drain outputs, external pull-ups are required
RESETB ANDRESETBMCU
Reset output forperipherals and processor respectively. These depend on the Power Control Modesof operation (See Functional Device Operation on page 40). These are meant asreset for the processor, or peripherals in a power up condition, or to keep onein reset while the other is up and running.
4. 解决方法
\SRC\DRIVERS\DVFC\MC13892\ voltctrl.c下的DvfcUpdateSupplyVoltage(),
if(PmicSwitchModeRegulatorSetVoltageLevel(sreg, SW_VOLTAGE_NORMAL, newVoltCode)!= PMIC_SUCCESS)
SW_VOLTAGE_NORMAL参数改为SW_VOLTAGE_STBY或是SW_VOLTAGE_DVS都可以,而且系统进入D1后的电流差不多都是在129~130,挂起时为22mA左右。对应的PMIC寄存器如下:
图5
软件上的调用流程
DvfcWorkerThread()--->
DvfcUpdateSupplyVoltage()-->
PmicSwitchModeRegulatorSetVoltageLevel ()--->
DeviceIoControl(hPMI,PMIC_IOCTL_LLA_WRITE_REG, ¶m,sizeof(param), NULL, 0, NULL,NULL))---> PMI_IOControl():PMIC_IOCTL_LLA_WRITE_REG
而DvfcWorkerThread()是等待g_hDvfcWorkerEvent事件,如果想知道什么情况下触发此事件,通过下面的代码查找即可。
// Signal the DVFCdriver about our request
etEvent(g_hDvfcWorkerEvent)。
下面给出PMIC状态机图:
图6