APP下载

嵌入式设备的智能化电源管理系统

2010-03-20刘英李贵明

单片机与嵌入式系统应用 2010年11期
关键词:外设中断嵌入式

刘英,李贵明

(1.深圳大学物理技术与科学学院,深圳518060;2.中国科学院合肥物质科学研究院)

引 言

随着嵌入式CPU技术、大容量微硬盘和高速无线网络的发展,移动嵌入式设备步入了崭新的时代,功能越来越多样化,逐步发展成为融数字通信、商务助理、实时网络于一体的个人助理终端,已成为人们必不可少的随身助手。但是,CPU的高频处理、大尺寸显示屏和触摸屏、高功率无线射频都对嵌入式设备的电源供给带来了前所未有的挑战。

各种嵌入式操作系统显然无法预期软硬件技术发展对电源管理提出的更高要求。原有嵌入式设备的电源管理由于没有过多考虑设备的移动性能,所以更适合于交流供电的环境下使用,如广泛应用于数据采集、安防监控等。移动嵌入式设备必须充分考虑电池供电所面临的电源瓶颈,其中的电源管理策略是最切实际的突破口。依托于移动嵌入式设备的使用场景,可以在系统电源状态划分、电源状态转换逻辑、设备电源状态和系统电源状态映射等多个方面进行改进。实践证明,这种改进方式在成本上是最节约的,但实际效果却非常理想。

1 系统电源管理基本架构

嵌入式移动设备不同于一般嵌入式设备之处,在于其不可能经常处于CPU全速工作状态,所以电源管理的主要目的是减少目标设备的电源消耗,并在系统处于复位、运行、空闲和挂起状态时维持和保护位于RAM中的文件系统。因此,大多数的嵌入式操作系统都为系统的电源状态进行了分级,在这里以Windows CE操作系统为例,系统电源状态被预定义了如下基本等级[1-2]:

on,设备被打开和运行的状态。设备接收来自系统的全部电量并为用户提供全部的功能,此时大部分外设都处于全速工作模式,设备耗电量最大。

idle,设备处于半空闲状态。基本没有外部操作干预,可以考虑使某些外设进入休眠状态,CPU也可进入降频、低功耗模式。

suspend,设备待机状态。CPU和所有外设基本都停止工作,只能依赖外部中断源唤醒。此时系统耗电量极低。

off,设备没有被供电的状态。此时系统供电已停止,整个设备不耗电,停止工作。

受电源管理约束的嵌入式设备应该是处于以上各电源状态的转换之中,其基本状态切换关系如图1所示。

on to idle。当内核没有任何线程在运行时,电源状态将被改变为idle,然后CPU等待一个内部中断。

图1 系统电源状态转换图

idle to suspend。活动计数器超时,CPU进入停止工作状态,只能依靠外部中断源唤醒。

idle to on。当出现一个内部中断时,电源的状态转换为on状态。在典型情况下,计时器中断,用户按键中断等都会引起这种转换。

suspend to on。外部中断源导致系统切换到on状态。在典型情况下,具有外部中断源的外设都能触发这种转换,如通信模块中断、电源按键中断、电池模块低电量中断等。

on to off。低电量关机或用户主动操作关机会形成这种转换。

off to on。用户开机或外部定时器触发开机[1-3]。

2 系统电源管理改进思路

从电源管理的思路上看,如果需要做到有效、智能化的电源管理,以下几点是非常关键的:

①CPU的功耗。智能化的嵌入式CPU芯片具有频率自动调节功能,在系统繁忙度不高时会自动降低工作频率,以达到省电的目的。

②on状态下的CPU消耗。因为在用户操作的情况下,系统还是只能处于全速工作状态,所以设备的功耗还与嵌入式应用软件的编写有很大关系,软件算法对CPU的消耗影响还是很大的。

