20100913
终于解决了唤醒的问题,在做睡眠与唤醒时,遇到两个问题:
1、IO设置不正确,导致睡眠质量很差;应该是由于GPG13-15导致的,S3C2440 DATA SHEET中说"The configuration pin – NCON, GPG[15:13] – will be fetched during reset.In normal status, these pins must be set as input so that the pin status is not to be changed, when enters Sleep mode by software or unexpected cause"
从实际的操作状况看,真的睡眠,会降50-70MA左右,而睡眠质量差的话,就降10-20MA;另外,在睡眠状态下,外部晶振、UPLL、MPLL等均会停止震荡;而如果睡眠差的话,这些都不会停止
设置时应该根据硬件来设置,若开始调试时,可将大部分的IO设置为输入状态,等调通后,再做一些设置
2、睡眠唤醒后,从SDRAM中读取的数据总是0;导致此问题的原因是采用了飞凌的BOOT的SLEEP部分未做修改,其原来的
WAKEUP_SLEEP
;Set memory control registers
ldr r0,=SMRDATA
ldr r1,=BWSCON ;BWSCON Address
add r2, r0, #52 ;End address of SMRDATA
使用了ldr,装载的地址应该在SDRAM中,而此时SDRAM还未初始化,读取的值均为0;应改为
adrl r0, SMRDATA
adrl是基于PC偏移的,在reset时,PC是在2440 2K地址内,可以正确读取.在设置玩SDRAM后,1S内即可进入操作系统桌面
WINCE电源管理流程及代码.....待续