21
项项 8 SD 项项项PDA 项项项项项项项项 2 项项项项项项项项项 电电电电 I/O 电电电电

项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

  • Upload
    lexine

  • View
    128

  • Download
    0

Embed Size (px)

DESCRIPTION

项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 ). 本节课程主要知识点 电源管理 I/O 资源管理. 重点和难点. 重点 电源管理 难点 电源管理的实现. 电源管理. 电源管理器. 电源管理器通过管理设备的电源状态,从而增加整个系统的电源效率。 为每个设备提供电源管理,减少设备的电能消耗。 在重启、运行、挂起状态下在 RAM 中维护和保护文件系统。 在用电池供电的设备中,电源管理表现的好坏会直接影响设备的性能。. 电源管理器功能. 保证电源管理的具体功能可以被枚举。 处理系统的电源服务请求。 在系统启动或空闲过后立刻给设备加电。 - PowerPoint PPT Presentation

Citation preview

Page 1: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

项目 8: SD卡读写- PDA扩展存储卡的实现 ( 2)

本节课程主要知识点电源管理 I/O资源管理

Page 2: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

重点和难点重点电源管理

难点电源管理的实现

Page 3: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源管理

Page 4: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源管理器电源管理器通过管理设备的电源状态,从而增加整个系统的电源效率。

为每个设备提供电源管理,减少设备的电能消耗。

在重启、运行、挂起状态下在 RAM中维护和保护文件系统。

在用电池供电的设备中,电源管理表现的好坏会直接影响设备的性能。

Page 5: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源管理器功能保证电源管理的具体功能可以被枚举。处理系统的电源服务请求。在系统启动或空闲过后立刻给设备加电。在系统关闭和进入空闲时使设备掉电或进入睡眠。

如果设备支持唤醒功能,唤醒设备。

Page 6: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源管理器结构电源管理器是分层实现的,电源管理器 P

M.dll直接由设备管理器 Device.exe加载。 PDD层由设备制造商自己定义。

Page 7: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源状态电源状态分为设备电源状态和系统电源状态两个概念,二者是两个完全独立的的概念,但相互之间还有联系。

电源管理器用 OEM中定义的系统电源状态来管理电源。

系统电源状态与设备电源状态有明确的映射关系。

Page 8: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

系统电源状态系统电源状态由 OEM定义,具体定义在注册表中。

系统电源状态的转换可以在硬件平台上以任何合理的方式发生。

在 common.reg文件中,定义了默认的系统电源状态。

Page 9: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

设备电源状态( 1)设备电源状态是预定义的,Windows CE提供了 5种预定义的状态,在注册表中有相应的键。

设备电源状态分别为 Full ON 电源完全开启 Low ON 在低电源下提供完全功能 Standby 部份供电,等待唤醒请求 Sleep 睡眠,等待唤醒的最小电源 OFF 未供电

Page 10: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

设备电源状态( 2)设备驱动程序把以上的 5种预定义状态映射为有意义的状态。

电源管理器在每个设备驱动程序被加载时发送请求,来得到此设备所支持的电源状态。

驱动程序根据设备的定义来设置设备的电源状态,一般是加载时置为 Full ON,卸载时置为 OFF。

Page 11: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

设备电源管理系统电源状态与设备电源状态的分离提供了基于Windows CE设备电源管理的新的模式。

在系统还在完全供电时( Full ON),设备却可以进入低电源状态以降低电源的总消耗。

一个典型的例子是,数码像机在拍摄状态,而又长时间没有按动快门时,镜头自动缩回,来降低耗电。

Page 12: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源管理器接口电源管理器要实现以下程序间的接口

电源管理的设备的驱动程序改变系统电源状态的应用程序电源管理的应用程序电源事件通知的应用程序

电源管理器针对上述不同的客户采用不同的编程接口。

Page 13: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

电源管理器三个接口驱动程序接口

电源管理器与被电源管理电源管理的设备的驱动程序间的接口。

应用程序接口电源管理器与电源管理的应用程序间的接口。

提醒接口电源管理器与电源事件通知应用程序间的接口。

Page 14: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

驱动程序接口( 1)电源管理器通过两种机制与驱动程序通信电源管理器使用 DeviceIoControl()函数向下通知设备驱动程序来决定设备性能并更新设备电源状态。

设备通过驱动程序调用 DevicePowerNotify()函数向电源管理器请求改变设备电源状态。

Page 15: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

驱动程序接口( 2)为更好地实现电源管理器与驱动程序间的交互,驱动程序要实现响应电源管理器的请求,报告它的设备电源状态。

处理电源管理器发送的电源请求。启动后给设备加电。关闭时给设备断电。为设备开启唤醒功能。(设备要有该功能)

Page 16: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

应用程序接口应用程序通过 API函数来接受电源事件的提醒,获得系统或设备电源状态。

一般不要求应用程序通过 API函数来设定设备的电源状态。因为会覆盖电源管理器标准的设备电源状态,也会限制高级自管理设备的发挥。

Page 17: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

通知接口 电源管理器利用通知接口来提醒应用程序和驱动程序得到电源事件。

应用程序首先要通过 CreatMsgQueue()函数来建立消息队列,然后把消息队列的句柄通过调用 RequestPowerNotifications() 传给电源管理器。

电源管理器把提醒发到消息队列中。 这一机制使得应用程序能接收电源相关事件的通知并参与系统电源状态改变的决策。

Page 18: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

I/O资源管理

Page 19: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

I/O资源管理 I/O资源主要是指 IRQ和 I/O地址。设备管理器提供专门的资源管理器负责对 IRQ和 I/O地址资源进行管理,同时记录当前系统中的 IRQ和 I/O地址的占用和可用情况。

Page 20: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

I/O资源管理的任务 I/O资源管理器跟踪设备驱动程序装载前从注册表信息中获得的设备初始化所需的系统资源。

这些资源包括 IRQ的集合与 I/O地址空间。 这些资源的初始化状态在注册表中配置

IRQ状态[HKEY_LOCAL_MACHINE\Drivers\Resources\IR

Q] I/O地址状态

[HKEY_LOCAL_MACHINE\Drivers\Resources\IO]

Page 21: 项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 )

I/O资源管理的组件 devcore

  提供核心设备管理器功能。 iorm

提供 I/O 资源管理器功能。 iorm是必需的组件且无法移除。

Pmif

提供了电源管理器 DLL 入口点的接口。 Nopmif

Nopmif 提供了电源管理器入口点的存根版本。