基于DDK的WDM驅(qū)動(dòng)_第1頁
基于DDK的WDM驅(qū)動(dòng)_第2頁
基于DDK的WDM驅(qū)動(dòng)_第3頁
基于DDK的WDM驅(qū)動(dòng)_第4頁
基于DDK的WDM驅(qū)動(dòng)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第1:_;醛第3tjj2008 jF 3計(jì)算機(jī)技術(shù)與發(fā)展(1(1M l,U_r¨ t -Et ¨ (” (,;、 NI)I)EVEI1 1EN_I,t111 LI3M: 1· 2l11)S基于DDK的USB接口WDM 驅(qū)動(dòng)開發(fā)鄧玖根 ,一,張正榮 ,胡 松 ,唐小萍(1中國科學(xué)院光電技術(shù)研究所,四川成都610209;2中國科學(xué)院研究生院,北京l00039)摘要:USB以其諸多優(yōu)點(diǎn)已被廣泛用于pC接口設(shè)計(jì),由此開發(fā)了基于USB的光刻機(jī)對(duì)準(zhǔn)系統(tǒng)。與傳統(tǒng)對(duì)準(zhǔn)系統(tǒng)相比,新系統(tǒng)的穩(wěn)定性大幅提高,同時(shí)成本顯著降低。但USB設(shè)備驅(qū)動(dòng)程序的開發(fā)是系統(tǒng)的關(guān)鍵和難點(diǎn)。以WDM 的結(jié)構(gòu)

2、和USB通信模型為基礎(chǔ),結(jié)合圖示詳細(xì)介紹了與USB的WDM驅(qū)動(dòng)開發(fā)相關(guān)的幾個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)及其相互關(guān)系并對(duì)開發(fā)過程中的疑難問題進(jìn)行了深人分析,結(jié)合實(shí)際系統(tǒng)詳細(xì)地介紹了驅(qū)動(dòng)開發(fā)的整個(gè)流程及其相關(guān)注意事項(xiàng)。系統(tǒng)運(yùn)行結(jié)果表明所開發(fā)的驅(qū)動(dòng)程序滿足系統(tǒng)需求。關(guān)鍵詞:通用串行總線;WDM;驅(qū)動(dòng)程序;中圖分類號(hào):TP31l l 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673629X(2008)03001304USBS W DM Driver Development Based on DDKDENG Jiugen ,-,ZHANG Zhengrong ,HU Song ,TANG Xiao-ping(1Institute

3、of Optics and Electronics,the Chinese Academy of Sciences,Chengdu 610209,China;2Graduate School of the Chinese Academy of Sciences,Beijing 100039,China)Abstract:Because of USBs many merits。its widely used in PCs interface design;therefore developed a new alignment system onUSB Compared wi出tmditbnal

4、alignment systems,the new ones stability improves a lot。and its cost reduces drasticallyBut the drivers development ofUsB deviceWaSthekey and nod usofthewhole systemIntroducesmekeydata structures relatedtoUsBsWDMdriver in detail based on the framework of WDM and USBs corresponding model and combined

5、 with figures,and analyes solIle problemsin the development process in depthFinally,introduces the flow of driver development and other related noticesNew system s practicalel1lonnance sho ws that the driver developed meets requirem entKey WItI :USB;WDM;driver;C )KO 引 言USB(Universal Serial Bus,通用串行總

6、線)是由INTEl 、微軟、IBM 等公司為解決傳統(tǒng)總線不足而推出的一種新型總線標(biāo)準(zhǔn)。目前,USB20最高傳輸速率已經(jīng)達(dá)到480Mbs,可以滿足包括視頻設(shè)備在內(nèi)的多種外部設(shè)備數(shù)據(jù)傳輸?shù)男枨?。此外,USB總線還具有安裝方便、支持熱拔插、易于擴(kuò)展等優(yōu)點(diǎn),是一種具有高性價(jià)比的接口,被廣泛用于PC接口開發(fā)。鑒于USB接口的諸多優(yōu)點(diǎn),筆者開發(fā)了基于USB接口的光刻機(jī)對(duì)準(zhǔn)系統(tǒng),克服了傳統(tǒng)對(duì)準(zhǔn)系統(tǒng)接口復(fù)雜、成本高、不穩(wěn)定等缺點(diǎn)。要實(shí)現(xiàn)成功的開發(fā),驅(qū)動(dòng)程序的設(shè)計(jì)是一個(gè)重要環(huán)節(jié)。文中介紹了如何利用DDK開發(fā)基于WDM的USB驅(qū)動(dòng)程序。收稿日期:2007一O6一l6作者簡介:鄧玖根(1983一),男,四川樂LU人

