技术开发 频道

WinCE节能降耗新技巧:高效休眠唤醒

  【IT168专稿】伴随着嵌入式产品的普及,电源管理开发和设计成为了嵌入式系统开发的重点和重要部分。因为嵌入式设备对能耗越来越敏感,而电源管理技术正是这些产品设计的关键所在。目前嵌入式系统的电源管理技术正由传统的基于电源管理器件和外设控制为主的静态控制方式,转到以操作系统为核心的动静态结合的综合控制模式。

  为了应对电源管理面临的挑战,在嵌入式系统开发在时需要设计多种电源模式,以便在不同工作状态时有多种能耗模式可供选择。休眠和唤醒功能正是目前WINCW系统开发的研究热点之一。那么,休眠唤醒功能是什么原理呢?它能达到什么样的效果。这首先要从硬件说起,当系统进入休眠模式后,整个系统会进入低功耗休眠模式,只有当外部中断中任意一个中断被触发或者实时时钟中断被触发时,系统才会被唤醒。

  一.什么是休眠唤醒功能?

  (1)什么是WinCE休眠唤醒功能?

  在WinCE系统中支持多种电源状态:①ON状态,用户在主动使用设备。②UserIdle状态,用户与设备停止交互,但仍有可能使用设备。③SystemIdle状态,在经过一段时间的UserIdle后进入此状态,但是驱动和系统仍然活动。④Suspend状态,当驱动程序和系统进程不再与系统交互时进入此状态。⑤ColdReboot和Reboot状态,冷启动后系统电源状态。其中,按功率消耗由小到大可分为睡眠(sleep)、空闲(idle)、运行(Run)等模式。大多时间内,在运行态(Run)时设备全部正常工作,而在睡眠与空闲模式时系统则是按照特定的模式进行相应的节能。

  通常,嵌入式系统在大多数时间都不需要关注WinCE 设备的电源损耗,但是在某些时候要注意这些损耗。因此,最好的节能方法是使系统适时的进出休眠状态。例如,WinCE系统先检查任务负载情况,如果没有需要运行的任务,则一般进入空闲节能状态等待唤醒,在空闲一段时间后再进入深度睡眠,挂起到RAM中或者硬盘上。当WinCE 系统被挂起,为了省电系统需要关闭CPU处理器及大部分设备的供电,然后在需要唤醒时再通过定时器或中断模块唤醒。比如用户按下On/Off按钮时,或者监视用户活动的定时器超时,或者应用程序API都可以使得嵌入式系统休眠。而当用户再次按下On/Off或者有其它唤醒中断发生时,系统内核调用OEMPowerOff()函数,在系统唤醒后继续从OEMPowerOff()被挂起处执行。OEMPowerOff函数能进行CPU寄存器保存、设置及唤醒恢复等功能。系统Idle状态和前面说的UserIdle状态是不同概念,前者是CPU负荷驱动,代表系统空闲;后者是用户活动驱动,代表用户空闲。

  (2)休眠唤醒功能的具体内容

  一般来说,WINCE电源状态有六种状态,分别是S0到S5:S0实际上这就是我们平常的工作状态,所有设备全开;S1也称为POS(Power on Suspend),这时除了通过CPU时钟控制器将CPU关闭之外,其它的部件仍然正常工作;S2这时CPU处于停止运作状态,总线时钟也被关闭,但其余的设备仍然运转;S3这就是我们熟悉的STR(Suspend to RAM);S4也称为STD(Suspend to Disk),这时系统主电源关闭,但是硬盘仍然带电并可以被唤醒;S5这种状态是最干脆的,就是连电源在内的所有设备全部关闭,即关机(Shutdown)。

  WINCE电源管理休眠和唤醒可实现以下功能:用户可以使外设在指定时间开关,或操作系统可以根据具体需求来分配电能源,或在无人使用时可以使系统进入休眠状态,但保证一些通信设备打开。也就是说,嵌入式系统能够管理闲置的设备,关闭设备并提供恢复手段,主要支持三种节电方式:①Suspend即挂起,显示屏自动关闭,只是主机通电。这时敲任意键即可恢复原来状态。②Suspend to Ram 即挂起到内存,系统把当前信息储存在内存中,只有内存等几个关键部件通电,这时系统处在高度节电状态,按任意键后系统从内存中读取信息很快恢复到原来状态。③Suspend to Disk即挂起到硬盘,即系统将自动关机,关机前将当前数据存储在硬盘上,用户下次按开关键开机时计算机将无须启动系统,直接从硬盘读取数据,恢复原来状态。

  在嵌入式系统中,我们最常用到的是S3状态,即Suspend to RAM(挂起到内存)状态。顾名思义,STR就是把系统进入STR前的工作状态数据都存放到内存中去。在STR状态下,电源仍然继续为内存等最必要的设备供电,以确保数据不丢失,而其它设备均处于关闭状态,系统的耗电量极低。一旦我们按下Power按钮系统就被唤醒,马上从内存中读取数据并恢复到STR之前的工作状态。内存的读写速度极快,因此我们感到进入和离开STR状态所花费的时间不过是几秒钟而已。而S4状态即STD(挂起到硬盘)与STR的原理是完全一样的,只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多,因此用起来也就没有STR那么快了,但STD模式是一种更省电的高级应用,是将当前系统状态保存到硬盘后,硬盘随即停止转动系统进入低功耗状态。当再开机时系统会跳过自检,直接从硬盘恢复原来的系统状态,而不是正常系统的默认状态,从而缩短了开机

0
相关文章