基于WinCE驱动程序的电源管理研究与设计

最新更新时间:2013-09-14来源: 21IC关键字:WinCE  驱动程序  电源管理 手机看文章 扫描二维码
随时随地手机看文章

W inCE 的两种模型是本机的设备驱动程序和流接口的驱动 程对于通常的嵌入式电子设备, 尤其是不能长久地连接交流电源的嵌入式电子设备, 降低显示设备的耗电一直是电源管理的主要任务。目前, 有许多类型的显示设备, 但现代大多数产品都选用反射式薄膜晶体管 ( TFT ) 显示加背光灯作为显示设备。虽然在光线充足的情况下可以看清屏幕上的内容, 但是考虑到阅读的舒适度, 还是需要把背光灯打开。 基于 W indow s CE 的嵌入式系统终端通 常以电池供电。因此, 背光驱动电源管理的作用显得尤为关键。如何减少目标系统的不必要的耗电, 延长其待机时间, 就成了 W indow s CE 操作系统电源管理设计与开发的一个重要内容。

本文从WinCE 的流接口设备驱动程序出发, 详细介绍了基于 Window s CE 操作系统电源管理策 略和基本原理, 并且在WinCE 背光驱动中实现了电源管理的设计与开发。

1 Window CE 驱动程序架构

目前,WinCE 提供了四种设备模型, 其中两种是专门用于 WinCE 的模型,另外两种模型来自其他操作系统。基于WinCE 的两种模型是本机的设备驱动程序和流接口的驱动程序。两种外部模型用于通用串行总线(USB) 和网络驱动器接口标准(NDIS) 驱动程序。其中流接口驱动程序是为连接到基于WinCE 平台的外围设备而设计的, 这些外围设备包括SD 卡、摄像头、打印机等,其驱动模型如图1 所示。本文基于S3C2440A 的ARM9 开发板上LCD 显示屏的背光控制流接口驱动程序, 详细分析WinCE 下背光驱动的电源管理开发实现流程。

 

 

图1 Window s CE 流接口驱动模型

从图1 可以看出, 外围设备由设备驱动程序管理, 用户应用程序通过调用文件系统从而实现对外部物理设备的访问, 流接口驱动程序通过把外围设备表示为文件系统的一个特殊文件, 而使得应用程序在使用外围设备时就像打开、关闭一个文件一样简单。

2 Window CE 电源管理

2.1 电源管理架构和电源管理器

电源管理的总体结构如图2 所示。电源管理器直接或者间接地与应用程序和驱动程序交互。电源管理器与驱动程序主要通过驱动程序接口进行交互, 与应用程序通过API 和提醒接口进行交互。其中, 电源管理器专门负责管理设备电源状态, 从而提高操作系统的整体电源效率, 并且与不支持电源管理的驱动程序相兼容。电源管理器在操作系统中的软件实体是动态链接库pm. dll, 它由设备管理器device. dll 加载到Windows CE 的内核进程中运行。

 

 

图2 电源管理架构示意图

使用电源管理器, 设备接收作为I/ O 控制代码(IOCT L)形式的电源状态变化的通知。使用IOCT L 管理电源可以区分设备的电源状态与整个操作系统的电源状态。这样, 当操作系统正在运行时, 一些设备可以关闭自己的电源, 而当操作系统挂起时, 另外一些设备可以保持原有状态。

2.2 Windows CE设备电源状态和系统电源状态

电源管理器期望所有被管理的设备都支持一个或者多个设备电源状态, 设备必须向电源管理器报告它们的电源消耗特征, 设备电源状态通常需要在性能与电量消耗之间进行折中。

电源状态包括系统电源状态和设备电源状态。设备管理器在由OEM 定义的系统电源状态的范围内管理设备电源状态, 系统电源状态对设备电源状态施加了一个上界。

Window s CE 的设备电源状态是操作系统的静态的预定义电源状态。外设的驱动程序从电源管理器处接收改变设备电源状态的请求, 将它转换成外设可以支持的电源状态, 并且负责最后实现在物理外设上的电源状态改变。

Window s CE 提供5 种预定义的设备电源状态。它们在注册表中也有相对应的键。如果以Dn 代表D0~ D4, 则n 的数字越小的电源状态等级下外设的耗电量越大, 如表1 所列。

表1 设备电源状态

 

Window s CE 操作系统的系统电源状态与设备电源状态性质完全不同, 它不是静态定义的, 而是由OEM 用户根据需要自定义。OEM 用户通过配置系统注册表定义系统的电源状态,系统电源状态的名称被定义成注册表项的名字。图3 描述了Window s CE 支持4 种最典型的系统电源状态的转换。 

 

