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