③低功耗状态的有效设立及其占空比。这里所说的低功耗状态是指除了on状态以外的其他电源状态,这些电源状态的设立本身也是以降低功耗为出发点的。因此,如何设立合理的低功耗状态并使其正常转换是非常关键的。每定义一种电源状态必须有明确的功耗含义,要考虑到该电源状态要关闭和开启哪些设备,以达到从整体上降低功耗的目的。同时,何时进入某种低功耗状态,在该状态维持的时间也非常重要。另外,还必须充分考虑应用环境,因为移动式嵌入式设备大多数的使用场景是非常复杂的,比如一部智能手机,想要明确区分各使用场景是较为困难的。

CPU自身的频率自动调节功能依赖于各CPU厂商的技术,on状态的CPU消耗依赖于应用程序开发人员的开发水平和实际工作环境,这两点都不是本文所关注的话题,这里主要说明的是一套智能化的电源管理系统。

3 优化后的嵌入式电源管理系统

系统电源状态的划分只是一个逻辑上的定义,其具体表现依赖于具体外设在各个电源状态中的实际耗电情况。因此,有两点对于提高电源管理的效率是很重要的:

◆纳入电源管理的外设是否足够多;

◆电源状态的划分和转换条件是否合理。

越智能化的嵌入式系统具有的电源状态等级应该越多,但同时控制转换流程也越复杂。下面以一个智能手机为例阐述一个智能化的嵌入式电源管理系统。

3.1 更细致的idle状态分级

相比传统的idle状态,因为智能手机面临更为复杂的用户操作场景,所以只靠一个idle状态显然是不够的。改进后的idle分为两个状态等级:用户空闲状态(user-idle)和系统空闲状态(system-idle)。user-idle状态CPU工作频率不变,只是涉及用户感官的某些外设状态发生改变,如显示屏亮度变低等。user-idle状态维持一段时间后系统再进入system-idle状态,此时CPU降频工作,大部分外设进入省电状态,如显示屏关闭、触摸屏关闭、键盘服务关闭等。user-idle状态设置的目的在于可以有效避免CPU在on状态的最大消耗。因为在此状态下实际上还有工作线程在占据CPU,整个设备无法进入系统空闲状态,但是可以通过关闭或降低某些外设来达到降低整体功耗的效果。当然,在可能的情况下,idle状态还可以根据实际场景进行更细致的划分。

3.2 异常处理状态的设立

可以通过建立异常处理状态来避免不必要的能耗损失。unusual状态是新增的一个系统电源状态,因为系统处于待机状态时经常会被各种各样的中断唤醒,有些是必须由用户处理的中断,如来电、按键等,此时suspend状态转换到on状态就没什么问题。但如果一些没有必要由用户处理的状态,也跳转到on状态,就会造成不必要的功耗损失。因此unusual状态可以作为逻辑处理层存在,如果需要用户处理,直接跳转到on状态,否则在一定时间内转换回到suspend状态。

改进后的系统电源状态转换图如图2所示。

增加的电源状态转换逻辑:

on to user-idle。当自定义的转换条件满足时,设备跳转到user-idle状态,此时某些外设根据系统电源状态映射相应的设备电源状态。CPU仍然处于全速工作状态。

图2 改进后的系统电源状态转换图

user-idle to system-idle。当内核没有任何线程在运行时,电源状态将被改变为idle,然后CPU等待一个内部中断。

system-idle to suspend。活动计数器超时,CPU进入停止工作状态,只能依靠外部中断源唤醒。

user-idle/system-idle to on。当出现一个内部中断时,电源的状态转换为on状态。

suspend to unusual。外部中断源导致系统唤醒,此时会跳转到unusual状态,由电源管理逻辑控制单元决策进一步的状态转换,此时,CPU工作正常,但大部分外设处于待机状态。

unusual to on。如果外部中断源需要用户处理,跳转到on状态。典型情况如:用户按电源键,通信模块中断等。

unusual to suspend。如果外部中断源不需要用户处理,自动从此状态跳转到suspend状态,如某些异常中断或错误信号。

3.3 电源状态转换时间的智能调节

系统电源状态的转换通常是由一组系统定时器来完成,当系统进入某个电源状态时,此状态对应的计时器开始计时,分下面几种状态转换情况:

①无外界条件干预,状态计时器正常归零,系统进入预设的下一电源状态。如on to user-idle、user-idle to system-idle、system-idle to suspend、unusual to suspend,此类转换可归为电源状态的自然转换。

