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

发布者:dst2015最新更新时间:2010-10-20 来源: 微型机与应用关键字:嵌入式  休眠唤醒  S3C2440  Windows 手机看文章 扫描二维码
随时随地手机看文章

    嵌入式系统应用中降低设备功耗以提高续航能力是其设计的热点[1]。在休眠状态,系统处于最低电流消耗状态,同时仍维持存储区中的内容,为了减少能量消耗和延长电池寿命,需要让处理器定期进入或退出休眠模式[2]。Windows CE 作为一个广泛应用于嵌入式设备上的操作系统,提供了完善的电源管理功能。其中,休眠唤醒便是一个重要的功能。本文在结合S3C2440硬件基础上分析休眠唤醒过程,分别采用外部中断唤醒和RTC中断唤醒两种方法实现了休眠唤醒,并给出了具体实现代码。根据相应唤醒需求,将这两种方法应用于北京化工大学诊断与自愈工程研究中心的一款基于S3C2440和WindowsCE 5.0的嵌入式智能巡检分析诊断仪,结果表明能准确达到实际的设置要求,效果良好。

1 休眠唤醒过程分析

    对于电源控制逻辑模块,S3C2440 有多种电源管理方案以针对须执行的任务保持最优的电源消耗。S3C2440 中的电源管理模块对应 4 种模式:NORMAL 模式、SLOW 模式、IDLE 模式和SLEEP模式。

  在SLEEP模式下,电源管理模块关闭内部电源,因此,CPU 和内部逻辑模块都没有电源消耗,但除了此模式下的唤醒模块。激活SLEEP模式需要2个独立的电源,其中一个为唤醒模块供电,另一个为包括CPU的其他逻辑模块供电,并且可以由power on/off控制。在SLEEP模式下,给CUP和内部逻辑单元供电的第二个电源被关闭,只有唤醒模块是工作的。这种状态下,可以通过外部中断EINT[15:0]或定时器的RTC(real time control)中断将系统从睡眠状态中唤醒[3],如图1所示。

    在睡眠模式下,VDDi、VDDiam、VDDMPLL以及VDDUPLL会被关闭,其由PWREN引脚来控制,如PWREN信号被置位,VDDi和VDDiam则由一个外部变压器供电。当PWREN=0时,VDDi和VDDiam被关闭。

 有多种方法可以使系统进入休眠,例如在Windows CE的桌面上,点左下角的开始图标,然后选择 “挂起”;或者,在应用程序或驱动中调用SetSystemPowerState()函数,都可以让系统进入休眠状态。实际上,这两种方法殊途同归,最终都需要通过OEM层OEMPowerOff()函数依次调用BSPPowerOff()函数,以关闭板级的相关电源,保存所有寄存器的值,关闭背光;调用 ConfigStopGPIO()函数,设置各IO休眠后的状态;如果支持KITL,调用OALKitlPowerOff()函数关闭KITL功能;调用OALCPUPoweroff()函数,使得CPU进入休眠模式。OALCPUPoweroff()函数保存当前系统的状态,把CPU上一些寄存器里的数据保存到RAM里去,然后禁止RAM自刷新的功能,加入唤醒中断源,最后使CPU进入休眠模式。当CPU处于Sleep状态时,RAM不会断电,这样RAM中的数据就不会丢失,当CPU被唤醒后使用RAM里的数据恢复系统。

 当相应的中断源触发时,CPU就会被唤醒,电流消耗变大了,需要说明的是,此处仅唤醒CPU,之后才唤醒WINCE系统。当系统由SLEEP到NORMAL切换期间需经过一个RESET过程,这个过程称为 Power On Reset 。在S3C2440 CPU中,寄存器GSTATUS2专门用以判断发生Reset原因。Power On Reset后,在之前SLEEP过程中保存下来的RAM中的系统数据是不会丢失的。本文需要设计的唤醒子系统,就是把这些数值恢复到它们休眠前应处的地址。

 在Bootloader中实现数据恢复的具体步骤如下:

 (1)如果有唤醒源被触发,内部的复位信号就会动作。这和外部的 nReset引脚触发非常相似。复位持续时间由内部的 16 bit计数器逻辑决定,通过reset 复位决断时间可以计算tRST=(65535/XTAL_frequency);

 (2)通过检测GSTATUS2[2],判断是否是由SLEEP模式唤醒引起的电源开启;

 (3)通过设置 MISCCR[19:17]=000b,释放 SDRAM 的信号保护;

 (4)配置 SDRAM 内存控制器;

 (5)等待,直到 SDRAM 自刷新被释放,结束等待。大部分SDRAM需要等待所有 SDRAM 行的自刷新周期;

 (6)GSTATUS[3:4]的信息可用于保存用户自定义数据,因为在 GSTATUS[3:4]中的值在睡眠模式下被保留;

 (7)对 EINT[3:0],检查 SRCPND 寄存器;对EINT[15:4],查看 EINTPEND 寄存器而不是SRCPND寄存器。(尽管EINTPEND寄存器的一些位被置位,SRCPND 寄存器不会被置位)。

 以上是一个通用的休眠唤醒过程,在实际应用中,可根据不同情况使用不同的唤醒方式。例如,以休眠模式待机,在需要使用仪器时才唤醒系统的情况下,就需要一个诸如按键的外部中断来唤醒系统;而对于仅做一个保存挂起动作的情况,即刻自动唤醒系统则更为便捷。S3C2440就提供了两种唤醒实现方式:外部中断实现方式和RTC中断实现方式。

