移动终端产品电池管理降低功耗设计方案

来源:元器件交易网 作者:—— 时间:2012-01-11 17:14

  3. 电池驱动模型和驱动初始化过程

  Windows CE中包含的样本设备驱动程序分为两种类型:单片驱动程序(Monolithic device driver)和分层驱动程序(Layered Device driver)。采用分层开发模式可以降低开发难度,缩短开发周期,在电池驱动开发中使用分层驱动开发模式。

  分层驱动程序由两个独立的层组成:上层是模型设备驱动程序(MDD),下层是依赖平台的驱动程序(PDD)。设备驱动程序服务器提供的接口(DDSI)是在PDD中实现的函数集,并由MDD调用。由于微软提供了所有与MDD模块相关的源代码,所以对这部分不用做任何改动,只需将自己的PDD模块与MDD模块链结成一个公用库即可[3]。MDD通过IoCTLS调用PDD中的特定函数来访问硬件的具体特性。

  Windows CE电池驱动要求的MDD函数包括:

  Init、Deinit、Open、Close、Read、Write、Seek、PowerDown、PowerUp、IOControl。

  Windows CE电池驱动要求的PDD函数包括:

  BatteryPDDInitialize、BatteryPDDDeinitialize、BatteryPDDGetStatus、BatteryPDDGetLevels、

  BatteryPDDSupportsChangeNotification、BatteryPDDPowerHandler、 BatteryPDDResume。

  电池驱动初始化过程

  在系统上电自检成功后,上层调用电池驱动入口函数,进行电池驱动初始化工作:

  (1)判断是否已经进行中断事件初始化,如果没有初始化,则进行下面的操作,如果已经进行了一次初始化,则关闭事件句柄。

  (2)初始化电池全局变量。

  (3)如果中断事件成功,则调用ResumeThreadProc创建电池线程。在线程的主调函数中,设置电池线程的优先级,然后在循环中等待中断事件。

  (4)调用PDD层的初始化函数BatteryPDDInitialize;在PDD层中,为GPIO寄存器和电源管理寄存器开辟两段虚拟内存。

  (5)初始化AC97的寄存器。

  (6)初始化存放电池电量值的环形缓冲区。

  (7)调用BatteryAPIGetSystemPowerStatusEx2函数更新电池电量结构体PSYSTEM POWERSTATUS_ EX2中的数据。

  4. BatteryAPIGetSystemPowerStatusEx函数

  BatteryAPIGetSystemPowerStatusEx函数主要获取系统电源状态值。在执行过程中是通过调用BatteryAPIGetSystemPowerStatusEx2函数来完成的。而BatteryAPIGetSystemPowerStatusEx2函数调用 BatteryPDDGetStatus函数以获取电池状态信息,BatteryPDDGetStatus函数通过调用GetMainBatteryVoltage获取主电池电压值,通过调用GetPowerDevStatus获取电池设备状态,并获取剩余电量的比例值。下图3为BatteryAPIGetSystemPowerStatusEx函数调用关系图:

  图3 BatteryAPIGetSystemPowerStatusEx函数调用关系图

相关文章

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子