作者:
黄武陵 中科院自动化研究所(100080) ;
何小庆 北京麦克泰软件技术公司(100094) ;
艾云峰 中科院研究生院(100049)
摘要: 本文针对现有典型的嵌入式系统电源管理技术进行了综述。介绍了从低端单片机到高端嵌入式微处理器的芯片级别能耗管理技术,在此基础上,以三个典型的操作系统为例,分析了电源管理软件设计概要,并以嵌入式Linux为重点分析了技术思路。文章最后对电源管理技术发展做了展望。
关键词: 嵌入式系统;电源管理;电源管理软件;传感器网络能耗管理
引言
普适计算、智能空间等概念前所未有地扩展了嵌入式系统的应用范围。同时也对嵌入式系统的功能、可靠性、成本、体积、功耗提出了更严格的要求。各种移动终端、可穿戴设备、消费类电子产品、传感器网络节点等典型嵌入式设备对能耗越来越敏感,电源管理技术正成为这些产品设计的关键所在。电源管理技术正由传统的基于电源管理器件和外设控制为主的静态控制方式,转到以具备智能电源管理功能的嵌入式微处理器结合操作系统为核心的智能管理软件的动静态结合的综合控制模式。
为了应对电源管理技术面临的挑战,芯片厂商推出了效率越来越高的电源管理芯片以及对能耗管理功能更加强大、精细的微处理器。以此为基础,如何设计高效、智能的系统软件对嵌入式设备进行能源管理,已成为研究热点。本文将以典型硬件的电源管理功能为基础,分析几种代表性嵌入式操作系统的电源管理实现,探讨电源管理系统软件现状及研究应用前景。
电源管理基本概念与方法
在电池供电的嵌入式系统中,一般采用高效率的电源管理芯片用于供电管理,或采用大容量的电池以解决能耗需求。但这两种技术的发展还无法满足快速增加的芯片动态功耗和静态功耗。当电路工作或逻辑状态翻转时会产生动态功耗,未发生翻转时漏电流会造成静态功耗。在供电电压Vdd下消耗的功率P如公式(1)所示:
P=C*V 2 dd *f C +V dd I Q (1)
这里C为电容,f C 为开关频率,V dd 为电源电压,I Q 为漏电流。C*V 2 dd *f C 为动态功耗;V dd I Q 为静态功耗。随着芯片运行速度的提高和工艺尺寸的不断缩小、密度增加,其动态功耗和静态功耗也在不断增长,加剧了电源管理的复杂性。
有一种方法可以协调高性能与低功耗之间的矛盾,就是根据系统负载进行性能调节。从公式(1)中我们可以得知,对一个给定负载,动态功耗的量值与供电电压的平方成正比,与运行频率成正比。减少供电电压并同时降低处理器的时钟速度,功耗将会呈平方速度下降,代价是增加了运行时间。此外,还可以通过停止芯片模块的时钟和电源供应的办法,将能耗降至最低,代价是重新启动该模块时需要额外能耗。因此,通过有效地利用上述能耗管理方法,得到性能和功耗间的最佳平衡,达到节能最大化。
嵌入式微处理器对电源管理的支持
从8位单片机到32位高性能处理器,都在一定程度上支持电源管理功能。例如处理器支持多种电源状态,如图1所示。系统电源状态转化
系统在运行态(Run)时,设备全部正常工作。在空闲态时,处理器按照特定的模式,进行相应的节能。在挂起状态下,处理器挂起,主存储器运行在节能的自刷新模式,只有功耗管理电路、唤醒电路继续工作。现有的单片机、ARM等32位RISC处理器一般都支持以上模式,下面分别加以介绍。
单片机的电源管理支持
在传感器网络应用中,传感器节点一般采用低廉的8/16位单片机,其电池寿命至关重要。节点工作时按功率消耗由小到大有睡眠(sleep)、空闲(idle)、接收(receive)及发送(transmit)等四种模式。大多时间内,节点都处于睡眠与空闲模式,只有少量能耗。
ATMEL采用picoPower技术的AVR微控制器显著降低了功耗。这些技术包括一个超低功耗晶振、睡眠模式下自动终止和重激活欠压检测器、能完全停止对外围设备电力供应的省电寄存器以及能够关闭特定管脚输入的数字输入中断寄存器。picoPower技术使工作电流大幅度降低,减少了断电状态下不必要的功耗,使电池使用寿命得到了延长。
ARM的电源管理技术
ARM以其优秀的低功耗技术在消费类电子等领域得到广泛应用。ARM实现了不同级别的低功耗管理技术,如表1所示。表1 ARM不同级别的低功耗管理技术
|
Architecture
Level |
System Level |
Block
Level |
Logic Level |
Process
Level |
| 实现动态低功耗技术 |
Clock Gating |
Clocking
Domains |
voltage
Domains |
Low Voltage
Cells |
Low Power
Library |
| 实现静态低功耗技术 |
Sleep Mode |
Power Gating |
State Store/Restore |
High Voltage
Cells |
Artisan
PMK |
据ARM估计,32位的Cortex-M3处理器内核以0.19mW/MHz(0.18微米)极低的功耗在特殊应用中占据优势。32位Cortex-M3设备执行任务的速度比8位设备快许多倍,所以活动模式中所用的时间更短,平均功率相应降低。其功耗如表2所示。 表2 Cortex-M3能量消耗
| 能量消耗 |
1MHZ |
16MHZ |
32MHZ |
| Active |
mW |
0.29mW |
4.5mW |
9mW |
| Sleep |
mW |
0.01mW |
0.16mW |
0.3mW |
| Standby |
μW |
1μW |
1μW |
1μW |
高端ARM处理器还支持功能更强大的电源管理功能,通过电压调节与频率调节相结合,极大地降低功耗,提高能量效率。动态电压调节(DVS)是通过对系统的负载预测,在一个开环电压控制系统中用多组能耗级别的频率、电压对来实现。自适应电压调节(AVS)用一个闭环电压控制系统来实现,它无需配对的频率、电压,能提供更优的节能效果。
例如以TI的 OMAP1610(ARM926E核)处理器为例,内部可以调节参数包括:CPU电压,DPLL频率控制,CPU频率控制,交通控制器(TC),外部设备控制器,DSP运行频率,DSP MMU频率,LCD刷新频率。通过定义操作点(Operation Points,OP)数据结构来抽象表示频率、电压等能耗级别,如表3所示。表3 OMAP1610操作点参数
| 参数操作点 |
CPU电压
(mV) |
DPLL频率
乘法器 |
DPLL频率
分频器 |
CPU频率
控制 |
TC
控制器 |
| 192MHz~1.5V |
1500 |
16 |
1 |
1 |
2 |
| 168MHz~1.5V |
1500 |
14 |
1 |
1 |
2 |
| 84MHz~1.5V |
1500 |
14 |
1 |
2 |
2 |
| 84MHz~1.5V |
1100 |
14 |
1 |
2 |
2 |
| 60MHz~1.5V |
1500 |
5 |
1 |
1 |
1 |
| 60MHz~1.5V |
1100 |
5 |
1 |
1 |
1 |
其中,192MHz-1.5V操作点参数1500表示OMAP3.2核心电压1500mV;16表示DPLL频率控制12MHz晶振输入倍频16倍;1表示分频为1;1表示OMAP3.2核心分频为1(所以它运行在192MHz);2表示TC(交通控制器)分频为2(所以它运行在96MHz);如果使用TI的DSP代码,则后四个参数为不可控,均使用默认值。
更先进电源管理功能的嵌入式微处理器还有90nm工艺的Marvel PAX300系列,提供更细颗粒的电源管理技术(称为MSPM),API和驱动程序;飞思卡尔iMX31支持DVFS(动态的电压和频率调节)和DPTC(动态的处理器温度补偿)等技术,它配合飞思卡尔MC13783和MC34704 IC管理器件,Linux驱动和策略管理代码,用户可以方便地构建一个具备优秀电源管理能力的嵌入式系统。
ARM 与国家半导体(NS)开发出了先进的能量管理解决方案,智能能量管理器(IEM)预测软件决定了处理器可以运行的最低性能级别,同时,通过智能能量控制器(IEC)的帮助、通过自适应功率控制器(APC)与外部能量管理单元(EMU)一起工作,使处理器运行在能保证应用软件正确运行的最低电压和频率下。
典型嵌入式系统能耗组成
典型嵌入式系统,例如移动终端,其能耗主要部件包括嵌入式微处理器(CPU)、内存、LCD及背光,电源转换部件,其他部件还可能包括基带处理器、DSP、外设控制器等。据统计,CPU占20%~25%,LCD以及背光占用了20%,内存占15%,电源转换占5%~10%,其他的组成占用剩余的30%~40%。典型嵌入式系统的能耗组成如图2所示。