图3 系统电源状态的转换

3 背光驱动的电源管理

3.1 LCD 背光的电源管理策略

背光驱动启动一个监视工作线程, 不停的等待3 个事件:

3.1.1 BackLightChang eEv ent

等待注册表中时钟的更新, 在注册表的时钟更新之后总是将背光灯打开。

dw Resul t = WaitForMul tipleObject s( NUM _EVENT S, & g_evtSignal[ 0] , FALSE, dw Tim eout ) ;

if ( WAIT _OBJECT_0 = = dw Res ult ) {

BL_ReadRegist ry( & g_BLInf o) ;

BL_On( TRUE) ;

}

3.1.2 Pow erChangedEv ent

供电电源发生变化, 例如插入了电源, 监视线程会获得了这个事件。如果使用电源, 可以使用m _ dw ACTimeout 值作为超时值, 否则, 使用m _ dw Batter yT imeout 值作为超时值。

if ( dw Result = = WAIT_OBJECT _0+ BL_POWERE VT) {

if ( IsACOn( ) ) {

dw Timeout = g_BLInf o. m_dw ACTim eout * 1000;

}

else {

dw Timeout = g_BLInf o. m_dw Bat t eryT imeout * 1000;

}

}

3.1.3 Pow erM anag er/ ActivityTimer / UserActivity

等待用户输入事件,如果用户有按键动作,则无论电源插上与否背光驱动都打开,否则,等待超时事件的发生, 将背光驱动关闭。

if ( dw Result = = WAIT_OBJECT _0+ 1 | | dwResult = = WAIT _OBJECT _0 + BL_BUT TONEVT )

{

if ( IsACOn( ) ) {

if ( g_BLIn fo. m_bAC Au t o) {

BL_On( TRUE) ; }

}

else {

if ( g_BLIn fo. m_bBat t eryAut o) {

BL_On( TRUE) ; }

}

}

else if ( dw Result = = WAIT_T IMEOUT ) {

BL_On( FALSE) ;

}

注册表的超时值决定了背光灯的工作时间。在注册表中进行如下超时值的设置:

[ H KEY_CURRE NT_USER/ Cont rolPanel / Backlight ]

"AC Timeout "= dword: 3c / / 十六进制, 十进制为60

"Bat t eryT imeout "= dw ord: 1e / / 十六进制, 十进制为303.2 创建支持电源管理的背光驱动

要想获得电源管理的功能支持, 首先要使电源管理器可以识别背光驱动程序。为此, 背光驱动需要向设备管理器声明一个特殊的代表电源管理的设备类型的GUID.具体操作是在Active 注册表键的IClass 表项中增加一个GUID.在Platform.reg 文件中添加如下:

"IClass "= "{ A32942B7- 920C- 486b - B0E6 - 92A702A99B35} "; Pow er- manageable generi c

3.3 在背光驱动中添加对I/O 控制代码( IOCTL) 的支持

在背光驱动被通知为支持电源管理的驱动后, 只需处理来自电源管理器的DeviceIoControl 调用。电源管理器使用如表2所示的IOCTL 代码与背光灯进行通信。

表2 电源管理的IOCTL 操作码

 

 

其中IOCTL _ POWER _ CAPABILITIES 是支持任何一个支持电源管理的流接口驱动程序所必须实现的。

3.4 IOCTL 代码的实现

在驱动程序被加载到系统中的初始阶段, 背光驱动首先将设备电源状态置于D0 状态, 然后电源管理器通过IOCTL _POWER _ CAPABILITIES 操作码调用它的IOControl 函数。

在向设备发出查询时, 背光驱动详细的报告该设备的电源管理能力, 以便将自己纳入到系统的电源管理策略中去。如果本次的查询电源管理支持能力的操作失败, 则电源管理器将会认为该设备驱动程序不支持其他4 个电源管理IOCTL 操作码。具体代码如下:

cas e IOCT L_POWER_CAPABILIT IES :

{

PPOWER_CAPABILIT IES ppc;

if ( ! pdw ActualOu t | | ! pBufOut | | ( dw LenOut < sizeof

( POWE R_CAPABILITIES) ) )

{

RetVal = FALSE ;

dw Er r = ERROR_INVALID_PARAMET ER;

break;

}

ppc = ( PPOWER_C APABILITIES ) pBufOut ;

m ems et ( ppc, 0, sizeof ( POWER_CAPABILIT IE S) ) ;

ppc- > DeviceDx = 0x11; / / 支持D0, D4 两种设备电源状态

ppc- > Pow er[ D0] = 25000; / / 25 m = 25000 uA

* pdw ActualOut = siz eof (POWE R_CAPABILITIES) ;

} break;

