210 likes | 378 Views
项目 8 : SD 卡读写- PDA 扩展存储卡的实现 ( 2 ). 本节课程主要知识点 电源管理 I/O 资源管理. 重点和难点. 重点 电源管理 难点 电源管理的实现. 电源管理. 电源管理器. 电源管理器通过管理设备的电源状态,从而增加整个系统的电源效率。 为每个设备提供电源管理,减少设备的电能消耗。 在重启、运行、挂起状态下在 RAM 中维护和保护文件系统。 在用电池供电的设备中,电源管理表现的好坏会直接影响设备的性能。. 电源管理器功能. 保证电源管理的具体功能可以被枚举。 处理系统的电源服务请求。 在系统启动或空闲过后立刻给设备加电。
E N D
项目8:SD卡读写-PDA扩展存储卡的实现 (2) 本节课程主要知识点 • 电源管理 • I/O资源管理
重点和难点 重点 • 电源管理 难点 • 电源管理的实现
电源管理器 • 电源管理器通过管理设备的电源状态,从而增加整个系统的电源效率。 • 为每个设备提供电源管理,减少设备的电能消耗。 • 在重启、运行、挂起状态下在RAM中维护和保护文件系统。 • 在用电池供电的设备中,电源管理表现的好坏会直接影响设备的性能。
电源管理器功能 • 保证电源管理的具体功能可以被枚举。 • 处理系统的电源服务请求。 • 在系统启动或空闲过后立刻给设备加电。 • 在系统关闭和进入空闲时使设备掉电或进入睡眠。 • 如果设备支持唤醒功能,唤醒设备。
电源管理器结构 • 电源管理器是分层实现的,电源管理器PM.dll直接由设备管理器Device.exe加载。 • PDD层由设备制造商自己定义。
电源状态 • 电源状态分为设备电源状态和系统电源状态两个概念,二者是两个完全独立的的概念,但相互之间还有联系。 • 电源管理器用OEM中定义的系统电源状态来管理电源。 • 系统电源状态与设备电源状态有明确的映射关系。
系统电源状态 • 系统电源状态由OEM定义,具体定义在注册表中。 • 系统电源状态的转换可以在硬件平台上以任何合理的方式发生。 • 在common.reg文件中,定义了默认的系统电源状态。
设备电源状态(1) • 设备电源状态是预定义的,Windows CE提供了5种预定义的状态,在注册表中有相应的键。 • 设备电源状态分别为 • Full ON 电源完全开启 • Low ON 在低电源下提供完全功能 • Standby 部份供电,等待唤醒请求 • Sleep 睡眠,等待唤醒的最小电源 • OFF 未供电
设备电源状态(2) • 设备驱动程序把以上的5种预定义状态映射为有意义的状态。 • 电源管理器在每个设备驱动程序被加载时发送请求,来得到此设备所支持的电源状态。 • 驱动程序根据设备的定义来设置设备的电源状态,一般是加载时置为Full ON,卸载时置为OFF。
设备电源管理 • 系统电源状态与设备电源状态的分离提供了基于Windows CE设备电源管理的新的模式。 • 在系统还在完全供电时(Full ON),设备却可以进入低电源状态以降低电源的总消耗。 • 一个典型的例子是,数码像机在拍摄状态,而又长时间没有按动快门时,镜头自动缩回,来降低耗电。
电源管理器接口 • 电源管理器要实现以下程序间的接口 • 电源管理的设备的驱动程序 • 改变系统电源状态的应用程序 • 电源管理的应用程序 • 电源事件通知的应用程序 • 电源管理器针对上述不同的客户采用不同的编程接口。
电源管理器三个接口 • 驱动程序接口 • 电源管理器与被电源管理电源管理的设备的驱动程序间的接口。 • 应用程序接口 • 电源管理器与电源管理的应用程序间的接口。 • 提醒接口 • 电源管理器与电源事件通知应用程序间的接口。
驱动程序接口(1) • 电源管理器通过两种机制与驱动程序通信 • 电源管理器使用DeviceIoControl()函数向下通知设备驱动程序来决定设备性能并更新设备电源状态。 • 设备通过驱动程序调用DevicePowerNotify()函数向电源管理器请求改变设备电源状态。
驱动程序接口(2) • 为更好地实现电源管理器与驱动程序间的交互,驱动程序要实现 • 响应电源管理器的请求,报告它的设备电源状态。 • 处理电源管理器发送的电源请求。 • 启动后给设备加电。 • 关闭时给设备断电。 • 为设备开启唤醒功能。(设备要有该功能)
应用程序接口 • 应用程序通过API函数来接受电源事件的提醒,获得系统或设备电源状态。 • 一般不要求应用程序通过API函数来设定设备的电源状态。因为会覆盖电源管理器标准的设备电源状态,也会限制高级自管理设备的发挥。
通知接口 • 电源管理器利用通知接口来提醒应用程序和驱动程序得到电源事件。 • 应用程序首先要通过CreatMsgQueue()函数来建立消息队列,然后把消息队列的句柄通过调用RequestPowerNotifications()传给电源管理器。 • 电源管理器把提醒发到消息队列中。 • 这一机制使得应用程序能接收电源相关事件的通知并参与系统电源状态改变的决策。
I/O资源管理 • I/O资源主要是指IRQ和I/O地址。 • 设备管理器提供专门的资源管理器负责对IRQ和I/O地址资源进行管理,同时记录当前系统中的IRQ和I/O地址的占用和可用情况。
I/O资源管理的任务 • I/O资源管理器跟踪设备驱动程序装载前从注册表信息中获得的设备初始化所需的系统资源。 • 这些资源包括IRQ的集合与I/O地址空间。 • 这些资源的初始化状态在注册表中配置 • IRQ状态 [HKEY_LOCAL_MACHINE\Drivers\Resources\IRQ] • I/O地址状态 [HKEY_LOCAL_MACHINE\Drivers\Resources\IO]
I/O资源管理的组件 • devcore 提供核心设备管理器功能。 • iorm 提供 I/O 资源管理器功能。iorm是必需的组件且无法移除。 • Pmif 提供了电源管理器 DLL 入口点的接口。 • Nopmif Nopmif 提供了电源管理器入口点的存根版本。