7、,碩I 研究生,從m 微fu子沒彳;系統(tǒng)軟件研究;張Jf=榮,商_1 ,研究辦 為光劃帆軟件系統(tǒng)。1 WDM 介紹在Window000系統(tǒng)中,軟件要么執(zhí)行在用戶模式,要么執(zhí)行在內(nèi)核模式。在x86計(jì)算機(jī)上,當(dāng)用戶模式程序需要讀取設(shè)備數(shù)據(jù)時(shí),先是通過系統(tǒng)服務(wù)接口調(diào)用內(nèi)核模式的服務(wù)例程,內(nèi)核模式的服務(wù)例程首先檢查傳遞給它們的參數(shù),然后創(chuàng)建一個(gè)稱為“I(3請(qǐng)求包(IRP)”的數(shù)據(jù)結(jié)構(gòu),并把這個(gè)數(shù)據(jù)結(jié)構(gòu)送到指定驅(qū)動(dòng)程序的人口,執(zhí)行1RP的設(shè)備驅(qū)動(dòng)程序通過硬件抽象層(HAI )訪問硬件瀆取數(shù)據(jù)。設(shè)備驅(qū)動(dòng)程序是一個(gè)軟件組件,裝入后即成為操作系統(tǒng)內(nèi)核的一部分,為硬件和用戶應(yīng)用程序提供通信橋梁。Windows

8、2000系統(tǒng)可以使用多種驅(qū)動(dòng)程序。包括虛擬設(shè)備驅(qū)動(dòng)程序和內(nèi)核模式驅(qū)動(dòng)程序,Pt P驅(qū)動(dòng)程序是一種遵循Windows 2000即插即用協(xié)議的內(nèi)核模式驅(qū)動(dòng)程序,而WI)M驅(qū)動(dòng)程序又是一種PnP驅(qū)動(dòng)程序。wI)M(Windows ire1 M(×e1)是Micrcoft公司推· l4· 汁算饑技術(shù)與發(fā)展 第18卷出的新型驅(qū)動(dòng)程序模型,它增加了對(duì)即插即用(PnP)、電源管理(Power Management)、WMI的支持。在一個(gè)WDM驅(qū)動(dòng)程序模型中。每個(gè)硬件至少有兩個(gè)驅(qū)動(dòng)程序:一個(gè)是功能驅(qū)動(dòng)程序,負(fù)責(zé)初始化IO操作、處理IO操作完成時(shí)所帶來的中斷事件并為用戶提供一種設(shè)備

9、適合的控制方式;另一個(gè)是總線驅(qū)動(dòng)程序,負(fù)責(zé)管理硬件與計(jì)算機(jī)的連接。WDM驅(qū)動(dòng)程序模型使用了如圖1所示的層次結(jié)構(gòu) 2,一驅(qū)動(dòng)程序?qū)ο?X 設(shè)備對(duì)象 一指?jìng)€(gè)向?qū)衮?qū)于動(dòng)程同DeviceObject Driver0bject序的下一個(gè)DriverExtensio“ DriverExtension NextDevice 設(shè)備對(duì)象AddDevice CurrentIrp 、當(dāng)前IRPFlagsDriverStartIoDeviceExtensio“ 。 由用戶定義分發(fā)例程DriverUnload 的設(shè)備擴(kuò)展DeviceType MajorFunction旦總線驅(qū)動(dòng)程序檢查到新硬件存在,則響應(yīng)PnP管理器的

10、IRPMNQUERYDEVICERE 汀IONS請(qǐng)求并創(chuàng)建一個(gè)PDO,之后PnP管理器參照注冊(cè)表中的信息載入與這個(gè)PDO相關(guān)的過濾器和功能驅(qū)動(dòng)程序,驅(qū)動(dòng)程序調(diào)用AddDevice例程構(gòu)建相應(yīng)設(shè)備對(duì)象。AddDevice例程通常是調(diào)用IoCreateDevice函數(shù)創(chuàng)建設(shè)備對(duì)象,并用IoAttachDeviceToDeviceStack函數(shù)把設(shè)備對(duì)象連接到當(dāng)前設(shè)備堆棧的頂部,完成如圖1所示層次結(jié)構(gòu)的構(gòu)造。之后,PnP管理器向該設(shè)備的驅(qū)動(dòng)程序發(fā)出副功能碼為IRPMNSTARTDEVICE的IRP。為其分配資源并啟動(dòng)設(shè)備。之后,該設(shè)備將進(jìn)入啟動(dòng)狀態(tài),可以開始通信。圖1 WDM 中設(shè)備對(duì)象和驅(qū)動(dòng)程序的