在初始阶段完成后, 电源管理器可以根据电源管理策略调用IOCTL _ POWER _ SET 调整设备的电源状态。在实现对IOCTL _ POWER _ SET 支持时, 开发背光驱动需要注意的是设备并不一定具备所有五种设备电源状态, 但至少工作在D0状态和D4 状态。

3.5 休眠和唤醒的处理

电源休眠唤醒是延长系统电源工作时间的一项重要技术。在系统进入休眠状态时, 驱动程序应该关闭设备的电源, 即使该设备由于应用程序的请求不处于D4 状态。背光驱动通过BAK _ Pow erDown 和BAK _ PowerUp 接收系统休眠和唤醒的通知, 这些通知在内核调用OEMPowerOff 之前发出, 并处于中断上下文中。

4 背光驱动测试

将背光驱动打包进内核镜像文件, 下载到开发平台, 打开系统显示属性, 在使用电池电源供电的情况下, 如果用户在30s 之内没有活动, 那么LCD 的背光灯将进入空闲状态; 在使用外部电源供电的情况下, 如果用户在1 分钟内没有活动,那么LCD 的背光灯也将进入空闲状态。

5 结论

本文设计了一种基于Window s CE 操作系统的嵌入式终端背光驱动的电源管理系统。在分析流接口驱动和WinCE 操作系统电源管理的基础上, 结合电源管理的IOCT L 操作码, 完成了背光驱动电源管理系统的设计, 并给出了背光驱动程序电源管理部分实现的关键性代码。经过测试, 背光驱动程序可以有效地控制LCD 背光灯的电力消耗, 也能够与整个系统的电源状态协调一致, 系统对背光的控制满足设计需求。最后, 本文对WinCE 操作系统下背光驱动电源管理策略的研究, 对设计其他同类嵌入式终端产品驱动程序的电源管理系统也具有重要的指导意义和参考价值。

关键字:WinCE  驱动程序  电源管理 编辑:探路者 引用地址:基于WinCE驱动程序的电源管理研究与设计

上一篇:移动电源故障及解决方案
下一篇:用电池监测芯片实现多功能智能充电器

推荐阅读最新更新时间:2023-10-12 22:25

