田偉 周飛菲
(1.蘭州交通大學(xué) 光電技術(shù)與智能控制教育部重點(diǎn)實(shí)驗(yàn)室,甘肅 蘭州 730070;2.鄭州升達(dá)經(jīng)貿(mào)管理學(xué)院,河南 鄭州 451191)
近些年,但凡涉及到視頻圖像采集的嵌入式系統(tǒng)的研發(fā),視頻圖像采集模塊由于構(gòu)建其硬件成本高,軟件采集方案制定困難等問題使得嵌入式視頻圖像采集成為亟待解決的一個(gè)科研難點(diǎn)。USB數(shù)字?jǐn)z像頭具備低廉的價(jià)格、良好的性能和靈活方便的特點(diǎn),本文將其與嵌入式系統(tǒng)相結(jié)合,配合ARM9內(nèi)核和Windows CE5.0操作平臺(tái),可以方便的得到實(shí)時(shí)視頻圖像,完成對(duì)嵌入式視頻采集器的設(shè)計(jì)。此視頻采集器可以作為一個(gè)實(shí)現(xiàn)視頻采集的功能模塊直接引用到更為復(fù)雜的嵌入式系統(tǒng)中去,為復(fù)雜系統(tǒng)的嵌入式研發(fā)提供方便。
系統(tǒng)平臺(tái)的設(shè)計(jì)以Samsung公司的S3C2410處理器作為系統(tǒng)的主控芯片,S3C2410是基于ARM920T內(nèi)核采用0.18 um的32位RISC嵌入式微處理器,最高主頻可以達(dá)到200 Mhz。處理速度快、功能強(qiáng)大、價(jià)格低廉,能很好的滿足嵌入式Windows CE、Linux等操作系統(tǒng)的需求。同時(shí)配置了64M的SDRAM、64M的NAND FLASH用做存儲(chǔ)設(shè)備,內(nèi)部集成了LCD控制器、SDRAM控制器等眾多功能單元以及豐富的外部接口比如USB HOST、USB DEVICE、串口等接口,為系統(tǒng)硬件平臺(tái)的構(gòu)建提供了強(qiáng)有力的支持。系統(tǒng)的硬件設(shè)計(jì)功能框圖如圖1所示。
圖1 基于S3C2410視頻圖像采集器的系統(tǒng)硬件結(jié)構(gòu)框圖
本系統(tǒng)中的S3C2410微處理器由于內(nèi)部集成了USB HOST,因此可外擴(kuò)一個(gè)USB HOST端口用于連接USB攝像頭來支持其訪問。
系統(tǒng)采用中星微ZC301P芯片USB攝像頭作為視頻圖像采集的工具。中星微攝像頭獲得的視頻數(shù)據(jù)為MJPEG格式,Windows CE系統(tǒng)可將其直接讀出,然后交給應(yīng)用程序來解碼,就可以很方便地得到實(shí)時(shí)視頻圖像,這對(duì)那些要求實(shí)時(shí)性的圖象監(jiān)控的系統(tǒng)是一個(gè)很好的選擇。圖2為中星微ZC301P芯片USB攝像頭結(jié)構(gòu)圖。
由于S3C2410微處理器集成了串口接口,外擴(kuò)了一個(gè)RS-232串口用于和上位機(jī)(這里指PC)連接,將采集到的視頻數(shù)據(jù)在上位機(jī)上實(shí)時(shí)顯示,對(duì)系統(tǒng)所實(shí)現(xiàn)的視頻圖像采集功能起到了檢驗(yàn)的作用。
同樣,借助S3C2410微處理器內(nèi)部集成了眾多的功能和豐富外部接口,可以方便地實(shí)現(xiàn)系統(tǒng)功能的擴(kuò)展。系統(tǒng)可以外接TFT的LCD(也可是觸摸屏),同樣也可實(shí)現(xiàn)上位機(jī)顯示模塊的功能,實(shí)現(xiàn)對(duì)視頻圖像數(shù)據(jù)的實(shí)時(shí)顯示和對(duì)數(shù)據(jù)的管理控制等,這樣可使系統(tǒng)顯得更輕巧靈活,但也會(huì)增加系統(tǒng)開發(fā)的成本,因此系統(tǒng)采用上位機(jī)顯示模塊,對(duì)TFT的LCD在本系統(tǒng)設(shè)計(jì)中暫不采用。
其他功能擴(kuò)展模塊根據(jù)所設(shè)計(jì)的嵌入式系統(tǒng)的所要實(shí)現(xiàn)功能要求而設(shè)定,有助于豐富系統(tǒng)的實(shí)現(xiàn)功能,有利于嵌入式系統(tǒng)的后續(xù)研發(fā)。
圖2 中星微ZC301P系列USB數(shù)字?jǐn)z像頭的基本結(jié)構(gòu)
操作系統(tǒng)選用Microsoft公司的專用嵌入式操作系統(tǒng)Windows CE 5.0版本。Windows CE下外圍設(shè)備的控制及數(shù)據(jù)獲取都要依靠驅(qū)動(dòng)軟件來完成。為了支持不同類型的硬件連接到Windows CE平臺(tái)上,微軟公司提供了具有定制接口的流接口驅(qū)動(dòng)程序模式。
在Windows CE下設(shè)計(jì)USB攝像頭的驅(qū)動(dòng)程序采用的是流接口驅(qū)動(dòng)模式,而流接口驅(qū)動(dòng)程序的設(shè)計(jì)要實(shí)現(xiàn)兩個(gè)模塊:一是實(shí)現(xiàn)三個(gè)入口點(diǎn)函數(shù),即實(shí)現(xiàn)函數(shù)USBInstallDriver()、USBUninstallDriver()和USBDeviceAttach();二是實(shí)現(xiàn)流接口函數(shù)。三個(gè)入口點(diǎn)函數(shù)主要用來實(shí)現(xiàn)對(duì)驅(qū)動(dòng)程序的注冊(cè)、激活與卸載。而流接口函數(shù)用于實(shí)現(xiàn)上層應(yīng)用程序?qū)SB攝像頭進(jìn)行的控制。
在Windows CE下對(duì)中星微ZC301P芯片USB數(shù)字?jǐn)z像頭驅(qū)動(dòng)程序的設(shè)計(jì),要根據(jù)中星微ZC301P芯片USB數(shù)字?jǐn)z像頭的硬件特性來完成。在編寫驅(qū)動(dòng)程序時(shí),應(yīng)該嚴(yán)格地按照三個(gè)入口點(diǎn)函數(shù) USBDeviceAttach(),USBInstallDriver(),USBUninstallDriver()這三個(gè)函數(shù)的原型來實(shí)現(xiàn),否則就不能為設(shè)備管理器所識(shí)別。
在中星微ZC301P芯片USB數(shù)字?jǐn)z像頭驅(qū)動(dòng)程序中,主要通過調(diào)用以下接口函數(shù)用于攝像頭功能的實(shí)現(xiàn)
(1)函數(shù)capInitCamera()用于對(duì)當(dāng)前攝像頭進(jìn)行初始化。
(2)函數(shù)capGetCurrentVersion()用于獲得當(dāng)前驅(qū)動(dòng)程序版本信息。
(3)函數(shù)capGetVideoFormat()用于獲取當(dāng)前視頻格式和尺寸模式。
(4)函數(shù)capSetVideoFormat()用于設(shè)置當(dāng)前視頻格式和尺寸模式。
(5)函數(shù)capGetPicture()用于同時(shí)獲取一幀視頻圖象和JPEG圖片。
(6)函數(shù)capGrabFrame()用于獲取一幀視頻圖象。
(7)函數(shù)capGetLastJpeg()用于獲取一幀JPEG靜態(tài)圖片。
(8)函數(shù)capStartCamera()用于啟動(dòng)攝像頭開始捕獲視頻。
(9)函數(shù)capStopCamera()用于停止攝像頭捕獲視頻。
(10)函數(shù)capCloseCamera()用于關(guān)閉當(dāng)前活動(dòng)的攝像頭。
在完成USB攝像頭驅(qū)動(dòng)程序之后,要實(shí)現(xiàn)Windows CE下的視頻數(shù)據(jù)采集,還要在注冊(cè)表中配置USB數(shù)字?jǐn)z像頭驅(qū)動(dòng)信息。因?yàn)樵赨SB設(shè)備加載時(shí),先檢查加載設(shè)備的相關(guān)信息。而這些設(shè)備的配置信息又都在Windows CE系統(tǒng)注冊(cè)表中。所以,內(nèi)核系統(tǒng)會(huì)先訪問注冊(cè)表以獲得必要的相關(guān)信息。待在注冊(cè)表中配置相關(guān)的USB攝像頭驅(qū)動(dòng)信息完成之后,系統(tǒng)可自動(dòng)加載驅(qū)動(dòng)程序,便可啟動(dòng)USB攝像頭進(jìn)行圖像采集了。視頻數(shù)據(jù)采集流程圖如圖3所示。
圖3 視頻數(shù)據(jù)采集流程
如圖4所示,視頻圖像采集器將采集到的數(shù)據(jù)輸出給上位機(jī)顯示,從而實(shí)現(xiàn)對(duì)設(shè)計(jì)的一種嵌入式視頻圖像采集器的功能檢驗(yàn)。S3C2410外擴(kuò)的RS-232接口,實(shí)現(xiàn)與PC機(jī)串口通信的硬件連接。而 VC++6.0開發(fā)環(huán)境為串口通訊提供了ActiveX控件,名為MSComm控件。MSComm控件讀取數(shù)據(jù)緩沖區(qū)的存儲(chǔ)數(shù)據(jù),并將其顯示。通過上位機(jī)顯示視頻圖像,對(duì)嵌入式視頻圖像采集器的視頻采集功能進(jìn)行檢驗(yàn),經(jīng)檢驗(yàn)鑒定,這種嵌入式視頻圖像采集器能較好的完成預(yù)期的視頻圖像采集效果。
圖4 經(jīng)USB攝像頭采集通過上位機(jī)顯示的視頻圖像
本文詳細(xì)探討了Windows CE 5.0和ARM920T內(nèi)核下圖像采集器的硬件構(gòu)建和驅(qū)動(dòng)程序的設(shè)計(jì)和實(shí)現(xiàn)過程,USB攝像頭引入嵌入式系統(tǒng)中,構(gòu)建一種嵌入式視頻圖像采集器,是一種普適性高,成本低的視頻采集方案,最重要的特點(diǎn)是具有很高的二次開發(fā)性。該方案可被應(yīng)用到嵌入式應(yīng)用開發(fā)中去,如嵌入式的遠(yuǎn)程監(jiān)控的圖像采集端、嵌入式圖像處理等領(lǐng)域。
[1]潘寧,楊丹,宋恩民.Win CE下基于ARM的USB攝像頭圖像采集[J].微計(jì)算機(jī)信息,2008,7(3):272 -273,282.
[2]鄒意然,王永威,趙龍.嵌入式系統(tǒng)中于USB攝像頭的圖像采集[J].微計(jì)算機(jī)信息,2010,12(2):24 -28.
[3]薛園園趙健嶺.USB應(yīng)用開發(fā)實(shí)例詳解[M].北京:人民郵電出版社,2009:4-17.
[4]李媛媛.Visual C++網(wǎng)絡(luò)通信開發(fā)入門與編程實(shí)踐[M].北京:電子工業(yè)出版社,2008:23-40.
[5] 李英.Visual C++編程與項(xiàng)目開發(fā)[M].上海:華東理工出版社,2008.