熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁 > 電源與新能源 > 設計應用 > 電池管理及監(jiān)控設計

電池管理及監(jiān)控設計

作者: 時間:2009-03-13 來源:網絡 收藏


3. 驅動模型和驅動初始化過程

Window CE中包含的樣本設備驅動程序分為兩種類型:單片驅動程序(Monolithic device driver)和分層驅動程序(Layered Device driver)。采用分層開發(fā)模式可以降低開發(fā)難度,縮短開發(fā)周期,在驅動開發(fā)中使用分層驅動開發(fā)模式。

分層驅動程序由兩個獨立的層組成:上層是模型設備驅動程序(MDD),下層是依賴平臺的驅動程序(PDD)。設備驅動程序服務器提供的接口(DDSI)是在PDD中實現(xiàn)的函數(shù)集,并由MDD調用。由于微軟提供了所有與MDD模塊相關的源代碼,所以對這部分不用做任何改動,只需將自己的PDD模塊與MDD模塊鏈結成一個公用庫即可[3]。MDD通過IoCTLS調用PDD中的特定函數(shù)來訪問硬件的具體特性。

Windows CE驅動要求的MDD函數(shù)包括:
Init、Deinit、Open、Close、Read、Write、Seek、PowerDown、PowerUp、IOControl。
Windows CE電池驅動要求的PDD函數(shù)包括:
BatteryPDDInitialize、BatteryPDDDeinitialize、BatteryPDDGetStatus、BatteryPDDGetLevels、
BatteryPDDSupportsChangeNotification、BatteryPDDPowerHandler、 BatteryPDDResume。

電池驅動初始化過程

在系統(tǒng)上電自檢成功后,上層調用電池驅動入口函數(shù),進行電池驅動初始化工作:

(1)判斷是否已經進行中斷事件初始化,如果沒有初始化,則進行下面的操作,如果已經進行了一次初始化,則關閉事件句柄。
(2)初始化電池全局變量。
(3)如果中斷事件成功,則調用ResumeThreadProc創(chuàng)建電池線程。在線程的主調函數(shù)中,設置電池線程的優(yōu)先級,然后在循環(huán)中等待中斷事件。
(4)調用PDD層的初始化函數(shù)BatteryPDDInitialize;在PDD層中,為GPIO寄存器和電源寄存器開辟兩段虛擬內存。
(5)初始化AC97的寄存器。
(6)初始化存放電池電量值的環(huán)形緩沖區(qū)。
(7)調用BatteryAPIGetSystemPowerStatusEx2函數(shù)更新電池電量結構體PSYSTEM POWERSTATUS_ EX2中的數(shù)據。

4. BatteryAPIGetSystemPowerStatusEx函數(shù)

BatteryAPIGetSystemPowerStatusEx函數(shù)主要獲取系統(tǒng)電源狀態(tài)值。在執(zhí)行過程中是通過調用BatteryAPIGetSystemPowerStatusEx2函數(shù)來完成的。而BatteryAPIGetSystemPowerStatusEx2函數(shù)調用BatteryPDDGetStatus函數(shù)以獲取電池狀態(tài)信息,BatteryPDDGetStatus函數(shù)通過調用GetMainBatteryVoltage獲取主電池電壓值,通過調用GetPowerDevStatus獲取電池設備狀態(tài),并獲取剩余電量的比例值。下圖3為BatteryAPIGetSystemPowerStatusEx函數(shù)調用關系圖:


5. CalcMainBatteryVoltage獲取電池電壓值



評論


相關推薦

技術專區(qū)

關閉