阅读:1536回复:5
请问哪个高手知道,CE检测到电池电压很低,进入SLEEP模式,是在哪里实现的?
请问哪个高手知道,CE检测到电池电压很低,进入SLEEP模式,是在哪里实现的?我的CE系统现在是电池电量不足的时候就不断的重新启动,我应该如何去修改?我的系统是WINCE4。2,三星2440
|
|
沙发#
发布于:2007-02-09 20:13
重新启动,应该是OEMPowerOff这个函数实现的有问题吧,你查查看.
电量不足时系统调最终会调用OEMPowerOff |
|
|
板凳#
发布于:2007-02-12 16:10
请问版主大哥,电量不足系统实在哪里判断的?是根据电池驱动中返回的电池的电量来判断的吗?
|
|
地板#
发布于:2007-02-12 19:39
BATT_FLT管脚产生中断。看你对这个中断的处理是怎样的,4.2的OEMPowerOff是实现了Sleep功能的,只是唤醒之后,从复位向量启动,根据重启原因判断跳转到WINCE,0x30201000的NBOOT代码有点问题,把那个gstatus2寄存器给清掉了,到WINCE KERNEL运行的时候再次判断重启原因会认为冷启动,再次重启,所以要修改NBOOT的启动代码,不要清gstatus2.
|
|
地下室#
发布于:2007-02-13 09:09
zhengshijie大哥,我看了一下BATT_FLT中断的代码,发现在中断响应函数中直接调用了OEMPowerOff,代码是这样的
volatile IOPreg *s2440IOP = (IOPreg *)IOP_BASE; volatile INTreg *s2440INT = (INTreg *)INT_BASE; s2440INT->rINTMSK |= BIT_BAT_FLT; s2440INT->rSRCPND = BIT_BAT_FLT; /*s2440IOP->rGPFDAT = ~(0xa << 4); */ /* LED Off */ OEMEmergencyPowerOff(); /*while(1);*/ // RETAILMSG(1, (TEXT(">>> OEMInterruptHandlerFIQ \r\n"))); s2440INT->rINTMSK &= ~BIT_BAT_FLT; 不知道这样写是不是有问题? OEMEmergencyPowerOff();函数中调用了OEMPowerOff。 NBOOT应该没有问题,因为我在按POWER按钮,SLEEP和唤醒系统都是正常的不会再次重启。 |
|
5楼#
发布于:2007-05-08 15:48
to zhengshijie
能不能把你能正常唤醒的代码贴出来大家参考一下,就是4.2中的fw.s文件,谢谢! |
|