• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      王一,朱景福

      (黑龍江八一農(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ū)動(dòng)來完成對圖像的只能采集,對現(xiàn)代化農(nóng)業(yè)和其他領(lǐng)域的圖像信息采集具有重要意義。

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

      以Windows CE 為操作系統(tǒng)的嵌入式三維信息采集系統(tǒng)的開發(fā)工作包含了移植基于特定硬件平臺(tái)的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)安裝包又稱為主板級支持包,主要包括了啟動(dòng)程序BootLoader、OEM 適配層程序、設(shè)備驅(qū)動(dòng)程序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”,啟動(dòng)操作系統(tǒng)定制的第一步。選擇Platform Builder for CE 6.0 工作類型,默認(rèn)選擇OS Design,并且給定制的操作系統(tǒng)命名并選擇存放路徑后,編譯環(huán)境會(huì)在Windows CE6.0 的安裝路徑下生成一個(gè)OSDesigns 文件夾來存放操作系統(tǒng)工程。在生成操作系統(tǒng)工程的時(shí)候要注意硬盤上必須有2G 以上的存儲(chǔ)空間。

      (3)在接下的定制中沒有選擇功能時(shí),直接按next 按鈕進(jìn)行下一步操作,需要人工選擇BSP,即選擇操作系統(tǒng)工程所基于的硬件平臺(tái)。對于基于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)行編澤,最終生成可以在嵌入式硬件平臺(tái)上運(yùn)行的可執(zhí)行系統(tǒng)。

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

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

      對于USB 的驅(qū)動(dòng)有本機(jī)驅(qū)動(dòng)程序模型和流接口驅(qū)動(dòng)程序模型兩種。本機(jī)驅(qū)動(dòng)模型主要用于集成到平臺(tái)上的設(shè)備驅(qū)動(dòng),流接口驅(qū)動(dòng)程序模型則為一般類型的驅(qū)動(dòng)程序。在Win CE 系統(tǒng)下的USB 總線流式驅(qū)動(dòng)程序沒有固定格式,要依據(jù)所控制的設(shè)備具體功能實(shí)現(xiàn)驅(qū)動(dòng)。項(xiàng)目要實(shí)現(xiàn)的是利用USB 接口實(shí)現(xiàn)圖像的采集,所以采用流式接口驅(qū)動(dòng)模型較為適合。流式接口驅(qū)動(dòng)程序在形式上表現(xiàn)為動(dòng)態(tài)鏈接庫DDL。由于動(dòng)態(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ū)動(dòng)程序的設(shè)計(jì),可以有效地節(jié)省嵌入式應(yīng)用環(huán)境下的內(nèi)存空間。

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

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

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

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

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

      具體開發(fā)首先選擇“Build”菜單下的“Set Active Platform…”,并選擇ARMSYS2410 作為激活的Platform,新建一個(gè)Win CE 系統(tǒng)下的動(dòng)態(tài)鏈接庫DLL。添加相應(yīng)的USB 驅(qū)動(dòng)相關(guān)的函數(shù),便可完成USB 驅(qū)動(dòng)程序的軟件設(shè)計(jì),當(dāng)然,設(shè)計(jì)完成后的驅(qū)動(dòng)程序要經(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ū)動(dòng)的標(biāo)志符,同時(shí)向系統(tǒng)提供設(shè)備驅(qū)動(dòng)程序?qū)ο蠼Y(jié)構(gòu)內(nèi)容,以此作為系統(tǒng)匹配驅(qū)動(dòng)的依據(jù)。實(shí)現(xiàn)向系統(tǒng)注冊設(shè)備相關(guān)信息。設(shè)備的驅(qū)動(dòng)程序只把USB 總線設(shè)備當(dāng)作一種專有的結(jié)構(gòu)體對待,該結(jié)構(gòu)體中含有關(guān)于設(shè)備廠商、制造商等信息。當(dāng)設(shè)備插入后,系統(tǒng)在取得VIP/PID 后自動(dòng)在注冊表中尋找是否有這一項(xiàng),如果沒有根據(jù)注冊表或者輸入名稱找到驅(qū)動(dòng)程序的dll文件后,調(diào)用USBInstallDriver 函數(shù)注冊設(shè)備[5],依據(jù)VIP/PID 設(shè)置注冊表項(xiàng)。當(dāng)下次再插入設(shè)備時(shí),能夠自動(dòng)相應(yīng)驅(qū)動(dòng)程序,如果函數(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ū)動(dòng)程序標(biāo)志

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

      LPCUSB_DRIVER_SETTINGS lpDriverSettings,//驅(qū)動(dòng)程序結(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è)動(dòng)作函數(shù):CAM_Init(),CAM_Open(),CAM_Close()。設(shè)備管理器將含有設(shè)備對象指針的注冊表路徑傳遞給CAM_Init(),就可以從設(shè)備儲(chǔ)存的內(nèi)容找到驅(qū)動(dòng)的上下文,進(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ū)動(dòng)函數(shù)對DLL 數(shù)據(jù)的鏈接及其對硬件連接函數(shù)的實(shí)現(xiàn)完成設(shè)備接口連接。設(shè)備接口連接后可直接通過USB 攝像頭對圖像的信息采集,設(shè)備同時(shí)將數(shù)據(jù)存儲(chǔ)在設(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ū)動(dòng)程序設(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ū)動(dòng)程序攝像頭
      浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
      攝像頭連接器可提供360°視角圖像
      輻流式二沉池的結(jié)構(gòu)優(yōu)化研究
      微球測速聚類分析的流式液路穩(wěn)定性評估
      自調(diào)流式噴管型ICD的設(shè)計(jì)與數(shù)值驗(yàn)證
      奔馳360°攝像頭系統(tǒng)介紹
      流式在線直播視頻的采集
      河南科技(2015年8期)2015-03-11 16:23:41
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      安裝攝像頭后為何無法使用耳麥?等
      类乌齐县| 恩平市| 新龙县| 明水县| 屯门区| 汉川市| 武隆县| 顺平县| 阆中市| 堆龙德庆县| 桦甸市| 高邮市| 襄樊市| 汶上县| 将乐县| 灵璧县| 讷河市| 化德县| 巴里| 武山县| 九寨沟县| 罗定市| 江山市| 北辰区| 平塘县| 平度市| 应用必备| 元朗区| 望谟县| 确山县| 屯留县| 青铜峡市| 汕头市| 宁德市| 金川县| 本溪市| 天水市| 上蔡县| 柳州市| 通州区| 吉安市|