基于ARM的嵌入式USB圖像采集與顯示
引言
本文引用地址:http://www.ex-cimer.com/article/150064.htm目前市場上大部分的圖像采集與處理系統(tǒng)是基于DSP 芯片的,這種圖像采集與處理系統(tǒng)成本高、功耗高、體積約束等特點并不適用于一些簡單的應(yīng)用。隨著USB 攝像頭的普及和基于ARM 的嵌入式芯片的快速發(fā)展,將二者結(jié)合的便攜性越來越受人們歡迎。本文介紹了一種基于三星S3C2440A 芯片的嵌入式USB 攝像頭圖像采集與顯示方案,該方案具有良好的可移植性和擴展性,并且成本、大小和實時處理都能夠滿足市場需求。
1 系統(tǒng)架構(gòu)
系統(tǒng)通過當前市場上應(yīng)用最廣泛的中芯微公司生產(chǎn)的zc301p 芯片的USB 攝像頭進行圖像采集,然后將圖像信息傳送到ARM 芯片中進行處理,最終通過基于Qt/Embedded 編寫的圖形顯示程序在LCD 上實時顯示。系統(tǒng)的整體架構(gòu)如圖1 所示。
2 視頻圖像采集
系統(tǒng)采用中芯微公司生產(chǎn)的zc301p 芯片的USB 攝像頭作為圖像采集設(shè)備,并介紹了基于Video4Linux 編程協(xié)議進行視頻圖像采集的一般過程。
2.1 USB 攝像頭驅(qū)動
Linux 內(nèi)核能夠很好地支持OHCI(開放式主機控制接口協(xié)議),并且能夠很好地支持包括OV511系列攝像頭在內(nèi)的各種各樣的USB 設(shè)備,但是并不包括zc301pUSB 攝像頭。直到后來2.6.27 版本左右的內(nèi)核中才增加了針對zc301 系列芯片的驅(qū)動,統(tǒng)稱為Linux UVC.本文采用的是Linux2.6.32.2 版本內(nèi)核,只需要對內(nèi)核進行簡單的配置,就可以實現(xiàn)功能了。
在配置菜單選項中,設(shè)備驅(qū)動是最重要的配置項。選擇的配置項如下:
Device Drivers - - - >
Multimedia devices - - - >
Video For Linux
Enable Video For Linux API 1(DEPRECAteD)
Video capture adapters - - - >
V4L USB devices - - - >
USB Video Class (UVC)
UVC input events device support
GSPCA based webcams - - - >
ZC3XXX USB CAMEra Driver
USB ZC0301 [P]Image Processor and Control
Chip support
現(xiàn)在,內(nèi)核被配置成可以支持Video4Linux 的視頻接口,并且加入了支持zc301pUSB 攝像頭的驅(qū)動程序。
2.2 基于Video4Linux 的視頻圖像采集程序設(shè)計
Video4Linux(簡稱V4L)為目前市場常見的電視捕獲卡和并口及USB 口的攝像頭提供統(tǒng)一的編程接口。在Linux 內(nèi)核中它為用戶空間提供統(tǒng)一的編程接口,V4L 分為兩層:底層是音頻和視頻設(shè)備驅(qū)動程序的內(nèi)核;上層為系統(tǒng)提供一些API 接口信息。視頻圖像采集流程如圖2 所示。
?。?)打開視頻設(shè)備。
在Linux 中視頻設(shè)備是被作為設(shè)備文件來執(zhí)行的,本文USB 攝像頭的設(shè)備文件名為/dev/video0.
int my_v4l_open (char*dev,my_v4l_STruct*vd) 函數(shù)用于打開視頻設(shè)備并初始化攝像頭設(shè)備,該函數(shù)調(diào)用open 函數(shù)可以讀設(shè)備文件,成功返回設(shè)備描述符,失敗返回- 1.主要程序代碼如下:
int my_v4l_open(char*dev,my_v4l_struct*vd){
if((vd- >fd=open(vd- >videodevice,O_RDWR))= =- 1){
printf(“ERROR opening V4L interface”);
exit(1);}
……}
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論