11、層次結(jié)構(gòu)Windows 2000中,IO管理器使用驅(qū)動(dòng)程序?qū)ο髞泶碓O(shè)備驅(qū)動(dòng)程序,當(dāng)操作系統(tǒng)加載一個(gè)驅(qū)動(dòng)程序時(shí),IO管理器負(fù)責(zé)為其建立一個(gè)驅(qū)動(dòng)程序?qū)ο螅?qū)動(dòng)程序棧中的每個(gè)驅(qū)動(dòng)程序都要為其控制的設(shè)備建立一個(gè)設(shè)備對(duì)象(如圖1所示)。驅(qū)動(dòng)程序?qū)ο蠛驮O(shè)備對(duì)象是WDM驅(qū)動(dòng)程序中兩種非常重要的數(shù)據(jù)結(jié)構(gòu),它們結(jié)構(gòu)形式和兩者之間的關(guān)系如圖2所示。圖2 驅(qū)動(dòng)程序?qū)ο笈c設(shè)備對(duì)象的結(jié)構(gòu)以及它們之間的關(guān)系如前所述,Windows2000操作系統(tǒng)使甩IO請(qǐng)求包(IRP)的數(shù)據(jù)結(jié)構(gòu)與內(nèi)核模式驅(qū)動(dòng)程序通信,所以IRP在WDM驅(qū)動(dòng)程序中也起著至關(guān)重要的作用,因此要掌握WDM 驅(qū)動(dòng)開發(fā),還必須正確理解和使用IRP。IRP數(shù)據(jù)

12、結(jié)構(gòu)定義于wdmhl_3 J文件中,其重要的域有MdlAddress、Associatedlrp、IoStatus、CurrentLocation、PendingRetumed、CancelRoutine以及Tail。其中,CurrentLocation為非透明域,它和TaiIOverlayCurrentStackLocation(PIOSTACKLOCATION)都沒有公開給驅(qū)動(dòng)程序使用。CurrentLocation為當(dāng)前IO堆棧單元的索引而CurrentStackLocation就是指向它的指針。當(dāng)某個(gè)“實(shí)體”創(chuàng)建IRP時(shí),同時(shí)還創(chuàng)建了一個(gè)與之關(guān)聯(lián)的IO堆棧(IOSTACKLOCATIO

13、N)結(jié)構(gòu)數(shù)組。1O堆棧中重要的域有MajorFunction、MinorFunction、Parameters、DeviceObject、CompletionRoutine等。MajorFunction域?yàn)镮RP的主功能碼,與驅(qū)動(dòng)程序?qū)ο笾蠱ajorFunction表的某個(gè)派遣函數(shù)指針相對(duì)應(yīng),而MinorFunction是該IRP的副功能碼。De一、,iceObject是與該堆棧單元對(duì)應(yīng)的設(shè)備對(duì)象的地址,由IcaI1Driver函數(shù)填寫。因此,可以清晰地給出WDM驅(qū)動(dòng)程序模型中非常重要而又難于理解的IRP、IO堆棧、設(shè)備對(duì)象以及驅(qū)動(dòng)程序?qū)ο笾g的關(guān)系,如圖3所示(圖中只給出重要的域)。至此,已

14、經(jīng)對(duì)一個(gè)IRP IO堆棧 與驅(qū)動(dòng)程序?qū)ο笾蠱ajorFunction表的某個(gè)派遺函數(shù) TaiOverlayCuren MDaevjoirceF0unbcjteciot n 指設(shè)針備相對(duì)象應(yīng) IltStackLocationCompletionRoutine 完成例程 lI圖3 IRP、IO堆棧、設(shè)備對(duì)象以及驅(qū)動(dòng)程序?qū)ο笾g的關(guān)系第3期 鄧玖恨等:基-r JI)I)K的USB接 WI)M 驅(qū)動(dòng)開發(fā) · l5 ·WI)M驅(qū)動(dòng)程序的陔心數(shù)據(jù)結(jié)卡句有了完整的了解。一個(gè)完整的WI)M驅(qū)動(dòng)程序就像一個(gè)包含許多例程的容器,當(dāng)操作系統(tǒng)遇到一個(gè)IRI:,時(shí),它就凋用驅(qū)動(dòng)程序中的例程來執(zhí)行該I

15、Pd,相關(guān)的各種操作。一個(gè)WDM 驅(qū)動(dòng)程序的基本例程有驅(qū)動(dòng)程序人口例程、即插即用例程、分發(fā)例程、電源管理例程和卸載例程,而一些復(fù)雜的WDM 驅(qū)動(dòng)程序還包含中斷服務(wù)例程(ISR)、延時(shí)過程調(diào)用(DPC)等例程,一些高級(jí)的驅(qū)動(dòng)程序還將處理IRP串行化、同步、WMI、DMA等問題,因此,開發(fā)WDM 驅(qū)動(dòng)程序的主要工作就是根據(jù)具體設(shè)備的要求實(shí)現(xiàn)這些例程。2 USB驅(qū)動(dòng)程序設(shè)計(jì)一個(gè)完整的USB系統(tǒng)包括主機(jī)和USB設(shè)備,其多層次的通信模型如圖4所示_4 J,其中,USB主控制器負(fù)責(zé)處理主機(jī)與設(shè)備之間電氣和協(xié)議層的互連,USB系統(tǒng)還使用USB主控制器來管理主機(jī)和USB設(shè)備之間的數(shù)據(jù)傳輸,而應(yīng)用軟件不能直接訪問USB設(shè)備硬件。微軟提供的一組驅(qū)動(dòng)程序占據(jù)了圖4中USB系統(tǒng)軟件方塊的底部,包括主控制器驅(qū)動(dòng)程序(OPENHCISYS或者UHCDSYS),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論