首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于WinCE5.0的嵌入式设备休眠唤醒技术研究(2)

基于WinCE5.0的嵌入式设备休眠唤醒技术研究(2)

相关的寄存器有RTCCON、RTCALM和ALMSEC等,设置代码如下:
ldr r0,=vRTCBASE ;;;RTC alarm
ldr r1,=0x01
str r1,[r0,#oRTCCON]
ldr r1,=0x41
str r1,[r0,#oRTCALM]
ldr r1,=0x10 ;;10s唤醒
str r1,[r0,#oALMSEC]
此段代码,首先设置RTC控制的可用,然后设置RTC报警中断中,秒中断可用,因为本文以唤醒时间10 s为例,所以仅用到了秒级中断,最后设定唤醒时间10 s。
当Windows CE操作系统在基于S3C2440的智能巡检分析诊断仪完全启动后,按下“挂起”键,在“挂起”动作的实现代码中设置串口打印语句,显示“Start”标志,在系统被唤醒时设置串口打印语句,显示“End”标志,通过DNW软件,观察串口打印信息,记录“Start”和“End”之间的用时,即为唤醒时间,10次实验结果可知平均用时10.04 s,与预计用时10.0 s的相对误差为0.4%,在工程应用上,基本达到操作要求。
研究过程后期,在确认相应设置正确的前提下,系统仍无法正常唤醒,在重新分析整个流程设计和代码实现后,发现在S3C2440的官方BSP(板级支持包)中存在一个BUG:系统休眠时保存数据的虚拟地址设置错误,SLEEPDATA_BASE_VIRTUAL设置为0xAC028000,而此处和 Bootloader中的SLEEPDATA_BASE_PHYSICAL 都设定为0x30028000。根据地址映射表里面的设置是:DCD 0x80000000, 0x30000000, 64; 32 MB DRAM BANK 6,因此虚拟地址是0xA0028000。将虚拟地址修改后,即可正常唤醒。
本文通过深入分析休眠唤醒过程,在基于S3C2440和WindowsCE5.0的平台上分别通过外部中断唤醒和RTC中断唤醒两种方法实现了休眠唤醒。文中所述的原理和方法不仅适用于上述指定的硬件平台,还适用于其他使用Windows CE嵌入式操作系统的硬件平台。应用表明,这两种方法实现了不同情况下的唤醒,达到了理想的效果,该仪器工作稳定,性能良好,已进入小规模量产阶段。
返回列表