<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > WinCE的USB Camera流接口驅動(dòng)開(kāi)發(fā)

WinCE的USB Camera流接口驅動(dòng)開(kāi)發(fā)

作者: 時(shí)間:2016-10-08 來(lái)源:網(wǎng)絡(luò ) 收藏

引 言

本文引用地址:http://dyxdggzs.com/article/201610/305953.htm

WinCE5.0是一個(gè)32位、多任務(wù)、多線(xiàn)程的實(shí)時(shí)嵌入式操作系統。USB Camera 以其良好的性能和低廉的價(jià)格得到廣泛的應用,同時(shí)因其靈活、方便的特性,易于集成到嵌入式系統中。

通過(guò)采用USB Camera可以在WinCE5.0下方便地得到實(shí)時(shí)圖像。但是由于嵌入式硬件環(huán)境的多樣性以及WinCE5.0對USB設備驅動(dòng)開(kāi)發(fā)只提供了一些底層支持,攝像頭廠(chǎng)商尚未提供WinCE5.0下USB攝像頭的驅動(dòng),因此開(kāi)發(fā)出WinCE5.0下USB攝像頭驅動(dòng)具有實(shí)際的意義和價(jià)值。本文正是針對這一情況,對WinCE5.0下USB設備驅動(dòng)開(kāi)發(fā)進(jìn)行研究,并設計出基于流接口驅動(dòng)模型的USB攝像頭驅動(dòng)程序?,F在已經(jīng)開(kāi)發(fā)出來(lái)的驅動(dòng)適用于Zc030x PLUS這一系列的攝像頭。Samstmg 2410為實(shí)驗的硬件平臺。

1 WinCE5.0下USB總線(xiàn)驅動(dòng)框架

USB系統由USB主機、一個(gè)或多個(gè)USB設備和物理總線(xiàn)組成。主機上又分兩層:較高的包含USB設備驅動(dòng)程序的軟件層和主機控制器硬件層,也稱(chēng)作“適配層”。主機的主要任務(wù)是控制對USB設備的雙向數據傳輸。物理總線(xiàn)是一組USB電纜,用來(lái)將控制器和外圍設備連接起來(lái)。WinCE5.0的USB系統軟件由兩層組成:USB設備驅動(dòng)程序層和底層的由WinCE5.0實(shí)現的USB函數層。

USB設備驅動(dòng)程序使用USB函數來(lái)建立與它們所控制設備的連接,并對這些設備進(jìn)行配置和通信。較低的USB函數層本身又由兩部分組成——較高的通用串行總線(xiàn)驅動(dòng)程序(USBD)模塊和較低的主控制器驅動(dòng)程序(HCD)模塊。HCD提供了抽象的主機控制器,且對主機控制器所見(jiàn)到的USB系統的數據傳輸進(jìn)行抽象。USBD提供一個(gè)抽象的設備,且對USBD客戶(hù)和USB設備功能部件之間的數據傳輸進(jìn)行抽象。USB設備驅動(dòng)程序使用USBD接口函數與外圍設備進(jìn)行通信。

IHV和USB設備制造商利用USBD提供的函數來(lái)實(shí)現USB設備的驅動(dòng)程序。OEM負責給基于WinCE的平臺提供HCD模塊,這樣相應的硬件才能與USBD模塊進(jìn)行交互。圖1說(shuō)明了與主機的USB硬件和外圍設備相對應的軟件的各個(gè)層。

2 WinCE5.0下流驅動(dòng)模型

基于WinCE5.0平臺的兩種專(zhuān)用的驅動(dòng)模型為:本機設備驅動(dòng)程序和流接口驅動(dòng)程序。本機設備驅動(dòng)程序適合于集成到WinCE 5.0 平臺的設備;而后者則是一般類(lèi)型的設備驅動(dòng)程序,適用于大部分外圍設備,如調制解調器、打印機等。對大多數USB外圍設備來(lái)說(shuō),適用于采用流接口驅動(dòng)程序模型來(lái)開(kāi)發(fā)驅動(dòng)程序。

流接口驅動(dòng)程序是一種可以定制接口的驅動(dòng)模型,一般由設備管理器負責管理。它把設備管理器和應用程序的命令轉換成所控設備的適當動(dòng)作所需信息。流接口驅動(dòng)程序需要實(shí)現一組固定的流接口函數,供給WinCE5.0系統內核使用。

USB設備的流接口驅動(dòng)程序和WinCE5.0系統其他部件間的關(guān)系如圖2所示。流接口驅動(dòng)程序通過(guò)系統提供的文件系統API與應用程序交互;而系統通過(guò)設備管理器完成對流接口驅動(dòng)程序的加載、卸載等管理工作;流接口驅動(dòng)程序通過(guò)調用USBD模塊提供的接口函數實(shí)現與底層USB設備通信。

本文使用的流接口函數方法如表1所列。

USB設備驅動(dòng)程序必須輸出的函數有:

①USBDeviecAttach()。當USB設備連接到計算機上時(shí),USBD模塊就會(huì )調用此函數。這個(gè)函數主要用于初始化USB設備,取得USB設備信息,配置USB設備,并且申請必需的資源。

②USBInstallDriver ()。主要用于創(chuàng )建一個(gè)驅動(dòng)程序加載所需的注冊表信息,例如讀/寫(xiě)超時(shí)、設備名稱(chēng)等。

③USBUninstallDriver ()。主要用于釋放驅動(dòng)程序所占用的資源,以及刪除UsbInstallDriver ()函數創(chuàng )建的注冊表等。

上述3個(gè)函數接口是所有的USB驅動(dòng)程序必須提供的,缺一不可。

另外較為重要的是USB設備驅動(dòng)程序的注冊表配置。一般的USB設備驅動(dòng)程序的注冊表配置在[HKEY_LOCAL_MACHINEDriversUSBLoadClients口]下,每個(gè)驅動(dòng)程序的子鍵都有Group 1_IDGroup2_IDGroup3_IDDriverName 格式,設備的子鍵由供應商、設備類(lèi)和協(xié)議信息通過(guò)下劃線(xiàn)組成。表2列出了允許的組合。

以本實(shí)驗所采用的USB Camera為例,該USB Cam-era的供應廠(chǎng)商ID為0X046d,設備ID為0x08a2,那么它的加載注冊表應該寫(xiě)為:

需要注意的是,注冊表的構成都是以十進(jìn)制數值來(lái)標識的,也要注意十進(jìn)制和十六進(jìn)制之間數的轉換。

3 WinCE5.0下USB攝像頭驅動(dòng)程序

實(shí)驗使用的USB Camera是中星微公司的301芯片組的Zc030x,它的Vid/Pid為0x046d、0x08a2。由于實(shí)時(shí)圖像數據傳送量比較大,很多USB Camera產(chǎn)品在圖像傳輸之前已進(jìn)行了數據壓縮處理,如果不知道解碼算法,是沒(méi)有辦法在WinCE上獲得圖像的。在開(kāi)發(fā)的時(shí)候主要使用SnoopyPro,它是一款可以分析USB通信數據的軟件,輔助進(jìn)行Zc030x的驅動(dòng)開(kāi)發(fā)工作,最后成功開(kāi)發(fā)出Zc030x在WinCE5.0下的驅動(dòng)程序。下面結合USBCamera驅動(dòng)開(kāi)發(fā)說(shuō)明驅動(dòng)中的數據流向和必要的函數使用。首先是具體的注冊表信息:

其中,hDevice是由系統提供的當前外設的句柄,通過(guò)它可以獲取外設的信息,如VID、PID等;UsbFuncs是系統提供的指向USBD函數的函數指針,通過(guò)它可以調用USBD函數,如GetlsochResult、IssuelsochTransfer等;AcceptControl指針指向的bool值需要我們確定,如果可控,令其為T(mén)RUE,否則為FALSE。

在這個(gè)函數里面,要做的工作包括確定外設是否可控,分配和填寫(xiě)設備的上下文內容,調用ActivateDevjce()函數在“DriversUSBClientDriversCamera_Class”鍵值中注冊分配到的設備上下文的指針(其中Camera_Class是對USB Camera的命名),同時(shí)ActivateDevice在注冊表[HKEY_LOCAL_MACHINEDriversActiveN]中登記設備上下文的指針,其中N為整數,它是系統自動(dòng)分配給此驅動(dòng)的數字。系統在調用ActivateDevice()過(guò)程中,又會(huì )自動(dòng)調用CAM_Init函數。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>