中文大香无码蕉字幕_18p少妇下一篇_黄片高清中文字慕一区二区_九九九精品国产10

電池驅動深度解析

鉅大鋰電  |  點擊量:0  |  2018年09月29日  

WindowsCE中包含的樣本設備驅動程序分為兩種類型:單片驅動程序(Monolithicdevicedriver)和分層驅動程序(LayeredDevicedriver)。采用分層開發(fā)模式可以降低開發(fā)難度,縮短開發(fā)周期,在電池驅動開發(fā)中使用分層驅動開發(fā)模式。


WindowsCE電池驅動要求的PDD函數包括:


BatteryPDDInitialize、BatteryPDDDeinitialize、BatteryPDDGetStatus、BatteryPDDGetLevels、BatteryPDDSupportsChangeNotification、BatteryPDDPowerHandler、BatteryPDDResume。


WindowsCE電池驅動要求的MDD函數包括:


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


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


電池驅動初始化過程


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


(1)調用BatteryAPIGetSystemPowerStatusEx2函數更新電池電量結構體PSYSTEMPOWERSTATUS_EX2中的數據。


(2)調用PDD層的初始化函數BatteryPDDInitialize;在PDD層中,為GPIO寄存器和電源管理寄存器開辟兩段虛擬內存。


(3)初始化電池全局變量。


(4)初始化存放電池電量值的環(huán)形緩沖區(qū)。


(5)判斷是否已經進行中斷事件初始化,如果沒有初始化,則進行下面的操作,如果已經進行了一次初始化,則關閉事件句柄。


(6)如果中斷事件成功,則調用ResumeThreadProc創(chuàng)建電池線程。在線程的主調函數中,設置電池線程的優(yōu)先級,然后在循環(huán)中等待中斷事件。


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

相關產品