新闻中心

EEPW首页>电源与新能源>设计应用> 基于WinCE5.0的嵌入式设备休眠唤醒技术研究

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

作者: 时间:2012-05-25 来源:网络 收藏
3 基于RTC中断的

本文引用地址://m.amcfsurvey.com/article/230445.htm

S3C2440内部RTC模块结构框图如图2所示。RTC模块的有3种功能:产生时钟滴答、实时计时和作为系统的触发唤醒器[4]。RTC模块可以在处理器的掉电模式或普通模式在设定时间(由BCD数据给出)和当前时间相同时发生报警。在普通模式下,ALM INT(报警中断)处于激活状态。在掉电模式下, PMWKUP (电源管理唤醒信号)与ALM INT一起处于报警状态[5]。

相关的寄存器有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操作系统的硬件平台。应用表明,这两种方法实现了不同情况下的唤醒,达到了理想的效果,该仪器工作稳定,性能良好,已进入小规模量产阶段。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

关键词:嵌入式休眠唤醒

评论


相关推荐

技术专区

关闭