2  基于外部中断的休眠唤醒

 正如之前提到的,在OALCPUPoweroff里,系统进入休眠前,正确设置外部唤醒中断,才能够唤醒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嵌入式操作系统的硬件平台。应用表明,这两种方法实现了不同情况下的唤醒,达到了理想的效果,该仪器工作稳定,性能良好,已进入小规模量产阶段。

关键字:嵌入式  休眠唤醒  S3C2440  Windows 引用地址:基于WinCE5.0的嵌入式设备休眠唤醒技术研究

上一篇:基于μC/OS-II的CAN总线驱动程序设计
下一篇:利用布线技巧提高嵌入式系统PCB的信号完整性

推荐阅读最新更新时间:2024-05-02 21:10

瑞萨电子推出超35款全新MCU产品 拓展电机控制嵌入式处理产品阵容
两大产品家族三大系列MCU全新产品为业界带来更广泛的电机控制解决方案 2023 年 5 月 30 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子今日宣布面向电机控制应用领域发布三个全新MCU产品群,其中超过35种来自于RX和RA家族的新产品。 这些新款MCU扩充了瑞萨包括多种MCU与MPU、模拟和电源解决方案、传感器、通信设备、信号调节器等的卓越电机控制产品组合。 瑞萨推出两款基于Arm® Cortex®-M的RA家族的全新MCU产品群。其中,RA4T1产品群可提供100 MHz性能,以及高达256KB的闪存和40KB的SRAM;全新RA6T3产品群工作频率为200MHz,同时提供256KB的闪存和40KB的S
[嵌入式]
瑞萨电子推出超35款全新MCU产品 拓展电机控制<font color='red'>嵌入式</font>处理产品阵容
嵌入式系统看现代计算机产业革命
摘要 人类近代史上有两次重大的产业革命: 一次是18世纪的由蒸汽机推动的第1次产业革命,另一次是当前人们正面临着始于20世纪中期,由集成电路开启的现代计算机产业革命。现代计算机产业革命是一场智力革命,以普遍的智能化工具代替人的脑力劳动。嵌入式系统成为智能化工具的归一化智力内核。现代计算机产业革命构建的知识平台,将资本经济推向知识经济时代。知识平台的广泛使用必将对人类社会经济、生活方式产生极其重大的影响。 关键词 产业革命 嵌入式系统 知识经济 知识平台 时空量子化 智力平台 智力嵌入   现代计算机是微处理器技术基础上的数字计算机,现代计算机产业革命是一场空前的智力革命,它将人类独有的知识行为能力(智力)集成到工具中,使人类工
[嵌入式]
plc和嵌入式有什么区别
  plc介绍   PLC的全称是可编程逻辑控制器(Programmable Logic Controller)。它是一种专为自动化控制而设计的计算机控制传感器和执行器的设备。PLC可广泛应用于各种自动化控制领域,如机器人、生产工艺控制、交通信号控制、楼宇自动化控制等。   PLC的核心部件是处理器(CPU),控制程序和I/O模块。其工作原理是将输入信号(例如传感器和其他控制开关)转换为数字信号并进行实时监测,对其进行逻辑处理,并在必要时控制与之相关联的输出设备(例如控制阀门、电机和其他操作元件)。   PLC在自动化控制系统中具有许多优点,例如稳定、可靠、可编程、易于维护、易于扩展等等。由于这些优点,它一直被视为自动化控
