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

下載本文檔

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

文檔簡介

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

2、和USB通信模型為基礎(chǔ),結(jié)合圖示詳細(xì)介紹了與USB的WDM驅(qū)動開發(fā)相關(guān)的幾個關(guān)鍵數(shù)據(jù)結(jié)構(gòu)及其相互關(guān)系并對開發(fā)過程中的疑難問題進(jìn)行了深人分析,結(jié)合實際系統(tǒng)詳細(xì)地介紹了驅(qū)動開發(fā)的整個流程及其相關(guān)注意事項。系統(tǒng)運(yùn)行結(jié)果表明所開發(fā)的驅(qū)動程序滿足系統(tǒng)需求。關(guān)鍵詞:通用串行總線;WDM;驅(qū)動程序;中圖分類號:TP31l l 文獻(xiàn)標(biāo)識碼:A 文章編號: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)點,是一種具有高性價比的接口,被廣泛用于PC接口開發(fā)。鑒于USB接口的諸多優(yōu)點,筆者開發(fā)了基于USB接口的光刻機(jī)對準(zhǔn)系統(tǒng),克服了傳統(tǒng)對準(zhǔn)系統(tǒng)接口復(fù)雜、成本高、不穩(wěn)定等缺點。要實現(xiàn)成功的開發(fā),驅(qū)動程序的設(shè)計是一個重要環(huán)節(jié)。文中介紹了如何利用DDK開發(fā)基于WDM的USB驅(qū)動程序。收稿日期: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ī)上,當(dāng)用戶模式程序需要讀取設(shè)備數(shù)據(jù)時,先是通過系統(tǒng)服務(wù)接口調(diào)用內(nèi)核模式的服務(wù)例程,內(nèi)核模式的服務(wù)例程首先檢查傳遞給它們的參數(shù),然后創(chuàng)建一個稱為“I(3請求包(IRP)”的數(shù)據(jù)結(jié)構(gòu),并把這個數(shù)據(jù)結(jié)構(gòu)送到指定驅(qū)動程序的人口,執(zhí)行1RP的設(shè)備驅(qū)動程序通過硬件抽象層(HAI )訪問硬件瀆取數(shù)據(jù)。設(shè)備驅(qū)動程序是一個軟件組件,裝入后即成為操作系統(tǒng)內(nèi)核的一部分,為硬件和用戶應(yīng)用程序提供通信橋梁。Windows

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

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

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

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

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

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

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

15、Pd,相關(guān)的各種操作。一個WDM 驅(qū)動程序的基本例程有驅(qū)動程序人口例程、即插即用例程、分發(fā)例程、電源管理例程和卸載例程,而一些復(fù)雜的WDM 驅(qū)動程序還包含中斷服務(wù)例程(ISR)、延時過程調(diào)用(DPC)等例程,一些高級的驅(qū)動程序還將處理IRP串行化、同步、WMI、DMA等問題,因此,開發(fā)WDM 驅(qū)動程序的主要工作就是根據(jù)具體設(shè)備的要求實現(xiàn)這些例程。2 USB驅(qū)動程序設(shè)計一個完整的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ū)動程序占據(jù)了圖4中USB系統(tǒng)軟件方塊的底部,包括主控制器驅(qū)動程序(OPENHCISYS或者UHCDSYS),

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論