微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于S3C2440的嵌入式设备休眠唤醒技术研究

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

时间:07-31 来源:互联网 点击:

休眠前,正确设置外部唤醒中断,才能够唤醒CPU。正确设置唤醒中断源,有3个要点:
 (1)把对应的GPIO设置为中断功能;
 (2)明确外部中断触发条件,如将某种唤醒使用的中断源所对应的IO接到一个按键上,需要通过按下按键实现唤醒,需要明确当按下这个按键时,IO接口上的电平会如何变化;
  (3)根据按键按下时IO电平的变化条件设置EXTINTn寄存器。当按下按键时,IO口上的电平会发生从高到低的变化,那么就设置对应的EXTINTn,使得中断触发条件为Falling edge triggered即下降沿触发。
  通过如下代码实现了通过按键K1、K2的外部中断唤醒方式:
  ; 6. Setting Wakeup External Interrupt(EINT0,1,2) Mode
   ldr r0, =vGPIOBASE
   ldr r1, =0x5566//按键K1,K2(EINT0,EINT2)
   str r1, [r0, #oGPFCON]
   ldr r1, =0x82
   str r1, [r0, #oEXTINT0]
 此段代码,首先设置了外部中断0和外部中断2的中断功能,接着设置了中断的触发方式:下降沿触发方式。
 当Windows CE操作系统在基于S3C2440的智能巡检分析诊断仪完全启动后,按下“挂起”键,待屏幕显示消失后,开始实验。
 实验一:按下按键K1,使系统立即重新启动,重新进入Windows CE操作系统;
 实验二:按下按键K2,使系统立即重新启动,重新进入Windows CE操作系统;
实验结果表明:即按即启,没有延迟,达到了外部中断-按键唤醒系统的理想效果。
3 基于RTC中断的休眠唤醒
 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嵌入式操作系统的硬件平台。应用表明,这两种方法实现了不同情况下的唤醒,达到了理想的效果,该仪器工作稳定,性能良好,已进入小规模量产阶段。
参考文献
[1] 张炜,韩进.低功耗嵌入式系统的分析与应用[J].计算机系统应用,2009(11):109:113.
[2] KATZ D,GENTILE R. 低功耗嵌入式实现的方方面面[J]. 电子产品世界,2009(1):63-66.
[3] Samsung Electronics,Samsung 2440A datasheet,2004.
[4] 田泽.嵌入式开发与应用[M]. 北京:北京航空航天大学出版社,2004:22-24.
[5] 田泽,曹庆年,刘天时,等. 嵌入式处理器S3C2440 Windows CE的RTC模块驱动设计与实现[J]. 计算机应用与软件,2007(3):31-33.

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top