O 概述
隨著嵌入式技術的迅猛發(fā)展和Linux在信息行業(yè)中的廣泛應用,視頻采集與傳輸系統作為遠程視頻監(jiān)控、可視電話會議和工業(yè)自動控制領域的一項核心技術,近年來已經得到了飛速的發(fā)展。本文在基于嵌入式Linux系統平臺上,采用USB攝像頭捕捉視頻信號,利用V4L內核應用編程接口函數,實現了視頻連續(xù)幀圖像的采集,并保存成文件的形式利用無線傳輸方式傳輸給接收端。這里著重討論視頻采集發(fā)送端的實現。
1 系統組成
1.1 統的硬件構成
本系統包括發(fā)送端和接收端2部分,兩部分均采用Samsung公司生產的S3C2410處理器做硬件開發(fā)平臺。S3C2410在片上集成了豐富的組件:分開的16 KB指令Cache和16 KB數據Cache、用于虛擬存儲器管理的MMU、支持STN和TFT的LCD控制器、NAND Flash啟動裝載器、具有片選邏輯和SDRAM控制器的系統管理器、3通道UART、4通道DMA、4通道PWM定時器、I/O口、RTC、8通道10位ADC和觸摸屏接口、I2C總線接口、I2S總線接口、USB主設備、USB從設備、SD卡和MMC卡接口、2通道的SPI以及PLL時鐘發(fā)生器,還采用了AMBA(advanced micrcocontroller bus architecture)新型總線結構。
應用S3C2410處理器平臺搭建的發(fā)送端硬件結構如圖1所示:包括S3C2410處理器、RS232接口、JTAG接口、RJ-45接口、SDRMA、Flash、電源、通過USB口連接的視頻采集模塊和通過USB接口連接的視頻發(fā)射模塊。RS232串口用于人機交互及低速數據的收發(fā),應用電平轉換芯片MAX-323進行串口電平和TTL/CMOS電平的轉換。JTAG接口用于下載Bootloader。RJ-45接口用于和以太網連接,下載操作系統Linux內核、根文件系統和應用軟件。SDRMA用于系統的數據存儲器、Flash用于系統的程序存儲器。
應用S3C2410處理器平臺搭建的接收端硬件電路如圖2所示:與發(fā)送終端相比,多了SD卡和LCD顯示器。SD卡主要用來存儲數據,LCD顯示器主要用來顯示視頻圖像。
1.2 系統軟件設計
系統的軟件構成分為引導驅動程序、操作系統、文件系統和應用程序4部分,如圖3所示。引導驅動程序在系統啟動時進行內存重映射,將保存在Flash中的操作系統和應用程序重新映射到SDRAM中。Linux的內核版本為LinIix2.6。文件系統是Yaffs,它包括模塊、配置文件和庫等。系統的應用程序建立在嵌入式Linux內核、攝像頭驅動和文件系統之上。
[!--empirenews.page--]
2 視頻采集的具體實現
USB攝像頭連接簡單、使用靈活、價格低廉且具有良好的性能,因此,得到了廣泛的應用。Linux內核包含了多種USB攝像頭驅動,最常用的有基于OV5ll及其兼容芯片。OV511芯片主要包括CAMERA接口、DRMA接口、ISO FIFO接口和OmniCE以及USB控制器等部分。本設計使用的是在低端市場占有率較高的中芯微公司生產的ZC030x系列攝像頭芯片。Linux系統中的視頻子系統’Vide04linux為視頻應用程序提供了一套統一的API,視頻應用程序通過調用API即可操作各種不同的視頻捕獲設備,包括電視卡、視頻捕捉卡和USB攝像頭等。本設計的具體實現過程如下所述:
2.1 攝像頭驅動的實現
1)配置Vide04linux內核
在終端使用make menuconfig命令打開S3C24lOlinux內核編譯的main menu窗口,并進入“multimedia device———>”菜單選項,然后將Video for Linux配置為模塊,即:
Device driver———>
Multimedia devices———>
<*>Video for linux
2)配置OV511驅動
返回主菜單,在進入“USB support———>”菜單選項,然后將USB OV5llcamera support設置為模塊,即:
SUB suppor———>
<*>USB OV5llcamera support(NEW)
3)模塊安裝
執(zhí)行以下命令安裝視頻輸入模塊:
insmod videodev.o
執(zhí)行以下命令安裝視頻輸入設備驅動模塊:
insmod usbcore.o
insmod usb-ohci-s3c2410.ko
insmod ov511.o
由于使用的設備是USB接口的攝像頭,所以在加載ov511.o模塊前,需要加載USB內核驅動和主機控制器驅動。