基于基于Linux的便携嵌入式设备电源管理解决方案的便携嵌入式设备电源管理解决方案
本文分析了嵌入式设备现有的节电技术和Linux系统的电源管理机制,并以iPAQ为例提出了一套使用以上机制来
实现便携嵌入式设备的电源管理解决方案。
前 言前 言
随着各种便携嵌入式设备性能的日益提高,功能日益丰富,其电源紧张的问题也日益突出,国内新推出的某些具有PDA
等多种功能的智能电话在密集使用下只能维持半天,多数摄像机和数码相机在一次充电后都只有一个小时左右的累积工作时
间。Linux作为一个开放源代码的操作系统,拥有非常丰富的软件资源和平台支持,这使得嵌入式系统开发的周期大大缩短,
越来越多的商用和通用嵌入式系统都采用Linux作为软件平台。因此有必要对Linux系统的
Linux内核电源管理机制分析内核电源管理机制分析
Linux作为一个强大而成熟的操作系统,本身提供了一套从用户空间到系统空间的,由上而下的软件电源管理机制。
电源管理子系统电源管理子系统
Linux内核实现了一个电源管理子系统用于统一管理每个设备。源代码pm.h和pm.c中定义和实现了主要的
通过这些接口函数就可以将自己的硬件设备纳入电源管理子系统使其成为系统电源管理的一部分。这需要在编写设备驱
动程序的时候完成下面的工作:
(1)在初始化驱动时,使用pm_ register对设备的每个实例( instance)进行注册;在清除驱动时使用pm_unregister来取消设
备的注册。
(2)在对硬件进行操作之前调用pm_access (这样会保证设备已被唤醒并且处于ready状态) 。
(3)编写自己的pm _callback函数。开发人员应该在设备或系统进入suspend状态时保留设备和系统的上下文到安全的地
方,并在设备或系统re -sume时恢复其上下文,使之能够继续运行,编写pm_callback函数是驱动实现设备电源管理的重点。
(4)当设备不在被使用的时候调用pm_dev_idle函数,这个操作是可选的,可以增强设备idle状态的监测能力。
电源管理设备电源管理设备
将设备加入到电源管理子系统后,该设备就已经有了处理电源管理请求的能力,但是系统的电源管理行为并不会主动发
生。因此还需要一个电源管理设备来接受用户请求,产生电源管理行为。这里所指的设备并不是一个真实的硬件设备,而是一
个在Linux系统空间里接受用户控制的虚拟设备,它可以是一个简单的字符型设备。有了这个设备,就可以方便的实现来自于
用户空间的电源管理请求和方案。Linux电源管理行为过程如图1所示。