②在计时器运行过程中,外部条件强制切换电源状态,此时系统进入指定的电源状态,同时计时器赋值到指定的电源状态初值。如在user-idle转换到system-idle过程中,用户可能会强行切换状态到on状态。此类转换归为电源状态的强制转换。

③如果不进行电源状态的维持,系统电源状态就会按照自然转换的流程进行下去,直至系统待机。所以很多情况下需要把系统维持在某个电源状态,这时只需要对状态计时器重新初始化即可。

传统的嵌入式电源管理中,各个状态计时器的初值都是固定的,所以,从on到suspend的整个电源状态转换周期基本固定。然而在实际应用中,这种策略就显得不够智能。因为各种不同场景对电源状态的要求是不一致的,有些场景可能会希望尽快待机以节省电量,有些场景又希望能系统能长期工作在低功耗状态而不能待机。所以,提出了电源状态转换时间的智能调节。

智能化电源管理系统的转换时间是根据当前的用户环境来进行调节,比如处于屏幕锁定状态时,各个状态之间的转换时间会被调节到很低,从而系统能在很短时间内进入到待机状态。而用户处于浏览模式时,on to user-idle和user-idle to system-id le的转换时间会调节较长,以避免用户会经常进行电源状态的强制切换,从而改进用户体验,同时减少电源状态多次转化导致的额外开销。用户的使用模式从软件的角度很容易获取,再融入到电源管理的状态转换策略中。

综合上述电源管理策略,得出一组模拟用户使用的电量消耗对比数据,如图3所示。

图3 原始电源管理和改进后的电源管理电流消耗

这是一组120m in内模拟用户使用的设备电流消耗对比图,虚线表示原始电源管理下的平均电流消耗,实线表示改进后电源管理下的平均电流消耗。原始电源管理在120m in内的平均电流为90.4m A,而改进后的电源管理在120m in内的平均电流为55.9 mA。从中可以看出,相比传统电源管理,智能化电源管理系统在平均电流节省方面的效果是非常明显的,其中抗干扰能力和智能调节电源状态维持时间起到了非常明显的作用。

3.4 纳入尽可能多的外设

当一个设备驱动程序被加载时,它应该使这个设备进入全开状态;在一个驱动程序被卸载时,则应该使这 个设备进入关闭状态。这两个状态是设备必须支持的状态。同时,智能化的外设具备了更多的设备电源状态,如sleep、suspend状态等,以满足在系统电源状态改变时能对应进入自身的一种节电模式。所以,只有纳入电源管理的设备才有条件随时更新自身的设备电源状态,否则设备一直处于常开状态是非常耗电的。

因为不同的嵌入式系统在实际工作环境中对外设的要求差别很大,这里就不再进一步阐述。总之,智能化的电源管理设计原则和前提是尽量使外设纳入系统电源管理的控制。

结 语

嵌入式设备的智能化电源管理是在传统嵌入式电源管理系统基础上衍生出来的,其基本出发点在于充分利用电源管理对外部设备集中管理,综合实际使用场景对系统电源状态进行更细致的分级,并明确该状态具体的功耗指标。同时,能够自动调节电源状态的转换时间,有效提高低功耗状态的占空比,从而达到功耗和用户体验的最大限度平衡。从实验结果看,这种改进的效果是非常明显的,对于移动嵌入式设备的续航能力有很大程度的改进。

[1]张冬泉.Windows CE实用开发技术[M].北京:电子工业出版社,2006.

[2]何宗键.Windows CE嵌入式系统[M].北京航空航天工业出版社,2006.

[3]Petzold C.Windows CE程序设计[M].北京大学出版社,1999.

猜你喜欢

外设中断嵌入式
搭建基于Qt的嵌入式开发平台
跟踪导练(二)(5)
千里移防,卫勤保障不中断
嵌入式软PLC在电镀生产流程控制系统中的应用
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器
Microchip推出具备双ADC外设的全新器件,扩展其低成本8位PIC®单片机产品线
AT89C51与中断有关的寄存器功能表解
FPGA内嵌PowerPC的中断响应分析
外设天地行情