




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、經(jīng)驗交流 EXPERIENCE EXCHANGEW i n d o w s CE 和設(shè) 備 驅(qū)動開 發(fā)的 區(qū)別解放軍信息工程大學(xué)Windows CE是一個32位、多任務(wù)、多線程的嵌入式 操作系統(tǒng)是微軟專門為(S息設(shè)笛、移動應(yīng)用、消費類電子 產(chǎn)品、嵌入式應(yīng)用等非PC領(lǐng)域設(shè)計的操作系統(tǒng)產(chǎn)品,在 外觀和使用的感覺上十分接近桌面Windows系統(tǒng)。它使 用平面內(nèi)存模式尋址可以同時運行多個程序并支持一個 程序中的多個線程并且非常精煉貝有很小的內(nèi)存要求o 與基于PC的操作系統(tǒng)不同.Windows CE不需要標(biāo)準(zhǔn)硬 件仮而支持各種各樣的CPU(如X86、PbwerPC、ARM、 MIPS 等).通過 OEM
2、 適配層(OEM adaptation layer)可以 把Windows CE適配到任何硬件平臺。Windows CE是微 軟Windows操作系統(tǒng)家族的一個成員.支持用干Windows 20(X)/ XP和Windows 98等卓面Windows操作系統(tǒng) 的Win32 API的一個于集。由干它不是桌面Windows操 作系統(tǒng)的一部分或縮減版本便得開發(fā)Windows CE的驅(qū) 動程序與開發(fā)卓面Windows的驅(qū)動程序有所不同。本文 將著重討論這些區(qū)別以便廣大熟悉桌面Windows驅(qū)動 程序開發(fā)的程序員能快速掌握嵌入式操作系統(tǒng)Windows CE驅(qū)動程序的開發(fā)方法。在桌面Windows 系統(tǒng),
3、以支持Windows 2000/ XP 的 WDM 驅(qū)動 模型為例。WDM體系 結(jié)構(gòu)實行分戻處理即 設(shè)笛驅(qū)動被分成了若 干層一商層驅(qū)動 程序、中間戻驅(qū)動程 序、最低層驅(qū)動程序. 如圖1所示。在 Windows CE驅(qū)動中按驅(qū)動的結(jié) 1 ''DM構(gòu)可以分為兩種類型一層式設(shè)備驅(qū)動程序和整體 式驅(qū)動程序如圖2所示。分戻式設(shè)備驅(qū)動程序由上 戻和下戻兩部分代碼組成。上戻的程序叫做模型設(shè)缶 驅(qū)動程序(MDD) 下長的程序則叫做平臺相關(guān)的驅(qū)動 程序: PDD) o整體式驅(qū)動程序的源代碼由中斷服務(wù)線 程代碼和針對平臺的代碼組成 同桌面Windows設(shè)備驅(qū)動 結(jié)構(gòu)模型相比.Windows CE設(shè)
4、 缶驅(qū)動相對簡單一些。正如圖 1和圖2所示兩種操作系統(tǒng)的 設(shè)備驅(qū)動雖然存在許多相似的 地方,都采用了模塊、分戻的設(shè) 計方法.但是還存在許多不同的 地方。在Windows CE操作系 統(tǒng)中分戻的驅(qū)動程序并不適用 于所用的驅(qū)動,尤其是將驅(qū)動程 序分為兩層將矣導(dǎo)致在驅(qū)動程序操作時附加的功能調(diào)用. 這無疑矣降低驅(qū)動程序的效率。對于時間或性能關(guān)鍵的 實時操作整體式驅(qū)動程序?qū)⒁痈m合。在桌面Windows系統(tǒng)中,驅(qū)動各戻通信之間便用一 種稱為I/O諳求包(1RP)的數(shù)據(jù)結(jié)構(gòu)進行通信。影響到 設(shè)缶的每個操作都便用I/O請求包采用戻次結(jié)構(gòu)可以便 "O諳求過程更加明了。I/O管理器發(fā)送IRP來請求驅(qū)
5、動程序的處理通常IRP由分層的驅(qū)動程序棧來處理商 戻的驅(qū)動程序把諳求劃分成更簡單的請求并傳遞給下層 驅(qū)動程序。1RP首先被送到設(shè)笛堆棧的最上戻驅(qū)動程序. 然后逐漸過濾到下層的驅(qū)動程序。每一層驅(qū)動程序都可 以決定如何處理1RP。而Windows CE驅(qū)動各層之間的 通信沒有采用1RP通信機制,而是通過接口函數(shù)調(diào)用實 現(xiàn)的。設(shè)備驅(qū)動程序接口(Device Driver Interface .DDI) 是在4DD戻中實現(xiàn)的函數(shù)集系統(tǒng)中的GWES模塊通過 這個接口調(diào)用設(shè)笛驅(qū)動程序;設(shè)笛驅(qū)動程序眼務(wù)器接口 (Device Driver Service Provider Interface, DDSI)
6、是在 PDD層中實現(xiàn)的西數(shù)集并由MDD調(diào)用。GWESI DDI* 數(shù) | | DDI* 數(shù) |設(shè)備昭動住序IMDD 俱PDOy72羊弭恥入石統(tǒng)翊2009年第12期弧片設(shè)備 驅(qū)動程序2 Windows CEadv . cn(廣告專用)1994-2011 China Academic Journal Electronic Publishing House. All rights reserved. Iittp:/2簡單地說軀動程序是一些例程 的集合它們被動地存在等待主機系 統(tǒng)軟件來調(diào)用或激活它們。在Win dows系統(tǒng)中驅(qū)動具體的驅(qū)動程序有 所不同其包含的例程也不同但其主 要例程是相同的。圖3描述
7、一個 Windows驅(qū)動的基本溢程。以下從幾個方面闡述Windows CE和桌面Windows設(shè)笛驅(qū)動組成的 不同。2. 1在桌面Windows和Windows CE兩個系統(tǒng)中的驅(qū)動 程序都含有初始化模塊該模塊主要功能是完成驅(qū)動程序 的初始化及卸栽。在桌面Windows系統(tǒng)的初始化模塊 中.包括每一個設(shè)備驅(qū)動程序都有的一個初始化入口 點 一river Entry例程每次設(shè)備驅(qū)動程序啟動時該例 程被系統(tǒng)自動調(diào)用。其呈重要的功能是設(shè)亶驅(qū)動程序?qū)?應(yīng)于VO請求的主功能代碼(MajorFunction)的回調(diào)例 程。Driver Entry例程如下:Driver Entry (IN PDRIVER.O
8、BJ ECT DriverObject.)/驪動程序入口DriverObject- DriverExtension-<J AddDevice = AddDevice:DriverObject-S' Driver Unload = DriverU nload; DriverObject- MiyorFunction( IRP_MJ_CREATE J = Create; DriverObjcct-i MajorFunction IRP_MJ_CLOSE = Close: DriverObject-8 MajorFunctionIRP_MJ_READ = Read: DriverObj
9、ect- MajorFunction IRP.MJ.WRITE = Write: DriverObject-1 * MajorFunction IRP _ MJ _ DEV ICE _ CONTROL = ioControl;DriverObject-i MajorFunction! IRP_MJ_PNPJ = Pnp :DriverObject-S MajorFunction IRP. MJ - POWER = Processft)werlrp;其中.AddDevice例程是在系統(tǒng)添加一個設(shè)笛時被 PnP管理器調(diào)用的其主要工作是創(chuàng)建并初始化設(shè)缶對 象:DriverUnload例程在系統(tǒng)卸栽硬
10、件時便用由I/O管 理器調(diào)用釋放所有資源。初始化模塊中還包括Create 和兩個例程.這是Win32程序獲得和釋放設(shè)笛旬柄 的唯一途徑。與桌面Windows設(shè)缶驅(qū)動程序開發(fā)相比.WindowsCE i殳笛驅(qū)動程序開發(fā)的主要難點是對于不同類型設(shè)& 的驅(qū)動程序架構(gòu)是不一樣的。以流接口驅(qū)動程序為例. Windows CE設(shè)備驅(qū)動程序是用戶模式動態(tài)鏈接庫 (DLL).其入口點在不同的惜況有一些細(xì)微的差別.主要 入口點包括 XXX_ Init、XXX_Deinil、XXX_Open、XXX_ Close、XXX_ iOControI、XXX_ Read、XXX_ Seek、XXX_ PbwerU
11、p和XXX_PowerDown .在實際開發(fā)中接口名稱中 的XXX三個字母由設(shè)笛驅(qū)動的設(shè)備文件名前綴代替。 2.2設(shè)缶驅(qū)動程序構(gòu)造成功之后將它與設(shè)笛一同安裝進 系統(tǒng)以便用戶可以對設(shè)備進行適當(dāng)?shù)目刂萍霸L問。在卓 面Windows和Windows CE兩個系統(tǒng)中便用Win32 API實 現(xiàn)硬件的訪問。曹先調(diào)用Create Hie創(chuàng)建一個設(shè)笛的連接. 獲得該設(shè)缶的句柄(Handle) 然后根據(jù)需要調(diào)用RcadFilc、 WriteHle xDesicebG)ntroI等函數(shù)對設(shè)備進行讀寫或者其他 1/ O控制操作最后調(diào)用Close Handle關(guān)閉設(shè)備。在桌面Windows系統(tǒng)中.當(dāng)用戶需要訪問某設(shè)
12、備時. 必須首先取出指定設(shè)缶全局唯一標(biāo)識符(GUID)的設(shè)備信 息集枚舉設(shè)備實例的接口數(shù)據(jù).從中獲得設(shè)笛的符號鏈 接名然后調(diào)用CreatHle創(chuàng)建設(shè)缶,并獲得設(shè)備句柄,而 在驅(qū)動程序內(nèi)部通過處理IRP響應(yīng)來自Win32應(yīng)用程序 對 IRP MJ CREATE、IRP MJ READ JRP MJ WRITE 和1RP_MJ_OCTL等諳求。IRP由IRP首部結(jié)構(gòu)和一系 列的棧單元組成每個棧單元是一個1O_STACK_LOCA- TION結(jié)構(gòu)。驅(qū)動程序僅需知道當(dāng)前I/O棧單元和IRP 首部結(jié)構(gòu)中的信息就可以對IRP進行處理。驅(qū)動程序處 理憲IRP后 使用InCnmpleteRequesl函數(shù)通知
13、1/ O管理 器可以通過其參數(shù)設(shè)定狀態(tài)碼和返回的字節(jié)數(shù)。在 Windows CE系統(tǒng)中,應(yīng)用程序需要了無中斷處理線程中 數(shù)據(jù)的輸入輸出完成情況以便及時地處理。這就需要建 立應(yīng)用程序和設(shè)缶驅(qū)動程序的同步通倍。2.3在Endows設(shè)笛驅(qū)動中.為了提供Win32程序可用的 名字必須為每個設(shè)備創(chuàng)建符號鏈接。在卓面Windows和 Endows CE兩個系統(tǒng)中都可以采用一個明確的符號鏈接 名。一個具體設(shè)笛名稱是由設(shè)缶名前綴和設(shè)缶名索引組成 的即3個大寫字母、1位數(shù)字和冒號組成。另外在桌面 Windows系統(tǒng)中還可以采用設(shè)備接口為設(shè)備創(chuàng)建符號鏈 接。每個設(shè)備接口由一個128位全局唯一標(biāo)識符(GU1D:.
14、標(biāo)志。把設(shè)缶注冊為一個待定的設(shè)備接口就創(chuàng)建了一個符 號鏈接。用戶態(tài)設(shè)備可以取得擁有此GUID的設(shè)缶。2.4在Windows系統(tǒng)中支持兩種基本模式的驅(qū)動程序類1994-2011 China Academic Journal Electronic Publishing House. All rights reserved. Iittp:/1994-2011 China Academic Journal Electronic Publishing House. All rights reserved. Iittp:/paper mesnet. *投稿專用i2009年第12期Microcontroll
15、ers & Embedded Systems731994-2011 China Academic Journal Electronic Publishing House. All rights reserved. Iittp:/經(jīng)驗交流 EXPERIENCE EXCHANGE1994-2011 China Academic Journal Electronic Publishing House. All rights reserved. Iittp:/1994-2011 China Academic Journal Electronic Publishing House. All ri
16、ghts reserved. Iittp:/型即用戶模式(user mode)和內(nèi)核模式(kernel mode),不 同的模式允許不同層次的內(nèi)存存取和系統(tǒng)資源的分配。 內(nèi)核模式驅(qū)動程序則由運行干內(nèi)核模式的系統(tǒng)級代碼組 成.它們沒有系統(tǒng)資源存取的限制.可以執(zhí)行任何有效的 CPU指令被用來直接控制硬件。用戶模式驅(qū)動程序是 按用戶模式運行的系統(tǒng)級代碼.它們不能便用直接的硬件 I/O指令來訪問硬件。桌面Windows系統(tǒng)一般要求設(shè)缶驅(qū)動運行在內(nèi)核模 式下。內(nèi)核模式提供設(shè)缶資源的直接訪問沒有固定的用 戶模式的輔助操作。Windows CE系統(tǒng)一般要求設(shè)備驅(qū)動運行在用戶模 式下。這種運行在用戶模式下的設(shè)
17、笛驅(qū)動程序有許多 優(yōu)點最明顯的優(yōu)點是當(dāng)i殳笛驅(qū)動開發(fā)有錯誤動作時. 內(nèi)核被有效地保護起來了 .因此內(nèi)核被驅(qū)動程序破壞 或者可能導(dǎo)致不能重新啟動內(nèi)核的潛在目標(biāo)存儲錯 誤以及其他意想不到的災(zāi)難等發(fā)生的可能性就明顯 地減少。2.5桌面Windows的驅(qū)動安裝通過1NF文件。INF文件 是一個文本文件含有安裝一個WDM驅(qū)動設(shè)備程序需要 的所有必需的信息包括要童制的文件列表、要創(chuàng)建的注 冊表項等。驅(qū)動根據(jù)1NF文件中的指令安裝.驅(qū)動程序 可執(zhí)行文件被貞制到正確的位亶通常是Windows Syr tem32 Drivers目錄.然后創(chuàng)建各種注冊表項。Windows CE和桌面Windows之間的最大區(qū)別是
18、.Windows CE不 支持.sys和.inf文件。Windows CE設(shè)S驅(qū)動編譯成動態(tài) 庫將馳動的動態(tài)庫文件直接拷入Windows'目錄.然后創(chuàng) 建各種注冊表頊即可。這就減少了 Windows CE加栽程 序的負(fù)雜性和大小。3在卓面Windows系統(tǒng)中,驅(qū)動程序的開發(fā)采用兩種 方式。一類是Microsoft公司提供的 Windows DDK( Device Driver Kit) 由于DDK基干匯編語盲的編程方式和 內(nèi)核模式的調(diào)用對沒有深厚的OS原理和編程水平的人 員來說任務(wù)相當(dāng)艱巨。另一類是NuMega公司提供的 DriverStudio .它是一個大的開發(fā)工具包.包含Vloo
19、lsD、 Soft ICE Driver Works 等開發(fā)工具。利用 DriverStudio 開發(fā)WDM驅(qū)動程序.可以大大減輕開發(fā)人員的工作量、 縮短開發(fā)周期以及降低開發(fā)驅(qū)動程序的難度。Windows CE開發(fā)平臺的開發(fā)者、獨立硬件供應(yīng)商 (IHVS)和應(yīng)用程序開發(fā)者都矣從事基于Windows CE平 臺的設(shè)缶驅(qū)動程序開發(fā)。對于不同的開發(fā)者.微軟為 Windows CE 提供了 2 種開發(fā)工具:Platform Builder 和 Embedded Visual Tools o Platform Builder 是一個定制基 干Windows CE操作系統(tǒng)的嵌入式平臺的集成開發(fā)環(huán)境 (ID
20、E).為創(chuàng)建Windows CE嵌入式系統(tǒng)提供了全部相關(guān) 工具范圍從用來開發(fā)基于Windows CE的應(yīng)用程序和設(shè) 備驅(qū)動程序到用來創(chuàng)建操作系統(tǒng)各種自定義版本。而 Embedded Visual Tools主要用于上層應(yīng)用程序、驅(qū)動的 開發(fā)功能類似于桌面Windows平臺上的開發(fā)工具VC、 VB等。這個工具的核心是Embedded Visual C * * .它具 有和Visual C + 6.0基本相同的待性.包括對MFC、 ATL以及COM/ DCOM的支持、應(yīng)用程序向?qū)А⒕幾g調(diào)試 等多種功能。理解Windows CE與卓面Windows設(shè)備驅(qū)動程序開 發(fā)的區(qū)別有助于廣大熟悉桌面Windo
21、ws設(shè)缶驅(qū)動程序 開發(fā)的程序員快速掌握嵌入式操作系統(tǒng)Windows CE的 設(shè)笛呃動程序開發(fā)。近幾年來佰息家電、掌上電腦、電視 機頂盒等基于Windows CE操作系統(tǒng)的設(shè)備巳變得越來 越普及而Windows CE上的設(shè)備驅(qū)動程序還比較少因 此Windows CE設(shè)缶驅(qū)動程序具有不少潛力和市場。希 望本文對打算開發(fā)Windows CE設(shè)笛驅(qū)動程序的人們有 所幫助。XI微軟公Microsoft Windows CE設(shè)備驅(qū)動程序開發(fā)指南 IM 北京:北京希望電子出版社.1999.21陳向群等.Windows CE系統(tǒng)分析及實驗敦程| M).北京:機 械工業(yè)出版社.2003.3 周毓林.Window
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 香港科技大學(xué)(廣州)《耳鼻咽喉頭頸外科》2023-2024學(xué)年第一學(xué)期期末試卷
- 佳木斯職業(yè)學(xué)院《文獻學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 燕京理工學(xué)院《web技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年陜西省恒口高級中學(xué)高三下學(xué)期綜合模擬考試物理試題含解析
- 永城職業(yè)學(xué)院《安全工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江省杭州十四中2025年高三測試(四)物理試題含解析
- 江西服裝學(xué)院《先進功能材料雙語》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧波幼兒師范高等??茖W(xué)?!稜I養(yǎng)與食品衛(wèi)生學(xué)2》2023-2024學(xué)年第二學(xué)期期末試卷
- 新疆體育職業(yè)技術(shù)學(xué)院《影視攝影與剪輯技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 供應(yīng)商設(shè)備預(yù)驗收人員分工
- 幼兒園獲獎公開課:大班語言繪本《好消息壞消息》課件
- 宇樹科技在機器人領(lǐng)域的技術(shù)突破與應(yīng)用
- 《高危作業(yè)培訓(xùn)》課件
- 中央2025年中國科協(xié)所屬單位招聘應(yīng)屆生27人筆試歷年參考題庫附帶答案詳解
- 《義務(wù)教育語文課程標(biāo)準(zhǔn)》2022年修訂版原版
- (精選word)3v3籃球比賽記錄表
- 消費者行為學(xué)課件
- 【小升初】部編版2022-2023學(xué)年四川省綿陽市語文升學(xué)分班考真題專項模擬試卷(04 現(xiàn)代文閱讀)含解析
- 第九-現(xiàn)場勘查課件
- 挖掘機配件名稱大全
- 煙花爆竹危險固體廢棄物綜合利用建設(shè)項目可行性研究報告-甲乙丙資信
評論
0/150
提交評論