当前位置:首页 > 嵌入式 > 嵌入式软件
[导读] 在WinCE4.0之前电源管理工作是由GWES来实现的。( GWES:Graphics,Windows and Events Subsystem.图形,窗口和事件子系统.主要负责图形输出和用户交互)。但GWES提供的电源管

 在WinCE4.0之前电源管理工作是由GWES来实现的。( GWES:Graphics,Windows and Events Subsystem.图形,窗口和事件子系统.主要负责图形输出和用户交互)。但GWES提供的电源管理模块功能过于粗糙死板:所有子设备只能有On和Suspend状态,应用程序无法得到任何状态转换通知,等等……直到WinCE4.0才引入了电源管理模块用以替代GWES中的电源管理功能。

电源管理模块实体是一个动态链接库pm.dll来实现的。电源管理模块的代码结构是分层的,MDD+PDD。MDD是抽象公共库,一般不需要改动,PDD是平台相关,主要改动都在PDD。针对平台特性,微软提供了2种类型PDD示例.一种是default,另外一种是pda版本的,这都可以在源代码里面找到的。默认的情况,使用的是default。如果要使用pda版本的,需要在系统中指定环境变量SYSGEN_PM_PDA。

default和pda版本的主要区别在与对系统电源状态的定义上面:

default版本定义了4种状态:On, UserIdle, SystemIdle, Suspend;

PDA版本定义了On, ScreenOff, Unattended, Resume, Suspend。

default版本的简单描述:UserIdle状态是描述用户在使用但没有操作,比如阅读.SystemIdle状态描述用户停止使用,但系统仍然工作,比如文件传输。

PDA版本简单描述:ScreenOff状态描述用户请求把屏幕背灯关闭。是用户主动关闭的情况,区别于UserIdle,UserIdle是自动的。Unattended状态表示后台工作,用户不会对其察觉的情景,比如ActiveSync每5分钟唤醒系统同步,然后继续suspend; Resume状态描述唤醒后情景,比如唤醒后在指定时间内决定转到哪个状态,否则继续suspend。

上面说的是系统也就是CPU所处于的几种状态,下面来说说外部设备的状态。在微软里,设备的电源状态被定义了如下几种:D0,D1,D2,D3,D4,分别代表Full on,Low on, Standby, Sleep, Off这5个状态。

上面主要是介绍了两个状态,一个是CPU的,一个是设备的。下面我们再来说说电源管理模块。电源管理模块也就是pm.dll的功能可以从两

个方面来理解:一个是对设备驱动,一个是对应用程序。也就是说设备驱动可以通过电源管理模块来管理改设备的电源状态,应用程序也可以通关电源管理模块来实现一定的功能,它们都有各自的API函数。

下面我们就来看看对与设备驱动的电源管理的实现。

通过上面我们已经知道设备可以有D0-D4五种状态,那么实现了电源管理的设备驱动就可以智能的管理该设备的电源状态也可以理解为工作状态。电源管理模块对设备驱动提出了一个规范和架构,满足规范的驱动纳入电源管理.对于流驱动控制的设备,要支持电源管理要满足的条件,简单来说有:

1.声明自己是支持电源管理的(就是在注册表里有相应的Iclass值)。

"IClass" = "{A32942B7-920C-486b-B0E6-92A702A99B35}" ; GUID for generic power-managed devices

2.驱动中实现电源管理模块所要求的IOCTL

3.驱动加载时候要汇报所支持的电源状态和相关特征.

4.***_PowerDown和***_PowerUp接口接收系统休眠和唤醒通知.

电源管理器通过IOCTL代码来和驱动通信。通常情况下,当一个驱动程序声明为支持电源管理时,驱动只需要在DeviceIoControl中实现电源的管理即可。下面是电源管理器用来与驱动通信的IOCTL代码:

IOCTL_POWER_CAPABILITIES:代表电源管理器请求设备驱动返回设备支持的电源状态及相关特征;

IOCTL_POWER_SET:请求驱动更新设备的电源状态;

IOCTL_POWER_QUERY:电源管理器询问设备是否准备好进行状态切换;

