USB總線數(shù)據(jù)采集設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)
摘要:結(jié)合基于USB總線的數(shù)據(jù)采集設(shè)備,介紹了WDM驅(qū)動(dòng)程序的工作原理,設(shè)計(jì)原則和設(shè)計(jì)方法,并給出一個(gè)實(shí)現(xiàn)塊傳輸?shù)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/USB">USB設(shè)備驅(qū)動(dòng)程序例程,詳細(xì)的介紹了該例程的各個(gè)功能模塊。該例程性能穩(wěn)定,傳輸可靠,已應(yīng)用于數(shù)據(jù)采集設(shè)備中。對(duì)系統(tǒng)的性能進(jìn)行測(cè)試的結(jié)果表明:數(shù)據(jù)的傳輸過程達(dá)到了設(shè)計(jì)的要求。驅(qū)動(dòng)程序設(shè)計(jì)過程的詳細(xì)介紹對(duì)USB專用設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)和開發(fā)具有良好的參考應(yīng)用價(jià)值。
關(guān)鍵詞:USB2.0協(xié)議;數(shù)據(jù)采集;WDM驅(qū)動(dòng)程序
0 引言
隨著計(jì)算機(jī)應(yīng)用技術(shù)的發(fā)展,虛擬儀器、自動(dòng)測(cè)試系統(tǒng)、自動(dòng)控制等領(lǐng)域,均越來越多的應(yīng)用計(jì)算機(jī)來進(jìn)行數(shù)據(jù)處理。USB總線標(biāo)準(zhǔn)的提出,解決了計(jì)算機(jī)傳統(tǒng)I/O接口通用性差、不易擴(kuò)展、易受計(jì)算機(jī)插槽數(shù)量、地址和中斷資源的限制等缺點(diǎn),使計(jì)算機(jī)在測(cè)控領(lǐng)域的重要性與日俱增,也使USB總線在數(shù)采測(cè)控業(yè)界備受關(guān)注,并在各種測(cè)控設(shè)備中迅速發(fā)展,但專用的USB設(shè)備不能像鼠標(biāo)、鍵盤等HID類設(shè)備一樣使用Windows系統(tǒng)提供的標(biāo)準(zhǔn)驅(qū)動(dòng)程序,而是需要開發(fā)專用的驅(qū)動(dòng)程序。開發(fā)驅(qū)動(dòng)程序與開發(fā)Windows應(yīng)用程序完全不同,驅(qū)動(dòng)程序以系統(tǒng)的內(nèi)核模式運(yùn)行,任何細(xì)小的錯(cuò)誤都可能引起操作系統(tǒng)的崩潰。因此,專用設(shè)備驅(qū)動(dòng)程序開發(fā)的復(fù)雜性,成為了USB總線在該領(lǐng)域發(fā)展的瓶頸。隨著軍事裝備自動(dòng)化、數(shù)字化、智能化程度越來越高,一種更為簡(jiǎn)便的驅(qū)動(dòng)程序開發(fā)方法的探討十分有益。基于軍用電站檢測(cè)儀中USB數(shù)據(jù)采集模塊的開發(fā),介紹了USB專用設(shè)備驅(qū)動(dòng)程序開發(fā)的一般過程。
1 WDM驅(qū)動(dòng)程序概述
WDM(windows driver mode)是微軟推出的一種驅(qū)動(dòng)程序模型,以簡(jiǎn)化驅(qū)動(dòng)程序的開發(fā)。它采用分層驅(qū)動(dòng)的方式,即在應(yīng)用程序和物理設(shè)備之間存在著幾個(gè)不同層次的驅(qū)動(dòng)程序,且各層驅(qū)動(dòng)程序有不同的優(yōu)先級(jí),每個(gè)驅(qū)動(dòng)程序?qū)?yīng)一層,不同層上的驅(qū)動(dòng)程序可以相互調(diào)用。USB系統(tǒng)的組成如圖1所示:應(yīng)用程序通過API函數(shù)調(diào)用Win32系統(tǒng)子函數(shù),驅(qū)動(dòng)程序分為設(shè)備驅(qū)動(dòng)程序,總線驅(qū)動(dòng)程序(USBD)和主控制器驅(qū)動(dòng)程序(HCD)三層,它們均運(yùn)行在系統(tǒng)的內(nèi)核模式。設(shè)備驅(qū)動(dòng)程序使用IRP(I/ORequest Packet)通過總線驅(qū)動(dòng)程序提供的軟件接口(USBDI,USB Driver Interface)向總線驅(qū)動(dòng)程序發(fā)出I/O請(qǐng)求,并根據(jù)數(shù)據(jù)傳輸方向提供一個(gè)或空或滿的內(nèi)存緩沖區(qū);USBD負(fù)責(zé)管理數(shù)據(jù)的總線傳輸,也有設(shè)備驅(qū)動(dòng)程序與其他軟件接口的功能單元進(jìn)行通信,沒有直接調(diào)用USBD,但總有一個(gè)更低層的驅(qū)動(dòng)軟件發(fā)生USBD調(diào)用。主控制器驅(qū)動(dòng)程序處在USB系統(tǒng)軟件的最底層,直接與主控制器的硬件通信,它提供了只有總線驅(qū)動(dòng)程序才能訪問的主控制器驅(qū)動(dòng)程序軟件接口HCDI(Host Control Driver Interface)。其中,總線驅(qū)動(dòng)程序和主控制器驅(qū)動(dòng)程序是系統(tǒng)的底層驅(qū)動(dòng)程序。設(shè)備驅(qū)動(dòng)程序是針對(duì)某一USB設(shè)備的專用驅(qū)動(dòng)程序。
評(píng)論