資源描述:
《基于WinCE的USB設(shè)備流接口驅(qū)動(dòng)研究與實(shí)現(xiàn).pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、儀器儀表用戶doi:10.3969/j.issn.1671-1041.2010.01.035基于WinCE的USB設(shè)備流接口驅(qū)動(dòng)研究與實(shí)現(xiàn)潘磊磊,王勇(四川大學(xué)電子信息學(xué)院成都610065)摘要:本文針對WinCE.net下USB外圍設(shè)備的驅(qū)動(dòng)開發(fā)問題。介紹了進(jìn)行控制,系統(tǒng)通過設(shè)備管理器完成對流接口驅(qū)動(dòng)程序的加該平臺(tái)下的USB總線系統(tǒng)結(jié)構(gòu)和流接口驅(qū)動(dòng)原理。并以具體實(shí)例講述載、卸載等管理,流接口驅(qū)動(dòng)程序通過調(diào)用USBD模塊提供的了流接口驅(qū)動(dòng)的實(shí)現(xiàn)過程。實(shí)驗(yàn)表明。該驅(qū)動(dòng)實(shí)現(xiàn)了USB設(shè)備與操作接口函數(shù)實(shí)現(xiàn)與底
2、層USB設(shè)備的通信。系統(tǒng)間的高效數(shù)據(jù)傳輸。且具有可靠性高。傳輸速度快等優(yōu)點(diǎn)。關(guān)鍵字:WinCE.net;USB:流接口驅(qū)動(dòng)中圖分類號(hào):TP316文獻(xiàn)標(biāo)識(shí)碼:BO引言WinCE.net是微軟公司推出的一種32位、多任務(wù)、多線程的嵌入式操作系統(tǒng),能支持多種嵌入式、移動(dòng)或多媒體系列產(chǎn)品。USB總線因?yàn)槠渌俣瓤?,可靠性高、成本低、即插即用等特點(diǎn),已成為重要的計(jì)算機(jī)接口總線之一,在嵌入式電子儀器中圖2流接口驅(qū)動(dòng)程序工作原理得到了廣泛應(yīng)用。但嵌入式硬件環(huán)境具有多樣性,WinCE.net流接口驅(qū)動(dòng)程序是一種可以定制接
3、口的驅(qū)動(dòng)模型,在用對USB設(shè)備驅(qū)動(dòng)開發(fā)也僅僅是提供了些底層支持,為此,開發(fā)戶一級(jí)表現(xiàn)為動(dòng)態(tài)鏈接庫DLL,用來實(shí)現(xiàn)一組固定的函數(shù)稱為出Wnce.Net下的USB驅(qū)動(dòng)具有實(shí)際的意義和價(jià)值,本文對流接口函數(shù),這些流接口函數(shù)使得應(yīng)用程序可以通過文件系WinCE.net下的USB驅(qū)動(dòng)開發(fā)進(jìn)行了研究,并實(shí)現(xiàn)了基于流接統(tǒng)訪問這些驅(qū)動(dòng)程序,每個(gè)流接口驅(qū)動(dòng)程序必須實(shí)現(xiàn)一組標(biāo)口模型的USB攝像頭驅(qū)動(dòng)。準(zhǔn)的函數(shù),用來完成標(biāo)準(zhǔn)的文件I/O函數(shù)和電源管理函數(shù),這些函數(shù)提供給WinCE.net系統(tǒng)內(nèi)核使用,這些函數(shù)通常被叫做1Wi
4、nCE.net下的USB系統(tǒng)結(jié)構(gòu)流接口驅(qū)動(dòng)程序的DLL接口。本文所使用的流接口函數(shù)如表圖1所示的是WinCE.net下USB系統(tǒng)結(jié)構(gòu)兒,由圖可1所示。其中XXX為設(shè)備文件名前綴,由三個(gè)大寫字母組成,以看出,USB系統(tǒng)軟件由兩層組成:上層為USB設(shè)備客戶端驅(qū)系統(tǒng)使用這三個(gè)字母來識(shí)別與特殊流接口驅(qū)動(dòng)程序相應(yīng)的特動(dòng)程序,下層為USB總線功能的實(shí)現(xiàn),由操作系統(tǒng)提供,包括殊設(shè)備。主機(jī)控制器驅(qū)動(dòng)程序HCD和USB驅(qū)動(dòng)程序USBD兩部分,表1流接口驅(qū)動(dòng)程序所要實(shí)現(xiàn)的DLL接口函數(shù)HCD模塊給USBD模塊提供最底層的支
5、持,USBD實(shí)現(xiàn)高一層的函數(shù)名稱功能描述函數(shù)名稱功能描述接口函數(shù)。這樣上層的客戶端驅(qū)動(dòng)程序并不是直接與硬件通XXX—Close關(guān)閉設(shè)備XXXWHte向設(shè)備寫數(shù)據(jù)信,而是必須利用下層的USB總線的功能實(shí)現(xiàn)層與設(shè)備建立XXX打開設(shè)備進(jìn)行移動(dòng)設(shè)備連接,進(jìn)行配置并進(jìn)行各種功能控制。WinCE.net按照USB總—Open讀寫操作XXX_seek數(shù)據(jù)指針XXX線的協(xié)議提供一些數(shù)據(jù)結(jié)構(gòu)供開發(fā)人員使用,在底層HCD和_Deinit卸載設(shè)備XXXPowerDown使設(shè)備休眠USBD方面系統(tǒng)實(shí)現(xiàn)了一些與USB系統(tǒng)軟件相關(guān)
6、的函數(shù)功能一,XXXInit初始化設(shè)備XXX—PowerUp恢復(fù)設(shè)備電源包括USB傳輸,管道管理,幀管理,設(shè)備特征管理等功能。XXXR上層軟件塑ead讀取設(shè)備XXX—IOContol進(jìn)行控制[丑在WinCE.net下所有USB設(shè)備驅(qū)動(dòng)程序必須在它們的臣圃DLL庫中呈現(xiàn)一定的入口點(diǎn)函數(shù),從而與USBD模塊進(jìn)行適當(dāng)?shù)慕换?,WinCE.net要求USB設(shè)備驅(qū)動(dòng)程序必須提供的入口點(diǎn)IUSB驅(qū)動(dòng)程序USBDl函數(shù)為:l主控制器驅(qū)動(dòng)程序HCDI1)USBDeviceAttach():當(dāng)USB設(shè)備連接到目標(biāo)設(shè)備時(shí),匝
7、USBD模塊就會(huì)調(diào)用此函數(shù),用于始化USB設(shè)備,取得USB設(shè)備信息,配置設(shè)備,并且申請必需的資源。臣圃2)USBInstallDriver():用于創(chuàng)建驅(qū)動(dòng)程序加載所需的注圖1WinCE.net下的USB系統(tǒng)結(jié)構(gòu)冊表信息,例如讀寫超時(shí),設(shè)備名稱等。3)USBUninstaUDriver():用于釋放驅(qū)動(dòng)程序所占用的資2WinCE.net下的流接口驅(qū)動(dòng)原理源,以及刪除注冊表信息等?;赪inCE.net的驅(qū)動(dòng)程序有兩種專用的模型J:本機(jī)上述3個(gè)接口函數(shù)是所有的USB驅(qū)動(dòng)程序必須提供的,驅(qū)動(dòng)程序和流接口驅(qū)動(dòng)
8、程序。本機(jī)驅(qū)動(dòng)程序是為目標(biāo)平臺(tái)上缺一不可。所附帶的設(shè)備如觸摸屏、電池等提供相關(guān)的驅(qū)動(dòng)程序,而流接口驅(qū)動(dòng)程序是為連接到目標(biāo)平臺(tái)上的外圍設(shè)備而設(shè)計(jì)的,對3WinCE.net下流接口驅(qū)動(dòng)實(shí)現(xiàn)大多數(shù)USB外圍設(shè)備來說,適用于采用流接口驅(qū)動(dòng)程序模型下面以實(shí)驗(yàn)室WinCE平臺(tái)的視頻監(jiān)控項(xiàng)目中涉及到的來開發(fā)驅(qū)動(dòng)程序。USB設(shè)備的流接口驅(qū)動(dòng)原理如圖2,流接口USB攝像頭驅(qū)動(dòng)為例,講敘在WinCE.net下流接口驅(qū)動(dòng)的具體驅(qū)動(dòng)程序的流接口函數(shù)被設(shè)計(jì)成與系統(tǒng)文