IOCTL_POWER_GET:请求驱动返回当前设备的电源状态;

IOCTL_REGISTER_POWER_RELATIONSHIP:通知父设备注册所有它所控制的设备。

其中IOCTL_POWER_CAPABILITIES和IOCTL_POWER_SET是支持电源管理的设备驱动必须实现的。

一个实现电源管理的驱动:

\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_FSL_V\BACKLIGHT\DRIVER\backlight.cpp

在设备自我管理电源的情况下,设备应该通过DevicePowerNotify函数请求系统改变它们的电源状态,这个时候电源管理模块就用调用相应的IOCTL来实现电源状态的管理。就是驱动调用了该驱动中的部分函数。

此外,设计驱动还应该了解:设备不一定具备所有5种状态,但至少可以工作在D0;电源管理模块可能会要求设备进入任何设备电源状态,并不仅仅是设备所汇报自己支持的那几个;如果被要求进入不支持的状态,应该进入另一个它所支持的更高功耗的状态;当前状态不需要重复设置;设备电源状态不一定和系统的电源状态同步。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

慕尼黑2025年9月8日 /美通社/ -- 2025年9月8日德国国际汽车及智慧出行博览会(IAA MOBILITY)于慕尼黑开幕,广汽携旗下五款新能源明星车型亮相,正式发布未来移动出行的"广汽方案"...

关键字: 广汽 IO AI 移动

中国上海,2025 年9月9日 — Nexperia 每年增加 800 多种新产品类型。2024 年,仅模拟和电源管理应用便推出了超过 70 种新部件。为支持 Nexperia 产品扩展,e络盟紧跟其不断扩大的产品组合,...

关键字: 电源管理 SiC 二极管

随着汽车电子设备日益复杂,车企对体积紧凑、高能效、可靠的解决方案的需求不断增长,多输出功率开关在集成度、成本效益、故障诊断和能效方面优势愈发明显。现代汽车工业越来越依赖众多的低功率电子模块,例如,传感器、LED和继电器。...

关键字: 功率开关 电源管理 传感器

北京2025年8月19日 /美通社/ -- 美通社(PR Newswire)母公司,全球消费者与媒体情报领军企业Cision今日正式宣布,旗下CisionOne平台连续第二年荣获市场情报权威机构MarTech Break...

关键字: CIS THROUGH TE IO

与计算和仿真工具相比,电源架构的设计工具并未得到广泛使用。然而,这些工具在电路电源系统的开发过程中起到至关重要的作用。作为电源开发流程的初始环节,这些工具为创建出色的电源架构奠定了基础。

关键字: 电源架构 电路电源系统 电源管理

在当今的电子设备领域,随着技术的飞速发展,设备对于电源管理的要求越来越高。从智能手机、平板电脑等便携式设备,到复杂的通信基站、工业控制系统,电源的稳定、高效供应都是保障设备正常运行的关键。低压 LDO(Low Dropo...

关键字: 电源管理 稳压器 低压差

新闻摘要 在OCP亚太峰会上,伟创力推出了专为NVIDIA GB300 NVL72平台设计的新型电源架,该平台配备72颗NVIDIA Blackwell Ultra...

关键字: 伟创力 英伟达 电源管理 AI

北京2025年7月31日 /美通社/ -- 日前,"X-Power IBM赋能创新中心"在苏州工业园区正式启动运营,标志着IBM中国与艾科斯幂(苏州)信息科技有限公司(以下简称"X-Powe...

关键字: IBM POWER 数字化 自动化技术

北京2025年7月30日 /美通社/ -- 近日,北京积算科技有限公司(以下简称"积算科技")宣布其算力服务平台上线赤兔推理引擎。积算科技PowerFul-AI应用开发平台与赤兔合作,打造高性价比的模...

关键字: 模型 RF POWER PSE

加州圣地亚哥和北京2025年7月25日 /美通社/ -- CreateAI(OTC:TSPH)今日宣布,公司与枕刀歌动画团队联合出品的《绣春刀》短片在Collision Awards中一举斩获三枚金奖和一枚银奖,与Wal...

关键字: CREATE AI SI IO
关闭