在这些元件中,有些元件性能指标和能耗固定;有些元件可在不同时间工作,并有多种可控的耗能状态。后者的有效使用成为系统节能的关键所在。
三种典型嵌入式操作系统电源管理实现
伴随着消费电子产品的普及,电源管理已经成为重要技术指标和产品的有机组成。传感器网络的普及迫切需要一种小型化、有极高能耗管理能力的网络化小型操作系统。源于斯坦福大学的TinyOS是其中典型代表。Windows CE在嵌入式移动终端设备中得到广泛应用,其能耗管理实现与Windows CE内核架构紧密相关。Linux以其开放性和可定制等特点在嵌入式领域得到极大的发展。本文选择上述三种典型嵌入式操作系统,对其电源管理实现进行讨论与分析。
TinyOS
在无线传感器网络中,每个传感器节点都是典型的嵌入式系统,主要功耗器件有处理器、内存、带A/D的传感器和无线收发单元等。传感器由于存储容量小、运算能力弱、功耗低、易失效等特点,对嵌入式开发提出了更高要求。无线传感器网络的特点决定了降低系统功耗是系统设计的核心,决定了电源管理是传感网专用操作系统重要组成。对电源管理的支持优劣,决定了整个传感器网络系统生存周期长短。TinyOS操作系统是一个传感网专用操作系统的典型代表。它具有基于组件的特性,采用相互关联的模块进行能量管理。
·TinyOS的每个设备都可以通过StdControl.stop命令被停止。
·负责管理外围硬件设备的组件将切换该设备到低功耗状态。
·TinyOS的HPLPowerManagement构件通过检查处理器的I/O引脚和控制寄存器状态,识别当前硬件的状态,将处理器转人相应的低功耗模式。
·调度器会在就绪任务队列为空时,自动将处理器置于低功耗模式。但是保留外围设备的运行,以至于他们中的任何一个可以唤醒系统。
·系统的定时器服务可以工作在大多数处理器的极低功耗的省电模式下。
Windows CE
Windows CE从4.0版本引入电源管理器(Power Manager)来提供管理电源框架。 电源管理器负责管理设备电源,提高操作系统整体能耗效率,并且与不支持电源管理功能的设备和应用兼容,在内核OAL层、设备驱动程序和应用程序之间充当中间人角色。电源管理器还严格区分系统的电源状态与设备的电源状态,让一些智能设备可管理自己的电源状态。
·电源管理器结构
Windows CE电源管理器PM.DLL直接与设备管理器Device.exe链接,并支持三个接口:
·驱动程序接口:被需要进行电源管理的设备的驱动程序使用。
·应用程序接口:被需要利用电源管理的应用程序使用。
·提醒接口(Notification):被需要接受电源事件提醒的应用程序使用。
电源管理器直接或间接地与应用程序和驱动程序交互。电源管理器与驱动程序主要通过驱动程序接口进行交互,与应用程序通过API和提醒接口进行交互,如图3所示。

