歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下基於XScale的USB攝像頭圖像采集

Linux下基於XScale的USB攝像頭圖像采集

日期:2017/2/28 16:31:00   编辑:Linux教程

1、引言

  攝像頭分為數字攝像頭和模擬攝像頭兩大類。傳統的模擬攝像頭,獲取圖像信息需要先將視頻采集設備產生的模擬視頻信號經過特定的視頻捕捉卡轉換成數字信號,進而才能進行存儲等處理。數字攝像頭可以直接捕捉影像產生數字信號,然後通過串、並口或者USB接口傳輸到計算機裡。數碼攝像頭的一般結構如圖1 所示。

圖1 數碼攝像頭的結構

  相比於模擬攝像頭,數碼攝像頭具有很大優勢:CMOS圖像傳感器直接產生圖像原始數據;硬件支持標准的JPEG壓縮;主流高速的USB總線設備接口等。

  由於模擬攝像頭的整體成本較高,並且USB接口的傳輸速度遠遠高於串口、並口的速度,所以當前市場熱點主要是USB接口的數碼攝像頭。比較而言,USB攝像頭在一些嵌入式的應用場合具有明顯的優勢。本文介紹了基於XScale的嵌入式Linux下利用USB 攝像頭采集圖像的硬件、軟件設計過程, 最終實現了在目標板上圖像的采集和顯示。

2、系統設計與器件選擇

  基於XScale的USB攝像頭圖像采集硬件平台如圖2所示。

  圖中各個主要模塊基本組成描述如下:

  ① 微處理器(MPU):針對開發視頻終端的需要,並考慮到系統外圍設備的需求情況,本系統采用INTEL公司XScale架構的PXA270 處理器,主頻時鐘可達520MHz。

  ② SDRAM 存儲部分采用兩顆SAMSUNG 公司的K4S561632E-TC75內存,每個大小為32M。

  ③ FLASH 存儲器采用兩顆INTEL 公司的JS28F128 J3D75 NOR Flash,每個大小為16M。

  ④ LCD:采用SAMSUNG 公司的3.5 寸LCD,分辨率為320×240。

圖2 硬件結構原理圖

3、基於XScale 的USB 攝像頭圖像采集的軟件系統

  由於嵌入式Linux 具有成本低、代碼開放、移植性好的特點,其用於嵌入式系統的優勢和發展潛力是不容置疑的。軟件部分的搭建主要依賴於以下三個部分:

  ① Boatloader: 本系統采用u-boot作為引導程序,可以從網站上下載,經過交叉編譯生成映像文件,然後通過JTAG 接口將映像燒寫到目標板,實現引導程序的裝載。

  ② Kernel:本系統采用Linux- 2.6.12.4.tar.bz2 版本的內核。

  ③ 文件系統:考慮到程序運行的速度,本系統采用ramdisk技術制作文件系統映像。

  在Linux 操作系統下有3類主要的設備文件類型:塊設備、字符設備和網絡設備。而在Linux 下要使系統所掛接的外部設備正常工作,必須加載相應的驅動程序。Linux 下對於驅動的加載有兩種方式:一種是直接加載到系統的內核當中去;另一種是以模塊方式進行加載。在Linux 下要采集視頻類數據,需要加載Video4Linux 驅動模塊Videodev.o。然後再加相應的攝像頭驅動程序。在項目開發中,我們把Video4Linux的驅動編譯進內核,而攝像頭驅動以模塊方式加載。我們所使用是采用中芯微公司生產的zc301芯片的攝像頭,所對應的驅動程序可以從網上下載,本項目用的是gspcav1-20070508.tar.gz。所以在系統啟動時必須要通過如下命令來加載所需要的模塊:

#insmod gspca.ko

  通過開源項目spca5xx 可以得到模塊的全部源代碼。上層軟件部分我們參考了servfox軟件的操作過程,使用了spcav4l.c中的函數,經過交叉編譯,在實驗板上實現了實時圖像采集的目的。

4、在Linux 下采集並顯示USB 攝像頭數據

圖3 圖像采集流程圖

  Linux 下攝像頭的驅動程序是以81 為主設備號,在編寫應用程序的時候,要通過打開一個具有該主設備號的設備文件來建立與設備驅動程序的通信,我們所使用的Linux 沒有該文件,所以需要手工創建,並建立其軟連接。我們用到的videodev.o 模塊即為視頻部分的標准Video for Linux (簡稱V4L)。這個標准定義了一套接口,內核、驅動、應用程序以這個接口為標准進行通信。

Copyright © Linux教程網 All Rights Reserved