电源管理(或者说能耗管理)是芯片设计、制造工艺、系统设计和软件都在为之努力的研究课题,大家力求在各个环节尽可能的减少静态和动态的电源消耗。传统的控制电压的调节方式和管理待机模式依然是多数电子设备正在采用的,还将继续延续下去,但是随着包括智能手机、导航和无线传感网络装置,这些对电量消耗极大且永远在线的设备的市场规模的迅速增加,电源管理已经成为整个电子设计正在面临的重要课题。市场研究机构isuppli首席分析师Jordan Selburn说:“功耗已经成为电子产品设计的首要考虑。”
Linux操作系统已经证明是在嵌入式系统,尤其是消费电子产品中大量使用的一个嵌入式操作系统。它因为丰富的特性、完善的功能、最新的硬件支持和无版税的商业模式得到包括半导体公司、设计公司和设备制造商的认可。对于消费电子产品中的Linux 技术,除了进一步优化性能、压缩尺寸、提高可靠性外,构建一个完善和富有弹性的电源管理系统已经成为越来越紧要的项目和要求,也将成为Linux取代传统RTOS、WinCE/mobile、Symbian,占据消费电子首席开源软件(OS)地位的重要杀手锏。
Linux电源管理质量服务
目前已经发表的Linux版本是2.6.24和2.6.25,这两个版本包含了下面几个和嵌入式相关的技术。LTTng(LinuxTrace工具);电源管理质量服务(PM QoS,也称为QoSPM);Kpagemap——一个在userspace的应用,可以更详尽的测量到内存消耗的情况;Latency measurement API——一个延迟测量API,也是LatencyTOP的基础,这个工具的姐妹组合是叫做powerTop的电量分析软件,这是一个很有用的电源管理工具,可以分析出每个具体的应用对电量的消耗情况。最近商业的嵌入式Linux公司Montavista把它移植到mobilinux5.0产品里支持ARM结构;Smack——一个简单的访问控制的安全模块,值得尝试在嵌入式系统中使用。
这里重点讨论PM QoS,构建PM QoS的目的是通过提供硬件之间可以访问的机制,让应用在有性能需要的时候可以给出电源管理的资源信息,在实现上,它是构建了一个新的内核结构以完成需要延迟和吞吐性能的驱动程序、系统和应用之间的通信。
PM QoS目前发布的版本里有三个参数(pm_qos_params.c):cpu_dma_lantency、network_latency和network_throughput。使用pm_qos_init()在内核里可以增加新的参数,在userspace应用使用PM QoS就好像是驱动文件的一个特性。打开驱动文件,改变如延迟参数等值,写入文件后,关闭文件就意味取消了对内核的请求,可以自动保护避免因为可能发生宕机而损坏内核系统。
在内核API中有请求(requirement)、告知(notifier)等接口,让需要有延迟和吞吐性能要求的驱动代表这些参数。典型的应用包括目前Intel开源实验室开发的一个带有PM_QoS的无线网卡的驱动(IW14965)。这个无线芯片有六个电源配置点,它们可以影响天线的功率,设置进入无线休眠的速度和无线AP站点之间的距离等参数,这个应用使用PM QoS的延迟参数就很适合,目前这个驱动的工作还是和驱动相关,通过sysfs挂接,驱动只需要简单的注册并告知需要改变网络延迟参数的要求,然后切换到它希望的电源管理层。