[嵌入式]
适用于Windows混合现实的SteamVR预览版现已可用
SteamVR预览版现已可用于Windows混合现实。过去,该预览只有开发人员才能使用,适用于Windows混合现实的SteamVR的到来对于向用户提供广泛的新内容方面来说是一个相当重要的事情。   自10月份正式推出Windows混合现实之后,微软商店当中已经有了很多支持Windows混合现实的游戏和应用程序,包括Arizona、Sunshine、Superhot VR和Littlstar等大多数微软商店里的VR内容也能在SteamVR上找到,Valve的平台可以借助Oculus Rift和HTC Vive等VR设备为用户提供大量的内容。当然,并不是所有的东西都能立即兼容,这只是万里长征的第一步。   10月中旬,微软随Win
[手机便携]
单片机嵌入式热门的原因在哪里?深入了解过吗?
都不是很清楚 嵌入式 为什么这么热门,最近在网上也搜集了一些。供与 嵌入式 的爱好者参考: 嵌入式系统应用热门的原因主要有几个方面: 1.系统内核小。由于 嵌入式 系统一般是应用于小型电子装置的,系统资源相对有限,所以内核较之传统 的操作系统要小得多。比如Enea公司的OSE分布式系统,内核只有5K,而Windows的内核?简直没有可比性 。 2.专用性强。 嵌入式 系统的个性化很强,其中的软件系统和硬件的结合非常紧密,一般要针对硬件进行 系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时 针对不同的任务,往往需要对系统进行较大更改,程序的编译下载要和系统相结合,这种修改和通用软件 的“
[电源管理]
嵌入式系统中引导程序的实现
简介:在嵌入式系统的开发过程中,技术难点主要在于系统引导程序的编写,为此本文将详细论述在ARM7基础上开发嵌入式系统时引导程序的实现。 引导加载程序是系统加电后运行的第一段软件代码。当一个微处理器最初启动时,他首先执行预定地址处的指令。通常这个位置是只读内存,其中存放着系统初始化或引导程序。在PC系统中,引导加载程序由BIOS(其本质就是一段固件程序)和位于硬盘MBR中的操作系统BootLoader(比如,LILO和GRUB等)一起组成。BIOS进行CPU初始化、配置其他硬件,并完成硬件检测和资源分配。然后,BIOS判断出哪一个磁盘包含有操作系统,再把硬盘MBR中的Boot Loader读到系统的RAM中,然后将控制权交给操作
[单片机]
嵌入式相机应用扩张 驱动芯片需求走扬
嵌入式相机应用可望为晶片商带来可观商机。市场研究机构IC Insights指出,独立型相机及摄影机的市场规模正逐年萎缩,反观手机、平板、个人电脑、监控摄影机、汽车、医疗与工业设备等嵌入式相机应用则不断增长,将带动相关芯片销售额由2012年的136亿美元,攀升至2017年的239亿美元,年复合成长率(CAGR)高达11.9%。
[嵌入式]
<font color='red'>嵌入式</font>相机应用扩张 驱动芯片需求走扬
s3c2440裸机实验(5)----IIS
1.IIS:Inter-IC Sound,是由飞利浦公司开发,该接口支持IIS总线数据格式和MSB-justified数据格式,该接口对FIFO的数据访问采用了DMA模式取代了中断,并且可以在同一时间接收和发送数据 2.IIS:有四根数据线,IISDO,IISDI,IISSCLK,IISLRCK;注意IIS只负责音频信号的传输,如果需要实现录音的话,还需要其他的处理芯片。 IISDO,IISDI用于数据的输入和输出; IISSCLK:为串行时钟 其频率= 声道数×采用频率×采用位数,假如采用双声道(左右声道),每次采用16位,采样频率40kHz,则IISSCLK =2×16×40 ; IISLRCK:用于指示左声道
[单片机]
<font color='red'>s3c2440</font>裸机实验(5)----IIS
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved