国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Win CE系統(tǒng)定制及USB攝像頭接口驅(qū)動設(shè)計(jì)

2014-08-06 03:30王一朱景福
關(guān)鍵詞:流式驅(qū)動程序攝像頭

王一,朱景福

(黑龍江八一農(nóng)墾大學(xué)信息技術(shù)學(xué)院,大慶 163319)

隨著數(shù)字圖像處理技術(shù)和電子技術(shù)的不斷發(fā)展,以及現(xiàn)代化農(nóng)業(yè)生產(chǎn)進(jìn)程的不斷推進(jìn),圖像采集和處理[1]系統(tǒng)已經(jīng)在民用、商用、軍用等不同領(lǐng)域得到非常廣泛的應(yīng)用。其主要特點(diǎn)是供電方便,耗能少,并且可以實(shí)際應(yīng)用到國民生產(chǎn)的各個(gè)行業(yè)中去。通過對嵌入式系統(tǒng)智能控制以及數(shù)字圖像實(shí)時(shí)采集的研究,基于Win CE 系統(tǒng)下對USB 攝像頭[2]的驅(qū)動來完成對圖像的只能采集,對現(xiàn)代化農(nóng)業(yè)和其他領(lǐng)域的圖像信息采集具有重要意義。

1 Windows CE 系統(tǒng)的定制

以Windows CE 為操作系統(tǒng)的嵌入式三維信息采集系統(tǒng)的開發(fā)工作包含了移植基于特定硬件平臺的BSP 包,定制Windows CE 操作系統(tǒng),定制Windows CE 應(yīng)用程序和接口開發(fā)等工作。這些內(nèi)容要在硬件系統(tǒng)設(shè)計(jì)完成并且與PC 機(jī)建立交叉編譯環(huán)境后進(jìn)行。主要介紹操作系統(tǒng)的建立以及應(yīng)用軟件的開發(fā)。

1.1 安裝BSP包并定制基于Xscale270處理器的操作系統(tǒng)工程

BSP(Board Support Package)安裝包又稱為主板級支持包,主要包括了啟動程序BootLoader、OEM 適配層程序、設(shè)備驅(qū)動程序Drivers 和相關(guān)配置文件。它是對所設(shè)計(jì)的目標(biāo)設(shè)備電路板的功能抽象。由于硬件配置是較為普遍的配置方式,所以設(shè)計(jì)中使用了基于Intel Xscale PXA270 處理器[3]的BSP 包樣本,并且在此樣本上進(jìn)行BSP 的移植與開發(fā)。具體定制過程如下:

(1)在PC 機(jī)上打開VS2005 交叉開發(fā)環(huán)境。

(2)在VS2005 主菜單中選擇“File”->“New”->“Project”,啟動操作系統(tǒng)定制的第一步。選擇Platform Builder for CE 6.0 工作類型,默認(rèn)選擇OS Design,并且給定制的操作系統(tǒng)命名并選擇存放路徑后,編譯環(huán)境會在Windows CE6.0 的安裝路徑下生成一個(gè)OSDesigns 文件夾來存放操作系統(tǒng)工程。在生成操作系統(tǒng)工程的時(shí)候要注意硬盤上必須有2G 以上的存儲空間。

(3)在接下的定制中沒有選擇功能時(shí),直接按next 按鈕進(jìn)行下一步操作,需要人工選擇BSP,即選擇操作系統(tǒng)工程所基于的硬件平臺。對于基于Intel Xscale PXA270 處理器的系統(tǒng),可以選擇“MINI270-IV:ARMV4I”,然后進(jìn)行下一步的操作。 接下來在特征視圖中定制USB 接口支持。并且選擇實(shí)現(xiàn)SD卡設(shè)備支持,針對于我們所使用的圖像信息的采集,應(yīng)該選擇支持MP3、WMA 格式以及MPEG-4 等格式的播放即可。

經(jīng)過上述步驟的處理,就可以完成關(guān)于系統(tǒng)的定制工作,但是該系統(tǒng)只是在設(shè)計(jì)是完成了對應(yīng)的功能,還需要進(jìn)行編澤,最終生成可以在嵌入式硬件平臺上運(yùn)行的可執(zhí)行系統(tǒng)。

2 USB 攝像頭驅(qū)動設(shè)計(jì)和圖像采集

2.1 攝像頭驅(qū)動開發(fā)策略

對于USB 的驅(qū)動有本機(jī)驅(qū)動程序模型和流接口驅(qū)動程序模型兩種。本機(jī)驅(qū)動模型主要用于集成到平臺上的設(shè)備驅(qū)動,流接口驅(qū)動程序模型則為一般類型的驅(qū)動程序。在Win CE 系統(tǒng)下的USB 總線流式驅(qū)動程序沒有固定格式,要依據(jù)所控制的設(shè)備具體功能實(shí)現(xiàn)驅(qū)動。項(xiàng)目要實(shí)現(xiàn)的是利用USB 接口實(shí)現(xiàn)圖像的采集,所以采用流式接口驅(qū)動模型較為適合。流式接口驅(qū)動程序在形式上表現(xiàn)為動態(tài)鏈接庫DDL。由于動態(tài)鏈接所調(diào)用的函數(shù)代碼并沒有隨應(yīng)用程序拷貝到可執(zhí)行文件中,而僅是加入了調(diào)用函數(shù)的重定位信息,所以只有當(dāng)應(yīng)用程序裝入內(nèi)存并開始運(yùn)行時(shí),才在操作系統(tǒng)的管理下與相應(yīng)DLL 建立鏈接關(guān)系。本項(xiàng)目采用這種方法實(shí)現(xiàn)USB 驅(qū)動程序的設(shè)計(jì),可以有效地節(jié)省嵌入式應(yīng)用環(huán)境下的內(nèi)存空間。

USB 總線作為串行總線,在產(chǎn)生流式數(shù)據(jù)的設(shè)備方面應(yīng)用較多,且以流式接口的驅(qū)動模式開發(fā)更加廣泛和成熟。該驅(qū)動程序位于USB 硬件接口上,屬于控制具體設(shè)備功能的客戶端驅(qū)動程序。在流式接口驅(qū)動程序中,把驅(qū)動函數(shù)作為DLL 的導(dǎo)出函數(shù),而驅(qū)動程序把外設(shè)抽象為一個(gè)文件[4],應(yīng)用程序則使用操作系統(tǒng)提供的API 對外設(shè)進(jìn)行訪問。驅(qū)動程序的體系結(jié)構(gòu)如圖1 所示。

圖1 流接口驅(qū)動體系結(jié)構(gòu)Fig.1 Stream interface of driver architecture

從圖中可以看到對于硬件設(shè)備的訪問分為五個(gè)模塊,分別為硬件層、接口驅(qū)動程序?qū)?、設(shè)備管理器層、FileSys.exe 層以及應(yīng)用程序?qū)?。?yīng)用程序與流式接口驅(qū)動程序可由用戶編程實(shí)現(xiàn),而FileSys.exe 與設(shè)備管理器是由操作系統(tǒng)自帶組件。在Win CE 系統(tǒng)中有相當(dāng)多的驅(qū)動程序都是通過流式接口實(shí)現(xiàn)的,流式接口只定義了抽象的接口,不需要和任何硬件的工作原理和結(jié)構(gòu)相關(guān)。

2.2 USB 攝像頭驅(qū)動的實(shí)現(xiàn)

對攝像頭的USB 接口驅(qū)動采用流接口形式,并且采用動態(tài)鏈接的方式進(jìn)行開發(fā)。使用軟件Platform Builder 5.0 作為開發(fā)環(huán)境對USB 接口程序進(jìn)行設(shè)計(jì)。EVC 驅(qū)動開發(fā)環(huán)境開發(fā)速度快,只需要將調(diào)用的USB 函數(shù)需要的頭文件以及Lib 文件的路徑設(shè)置好即可。

具體開發(fā)首先選擇“Build”菜單下的“Set Active Platform…”,并選擇ARMSYS2410 作為激活的Platform,新建一個(gè)Win CE 系統(tǒng)下的動態(tài)鏈接庫DLL。添加相應(yīng)的USB 驅(qū)動相關(guān)的函數(shù),便可完成USB 驅(qū)動程序的軟件設(shè)計(jì),當(dāng)然,設(shè)計(jì)完成后的驅(qū)動程序要經(jīng)過測試才能確保正確的運(yùn)行。其具體各個(gè)函數(shù)的設(shè)計(jì)如下:

(1)協(xié)議入口函數(shù)實(shí)現(xiàn)

USB 協(xié)議的入口函數(shù)為USBInstallDriver(),其函數(shù)原型為:

BOOL USBInstallDriver(LPCWSTR szDriverLibFile)

該函數(shù)向系統(tǒng)注冊USB 總線設(shè)備驅(qū)動的標(biāo)志符,同時(shí)向系統(tǒng)提供設(shè)備驅(qū)動程序?qū)ο蠼Y(jié)構(gòu)內(nèi)容,以此作為系統(tǒng)匹配驅(qū)動的依據(jù)。實(shí)現(xiàn)向系統(tǒng)注冊設(shè)備相關(guān)信息。設(shè)備的驅(qū)動程序只把USB 總線設(shè)備當(dāng)作一種專有的結(jié)構(gòu)體對待,該結(jié)構(gòu)體中含有關(guān)于設(shè)備廠商、制造商等信息。當(dāng)設(shè)備插入后,系統(tǒng)在取得VIP/PID 后自動在注冊表中尋找是否有這一項(xiàng),如果沒有根據(jù)注冊表或者輸入名稱找到驅(qū)動程序的dll文件后,調(diào)用USBInstallDriver 函數(shù)注冊設(shè)備[5],依據(jù)VIP/PID 設(shè)置注冊表項(xiàng)。當(dāng)下次再插入設(shè)備時(shí),能夠自動相應(yīng)驅(qū)動程序,如果函數(shù)的VIP/PID 和實(shí)際設(shè)備不符,則返回失敗。具體流程圖如2 所示。

圖2 入口函數(shù)流程圖Fig.2 Flow chart of Entry function

(2)硬件連接函數(shù)實(shí)現(xiàn)

當(dāng)USBInstallDriver 完成初始化以后,需要調(diào)用USBDeviceAttach 函數(shù),實(shí)現(xiàn)與硬件函數(shù)的連接。其函數(shù)原型為:

BOOL USBDeviceAttach(USB_HANDLE hDevice,//總線設(shè)備的句柄

LPCUSB_FUNCS lpUsbFuncs, //協(xié)議棧函數(shù)功能表的首指針

LPCUSB_INTERFACE lpInterface, //底層函數(shù)傳遞的設(shè)備接口

LPCWSTR szUniqueDriverId, //驅(qū)動程序標(biāo)志

LPBOOL fAcceptControl, //布爾值變量,接口

LPCUSB_DRIVER_SETTINGS lpDriverSettings,//驅(qū)動程序結(jié)構(gòu)體指針

DWORD dwUnused) //擴(kuò)展用

在完成接口連接以后,本課題的圖像采集設(shè)備產(chǎn)生的數(shù)據(jù)以中斷類型完成到主機(jī)的傳輸。設(shè)備將數(shù)據(jù)存放于設(shè)備端點(diǎn),主機(jī)通過論詢方式獲得設(shè)備數(shù)據(jù)。主機(jī)通過USBDeviceAttach 創(chuàng)建的中斷線程中實(shí)現(xiàn)了三個(gè)動作函數(shù):CAM_Init(),CAM_Open(),CAM_Close()。設(shè)備管理器將含有設(shè)備對象指針的注冊表路徑傳遞給CAM_Init(),就可以從設(shè)備儲存的內(nèi)容找到驅(qū)動的上下文,進(jìn)行數(shù)據(jù)交換。

2.3 圖像采集與顯示模塊調(diào)試

為便于展示,本系統(tǒng)將圖像采集與顯示模塊一起調(diào)試,并將攝像頭的設(shè)備信息輸出到程序所在目錄下的shipintu 文件中。攝像頭采集到的單幀320×240 的圖像為8kbyte 左右,效果如圖3 所示:

圖3 系統(tǒng)采集到的一幀圖像Fig.3 System of frame image

圖4 不同角度的圖像Fig.4 Image of the different view

經(jīng)測試系統(tǒng)從三個(gè)不同角度,三個(gè)攝像頭呈三角形排列,每個(gè)攝像頭都在植株的斜上方60 度左右進(jìn)行每隔5 秒一次圖像采集,下面的四幅圖就是三個(gè)攝像頭從60 度方向采集的圖片,如圖6 所示:

3 結(jié)論

通過BSP 安裝包在VS2005 中對Win CE 系統(tǒng)的定制固化與運(yùn)行,同時(shí)利用USB 驅(qū)動函數(shù)對DLL 數(shù)據(jù)的鏈接及其對硬件連接函數(shù)的實(shí)現(xiàn)完成設(shè)備接口連接。設(shè)備接口連接后可直接通過USB 攝像頭對圖像的信息采集,設(shè)備同時(shí)將數(shù)據(jù)存儲在設(shè)備端點(diǎn),主機(jī)通過USBDeviceAttach 對圖像進(jìn)行處理[6],能夠方便、實(shí)時(shí)和定時(shí)采集圖像,為后續(xù)的研究提供基礎(chǔ)數(shù)據(jù)。

[1]王永清,何波.Linux下基于ARM920T的USB攝像頭圖像采集[J].微計(jì)算機(jī)信息,2007.

[2]王日宏.基于WinCE的串行外設(shè)接口驅(qū)動程序設(shè)計(jì)實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2004(10):22-25.

[3]范文慶,周彬彬,安靖.精通WindowsAPI:函數(shù)、接口、編程實(shí)例[M].北京:人民郵電出版社,2009.

[4]邊海龍,賈少華.USB2.0設(shè)備的設(shè)計(jì)與開發(fā)[M].北京:人民郵電出版社,2004.

[5]周立功.USB2.0與OTG規(guī)范及開發(fā)指南[M].北京:航空航天大學(xué)出版社,2004.

[6]張柏毅,朱景福.基于LXF模型水平集的玉米葉部病斑圖像分割[J].黑龍江八一農(nóng)墾大學(xué)學(xué)報(bào),2012,24(3):71-72.

猜你喜歡
流式驅(qū)動程序攝像頭
浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
攝像頭連接器可提供360°視角圖像
輻流式二沉池的結(jié)構(gòu)優(yōu)化研究
計(jì)算機(jī)硬件設(shè)備驅(qū)動程序分析
微球測速聚類分析的流式液路穩(wěn)定性評估
自調(diào)流式噴管型ICD的設(shè)計(jì)與數(shù)值驗(yàn)證
奔馳360°攝像頭系統(tǒng)介紹
流式在線直播視頻的采集
基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動程序設(shè)計(jì)
網(wǎng)絡(luò)與信息(2009年8期)2009-05-10
侯马市| 汉寿县| 通渭县| 张家口市| 布尔津县| 天峻县| 莱州市| 会理县| 张家川| 德清县| 定陶县| 吴川市| 中宁县| 日土县| 扶风县| 达拉特旗| 黔东| 余庆县| 遂平县| 衡山县| 建瓯市| 林西县| 乃东县| 郓城县| 崇信县| 灵山县| 庄河市| 浦县| 达日县| 临泉县| 连平县| 花莲市| 嘉兴市| 松滋市| 绥德县| 闽侯县| 荆门市| 新野县| 图们市| 滦南县| 神木县|