·系统电源状态
Windows CE系统电源状态的改变可以作为一个OEM事件,或者通过OEM的应用程序和工具调用SetPowerState()函数产生。Windows CE支持以下几种电源状态:(1)ON状态,用户在主动使用设备。(2)UserIdle状态,用户与设备停止交互,但仍有可能使用设备。(3)SystemIdle状态,在经过一段时间的UserIdle后进入此状态,但是驱动和系统仍然活动。(4)Suspend状态,当驱动程序和系统进程不再与系统交互时进入此状态。(5)ColdReboot和Reboot状态,冷启动后系统电源状态。
·设备电源管理
Windows CE设备电源状态管理和系统相分离。驱动程序需要实现:(1)响应电源管理器的请求,报告它的电源能力。(2)处理电源管理器发送的电源请求。(3)启动后给设备加电。(4)关闭时给设备停止供电。(5)如果它可以唤醒系统,则为设备启用唤醒功能。设备还可以通过调用RegisterPower Relationship()函数告诉电源管理器它为独立的子设备驱动处理电源请求。例如总线设备驱动或某些设备驱动代理。
电源管理器和支持电源管理的设备之间的交互包括两种机制:(1)电源管理器到驱动程序,电源管理器使用DeviceIoControl()函数向设备驱动程序发送I/O控制(IOCTLs)。设备必须能响应管理器的电源管理能力查询、状态设置等IOCTLs。(2)驱动程序到电源管理器,驱动程序使用DevicePower Notify()函数与电源管理器交互,请求电源管理器把它的设备置于某种状态。如果电源管理器接受该请求则通过发送IOCTL_POWER_SET等IOCTLS来进行设置。
·应用程序与电源管理器交互
Windows CE应用程序与电源管理有两种交互机制:(1)应用程序接口,用以获取当前系统和设备的电源状态;(2)电源事件提醒接口,提供电源事件的提醒。应用程序接口中,GetSystemPowerState()函数用来返回当前系统电源状态。SetSystemPowerState()函数可被OEM程序或者其他应用程序调用,来把系统电源状态设置为需要值。SetDevicePower()用来设置设备电源状态。为了实现提醒接口,应用程序还得通过CreateMsgqueue()函数建立消息队列,将其句柄传给电源管理器。而后电源管理器把提醒发送到消息队列中,调用者可选择可用提醒的一个子集进行响应。
·OAL层实现
在Windows CE中,在OAL层,电源管理需要实现OEMIdle()和OEMPowerOff()函数。当系统中没有任何可调度的线程时,操作系统调用OEMIdle()函数,可以在其中实现降低处理器的频率以达到省电的目的。当有外部中断时,CPU可从其中恢复。OEMPowerOff函数基于硬件平台实现,进行CPU寄存器保存、设置及唤醒恢复等功能。
转自《电子产品世界》