变形笔记本走俏 推动CPU与电源管理IC整合
个人电脑中央处理器(CPU)将扩大整合电源管理IC。变形笔电/平板风潮兴起,带来更艰巨的功耗与轻薄设计挑战,因此处理器大厂英特尔(Intel)已将CPU改良为低电压操作模式,让耗电量降到7瓦甚至2瓦以下;同时更计画进一步整并CPU与电源管理IC,并导入更多数位电路,以提升动态电压管理能力。 关键词: CPU 电源管理 笔记本 iframe height=250 src="http://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=0.6001322609056665&zoneid=80" frameBorder=0 width=300 s
[模拟电子]
变形笔记本走俏 推动CPU与<font color='red'>电源管理</font>IC整合
隔离反激和非隔离BUCK应用设计方案
在产品设计时,倘若没有考虑应用环境对电源隔离的要求,产品到了应用时就会出现因设计方案的不当导致的系统不稳定,甚至出现高压损坏后级负载的情况,以及出现危害人身财产安全的情况。因此产品设计是否需要隔离至关重要。 “南航一名23岁空姐在iPhone5充电时打电话被电死”,新闻在网上引起广泛关注。充电器也能能危害生命?专家分析手机充电器内部变压器漏电,220VAC的交流电漏电到直流端,并通过数据线传导到了手机金属壳上,最终导致触电身亡,发生无可挽回的悲剧。 那么手机充电器输出端为什么会带有220V的交流电呢?隔离电源的选型要注意哪些事项?如何区分电源是隔离与非隔离?业内通用的看法是:  1、隔离电源:电源的输入回路和输出回路之
[电源管理]
系统级电源管理对可携式产品的重要性
众所周知,今日的消费者都希望拥有越来越聪明、越精巧、同时外型越薄的电子产品,但此类装置的设计者持续面临的相同需求,则在于延长电池寿命。10年前,某些手机可能充一次电就可以使用一整个星期;而今日,电池技术面临着保持此记录的难题,但仅有少数产品可以在正常的使用状态下使用超过一天而不需再充电。 近几年来,电池容量的成长每年仅能达到约11%,目前也未见可能加速的迹象,但智慧型手机、平板电脑和笔记型电脑所提供的效能和功能却是十年前难以想象的:诸如全彩、高解析度触控萤幕、多个无线收发器和接收器、数个GB级记忆体,以及近场通讯(NFC)等功能,而这些更多功能也代表电源的更高消耗。然而随着越来越多功能的加入,功耗效能的成长速度却呈现很小的
[电源管理]
S3C2410-WinCE6.0-OAL的快速调试
前文分析了S3C2410 WinCE6.0 OAL的启动代码,本文接着介绍OAL的移植过程。在继续之前,再明确一下WinCE6.0 OAL的作用。在WinCE6.0中,OAL首先起了穿针引线的作用,这一点可从其启动代码看出来。第二个作用,暴露一些OEM函数供Kernel调用,具体哪些函数由OEMGLOBAL决定。为了方便BSP的升级,6.0基本保留了原来的函数结构。所以,我们可以选择5.0的BSP为参考,将其移植到6.0上来。PB6.0的安装目录中也包涵一些BSP,其中DeviceEmulator就是模拟S3C2410平台。所以,我们也可以此为参考。总之,OAL代码的来源不是问题。问题是如何快速编译这些代码,并验证其正确性。本
[单片机]
S3C2410-<font color='red'>WinCE</font>6.0-OAL的快速调试
NXPMPT612光伏MPPT电池充电控制器参考设计
NXP公司的MPT612是基于低功耗ARM7TDMI-S 32位RISC处理器的最大功率跟踪(MPPT)集成电路,工作频率高达72MHz,具有多种串行接口(I2C, UART, SPI, SSP),专用的功能如光伏(PV)电压和电流测量,PV板参数配置,系统效率高达98%,提供10位ADC和8个模拟输入,转换时间低至 2.44 μs,主要用在太阳能PV和燃料电池DC充电控制,公共照明和LED街灯照明的电池充电,DC/DC转换器,微逆变器等.本文介绍了MPT612主要特性和优势,方框图,PV板,控制器 DC负载的简化PV系统框图以及MPPT充电控制器参考系统框图,电路图和材料清单. The MPT612, the first dedi
[电源管理]
基于S3C2440的nRF2401的接口电路和驱动程序设计
通信频率为2.4GHz 的ISM 频段,由于其免许可证、波长较短、天线的尺寸小、外围器件少等优点,适合于近距离无线通信。将ARM9 与nRF24E1 结合, 可以缩小设备体积, 降低系统功耗, 减少设备间连线困难等问题。针对ARM9 芯片S3C2440 的特点设计了对nFR24E1 的接口电路和驱动程序。对于在狭小空间中,有设备之间的数据共享要求的系统是一种有效解决途径。 2.4GHz 无线设备的使用,免去了系统之间连线的烦恼。一方面可以降低设备的成本,另一方面就是可以简化设备的安装。 特别是对于一些运动部件的实时测量,借助两个无线传输设备,可以将一部分测量设备做到运动部件上,另一部分安装在附近,就可以将运动部件的
[单片机]
基于S3C2440的nRF2401的接口电路和<font color='red'>驱动程序</font>设计
智能电源管理方案助力便携式消费应用
在当今的消费电子产品市场上,要区分不同类别的产品已经变得越来越困难。现在用户对手机功能的需求已经不是简单的拨打和接听电话,而便携式导航设备(PND)要做的也不仅仅是指引用户从A点到达B点。智能手机、个人导航设备、移动游戏平台以及其他手持式消费产品之间功能集的融合能够提供给消费者功能丰富的产品选择,这将带来巨大的好处。同时,这种趋势也给便携式应用的设计人员带来了巨大的挑战,因为他们现在必须在一个空间狭小的设备中加入所有这些不同的功能,还要使产品有别于竞争对手的产品。在许多情况下,这是通过提高音频质量、改善用户界面体验、减小外形尺寸和延长电池寿命等方法实现的。现在,这种新的高度集成的智能系统电源管理解决方案,使设计人员拥有了一种有助于实
[电源管理]
智能<font color='red'>电源管理</font>方案助力便携式消费应用
字符设备驱动程序--LED驱动
编写驱动程序需要编写那些代码: 1、硬件相关的驱动程序 2、Makefile的编译程序 3、还需要编写一个相关的测试程序 比如说:一个摄像头驱动程序 1、驱动程序的编写,需要编写一些硬件相关的操作,编译Makefile 2、安装、运行、卸载驱动程序(insmod ***、。./*** 、remod *** )。 3、使用这个驱动程序:需要一个测试程序,如QQ(测试程序)打开摄像头。 编写驱动程序框架: APP:(测试程序) open read write ......... -----------------------------------------------------
[单片机]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved