




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Windows CE設(shè)備驅(qū)動程序南京大學(xué)軟件學(xué)院2005年6月內(nèi)容 Windows CE設(shè)備管理 設(shè)備驅(qū)動模型 驅(qū)動程序的中斷處理 流接口驅(qū)動程序 編寫流接口驅(qū)動程序設(shè)備管理體系結(jié)構(gòu) 設(shè)備管理的分層模式用戶軟件設(shè)備無關(guān)的系統(tǒng)軟件硬件抽象層4個部分:I/O管理;PnP管理;電源管理;管理和支撐的例程庫設(shè)備管理體系結(jié)構(gòu)(續(xù)) I/O管理 隔離應(yīng)用層程序和內(nèi)核,負責(zé)注冊和管理流接口驅(qū)動程序; 定義Windows CE設(shè)備驅(qū)動機制和一個設(shè)備驅(qū)動程序的有序工作框架; 實現(xiàn)I/O資源分配和查詢,提供標(biāo)準(zhǔn)API函數(shù)加載和卸載驅(qū)動程序 PnP管理 自動識別硬件設(shè)備并自動加載相應(yīng)驅(qū)動程序; 需要硬件支持; 電源
2、管理 管理系統(tǒng)能源分配策略,決定系統(tǒng)能耗狀態(tài)變化; 硬件支持 例程庫設(shè)備管理器 Windows CE設(shè)備管理器 設(shè)備管理的核心機構(gòu),負責(zé)跟蹤、維護系統(tǒng)設(shè)備信息并對設(shè)備資源進行調(diào)配 Device.exe 用戶級程序(不是內(nèi)核的一部分?。?設(shè)備管理器的任務(wù) 系統(tǒng)啟動或收到用戶添加外圍設(shè)備的信息時初始化驅(qū)動程序的加載 向內(nèi)核注冊特定的文件名 通過從外圍設(shè)備獲得即插即用標(biāo)識符,或激活一個檢查子程序來發(fā)現(xiàn)可以處理該設(shè)備的驅(qū)動程序,為外圍設(shè)備找到合適的驅(qū)動程序 通過讀寫注冊表加載、跟蹤驅(qū)動程序 不需要設(shè)備時,卸載驅(qū)動程序流接口驅(qū)動程序的加載 加載的三種方法 系統(tǒng)啟動時加載 注冊表項:HKEY_LOCAL_
3、MACHINEdriversRootKey HKEY_LOCAL_MACHINEdriversBuiltIn 設(shè)備管理器自動檢測外圍設(shè)備時加載 例:PC卡 使用ActivateDeviceEx加載 設(shè)備管理器不能自動檢測或加載時使用 例:串口設(shè)備ActivateDeviceEx函數(shù) 接口HANDLE ActivateDeviceEx( LPCWSTR lpzaDevKey, /字符串指針,指向設(shè)備驅(qū)動程序的注冊鍵 LPCVOID lpRegEnts, /REGINI結(jié)構(gòu)數(shù)組頭指針 DWORD cRegEnts, /REGINI結(jié)構(gòu)數(shù)組成員個數(shù) LPVOID lpvParam /通常為NULL)
4、; 返回:當(dāng)前驅(qū)動程序注冊的句柄 通過內(nèi)部函數(shù)StartOneDriver實現(xiàn)ActivateDeviceEx的使用 一個驅(qū)動程序注冊表部分的內(nèi)容HKEY_LOCAL_MACHINEDriversBuiltInPM“Prefix”=“PWR”“Dll”=“pm.dll”“Order”=dword:0“Ioctl”=dword:4“Index”=dword:0“IClass”=multi_sz:”A32942B7-920C-486b-B0E6-92A702A99B35” 加載方法ActivateDeviceEx(“ HKEY_LOCAL_MACHINEDriversBuiltInPM”, );內(nèi)
5、容 Windows CE設(shè)備管理 設(shè)備驅(qū)動模型 驅(qū)動程序的中斷處理 流接口驅(qū)動程序 編寫流接口驅(qū)動程序驅(qū)動程序模型 驅(qū)動程序模型 決定了驅(qū)動程序的軟件接口 不同的驅(qū)動程序模型通過它們支持的軟件接口來區(qū)別,而不是適用的設(shè)備 兩種驅(qū)動程序模型 本機設(shè)備驅(qū)動程序 流接口驅(qū)動程序 其它分法 整體結(jié)構(gòu)(monolithic)/分層結(jié)構(gòu)(layered)本機設(shè)備驅(qū)動程序 本機設(shè)備驅(qū)動程序 適用于集成到WinCE平臺的設(shè)備,如鍵盤、顯示器、PC卡插槽等; GWES的一部分 啟動時加載 驅(qū)動程序樣本 PlatformBuilder 整體和分層 MDD(Model Device Driver), PDD(Pla
6、tform Dependent Driver)流設(shè)備驅(qū)動程序 流設(shè)備驅(qū)動程序 一般類型的設(shè)備驅(qū)動程序,支持幾乎所有可連接在WinCE平臺上的外部設(shè)備(更常用?。?表現(xiàn)為用戶級DLL 實現(xiàn)一組流接口函數(shù),這些函數(shù)使得應(yīng)用程序可以通過文件系統(tǒng)訪問驅(qū)動程序 不支持外部設(shè)備、僅提供服務(wù)的流接口驅(qū)動程序驅(qū)動程序系統(tǒng)結(jié)構(gòu)驅(qū)動程序系統(tǒng)結(jié)構(gòu)(續(xù)) 術(shù)語 DDI: Device Driver Interface DDSI: Device Driver Service Interface MDD的任務(wù): 鏈接PDD層并定義它希望調(diào)用的函數(shù)(DDSI) 把不同的函數(shù)集提供給操作系統(tǒng)(DDI). 負責(zé)與GWES模塊和
7、內(nèi)核通信,包含一些復(fù)雜的操作,例如中斷處理等。內(nèi)容 Windows CE設(shè)備管理 設(shè)備驅(qū)動模型 驅(qū)動程序的中斷處理 流接口驅(qū)動程序 編寫流接口驅(qū)動程序ISR和IST 中斷處理分兩部分 中斷服務(wù)例程(Interrupt Service Routine, ISR) 中斷服務(wù)線程(Interrupt Service Thread, IST) ISR 確定把哪個中斷標(biāo)識返回給核心匯中斷處理器 越短、越快越好 IST 執(zhí)行大多數(shù)中斷處理任務(wù) IST使用InterruptInitialize函數(shù)注冊自己,然后使用WaitForSingleObject等待中斷請求事件 在驅(qū)動程序的XXX_Init里完成IS
8、T中斷處理 要實現(xiàn)IST必須實現(xiàn)兩個過程: IST的中斷必須和一個事件相關(guān)聯(lián) IST必須通過WaitForSingleObject等待該事件的喚醒 具體實現(xiàn)過程(XXX_Init函數(shù)中定義): 創(chuàng)建一個事件(CreateEvent) 得到系統(tǒng)的中斷號(KernelIoControl) 創(chuàng)建一個掛起的IST(CreateThread) 設(shè)置IST優(yōu)先級(CeSetThreadPriority) 注冊中斷(InterruptInitialize) 恢復(fù)IST,IST開始服務(wù)(ResumeThread) 通過WaitForSingleObject等待事件KernelIoControl函數(shù) 接口BOO
9、L KernelControl( DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, LPWORD nOutBufSize, LPDWORD lpBytesReturned); 功能: 完成kernel同上層應(yīng)用程序的通信InitializeInterrupt函數(shù) 接口BOOL InterruptInitialize( DWORD idInt, HANDLE hEvent, LPVOID pvData, DWORD cbData); 功能: 將一個中斷和一個事件相關(guān)聯(lián)內(nèi)容 Windows CE設(shè)備管
10、理 設(shè)備驅(qū)動模型 驅(qū)動程序的中斷處理 流接口驅(qū)動程序 編寫流接口驅(qū)動程序流接口驅(qū)動程序的工作結(jié)構(gòu) 設(shè)備作為文件系統(tǒng)的一個特殊文件相關(guān)的注冊表項 HKEY_LOCAL_MACHINEDrivers鍵 設(shè)備管理程序使用該鍵中的注冊鍵管理驅(qū)動程序 子鍵 Active 包含由設(shè)備管理程序加載的跟蹤當(dāng)前活動的驅(qū)動程序 BuiltIn 包含由WinCE平臺制造商提供的驅(qū)動程序,系統(tǒng)啟動時加載 PCMCIA 包含與PC卡及其流接口驅(qū)動程序有關(guān)的子鍵 Resource 記錄系統(tǒng)中斷和I/O使用情況設(shè)備文件名 格式 前綴 + 索引 + 冒號 例:”COM1:”, “FSD1:” 前綴 三個大寫字母 存儲在驅(qū)動程
11、序?qū)?yīng)注冊表鍵的”Prefix”子鍵中 索引 區(qū)分同一驅(qū)動程序管理的不同設(shè)備 缺省: 19; 可通過“index”的值指明起始索引數(shù)內(nèi)容 Windows CE設(shè)備管理 設(shè)備驅(qū)動模型 驅(qū)動程序的中斷處理 流接口驅(qū)動程序 編寫流接口驅(qū)動程序流接口驅(qū)動程序的入口點函數(shù) 流接口驅(qū)動程序的DLL接口:每個流接口驅(qū)動程序必須實現(xiàn)一組標(biāo)準(zhǔn)的函數(shù),用來完成標(biāo)準(zhǔn)的文件I/O和電源管理,提供給WinCE操作系統(tǒng)的內(nèi)核使用。單訪問和多訪問 問題: 多個應(yīng)用程序能否同時訪問同一個設(shè)備,或者說,驅(qū)動程序是否允許設(shè)備同時被多次打開處理? 使用hOpenContext參數(shù)來實現(xiàn)單訪問和多訪問。 如果是實現(xiàn)單訪問,則第一次對
12、XXX_open的調(diào)用返回一個合法值,保持該值的合法性,后來的調(diào)用都返回空值; 若是實現(xiàn)多訪問,對于XXX_open的調(diào)用每次都返回不同的值。流接口驅(qū)動程序的實現(xiàn)(1) 選擇編寫工具 Embedded Visual C Platform Builder 為了方便調(diào)試,選擇PB,在Windows CE模擬器中實現(xiàn)一個實現(xiàn)簡單存儲功能的流接口驅(qū)動程序流接口驅(qū)動程序的實現(xiàn)(2) 創(chuàng)建內(nèi)核。 打開Platform Builder的“new Platform”的向?qū)Вx擇下一步的“Emulator :X86”選項,然后選擇自定義選項,輸入工程名稱;在CustomDevice中選擇GUI選項;在Appli
13、cation&services development中選擇“ATL”、”C Library&runtime”、”MSMQ”、”MFC”、”SDK for wince”;最后,單擊完成即可。流接口驅(qū)動程序的實現(xiàn)(3) 創(chuàng)建驅(qū)動程序的工程。 選擇“WCE DynamicLink Library”項流接口驅(qū)動程序的實現(xiàn)(4) 創(chuàng)建并編寫驅(qū)動程序源文件:流接口驅(qū)動程序的實現(xiàn)(5) 編寫驅(qū)動程序代碼。 STR_init STR_Deinit STR_Open STR_Close STR_Read STR_Write 導(dǎo)出接口函數(shù) Def文件String.Def流接口驅(qū)動程序的實現(xiàn)(6) 編寫驅(qū)動程序的注冊表部分 兩種方法 直接修改PB下面的reg文件; 自己寫一個注冊表文件通過添加組件的方式添加到內(nèi)核中。流接口驅(qū)動程序的實現(xiàn)(7) 添加驅(qū)動程序到定制的內(nèi)核 有了驅(qū)動程序和注冊表文件,驅(qū)動程序還不能夠正確運行,必須把它添加到內(nèi)核中。 方法:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝設(shè)計師與時尚公司長期合作協(xié)議
- 智能門鎖集成安裝與定期檢修服務(wù)協(xié)議
- 灘涂貝類養(yǎng)殖權(quán)委托經(jīng)營管理全面合作協(xié)議
- 康養(yǎng)中心護理服務(wù)委托專業(yè)運營協(xié)議
- 跨界腦機接口技術(shù)研發(fā)與市場推廣合作協(xié)議
- 留學(xué)中介服務(wù)及海外院校錄取通知書獲取及簽證申請輔導(dǎo)及生活適應(yīng)輔導(dǎo)協(xié)議
- 耕地流轉(zhuǎn)規(guī)?;N植項目委托管理合同
- 班組長現(xiàn)場管理
- 全身人物繪畫美術(shù)課件
- 癱瘓人員護理要點與規(guī)范
- 換熱器檢修施工綜合方案
- 羅氏C8000使用操作說明
- 融資融券策略課件
- 單層鋼結(jié)構(gòu)廠房施工組織設(shè)計方案
- 項目盡職調(diào)查清單模板
- 唯物主義和經(jīng)驗批判主義研讀課件
- 環(huán)境保護和水土保持保證體系框圖
- 眼部健康檢測與分析課件
- 專業(yè)碩士學(xué)位論文修改報告(二)
- 蘇州市建設(shè)工程造價計價解釋
- 煤礦機電設(shè)備春季預(yù)防性檢修計劃
評論
0/150
提交評論