隨著嵌入式技術的迅猛發展和Linux在信息行業中的廣泛應用,視頻采集與傳輸系統作為遠程視頻監控、可視電話會議和工業自動控制領域的一項核心技術,近年來已經得到了飛速的發展。本文在基于嵌入式Linux系統平臺上,采用USB攝像頭捕捉視頻信號,利用V4L內核應用編程接口函數,實現了視頻連續幀圖像的采集,并保存成文件的形式利用無線傳輸方式傳輸給接收端。這里著重討論視頻采集發送端的實現。 1 系統組成 1.1 統的硬件構成 本系統包括發送端和接收端2部分,兩部分均采用Samsung公司生產的S3C2410處理器做硬件開發平臺。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時鐘發生器,還采用了AMBA(advanced micrcocontroller bus architecture)新型總線結構。 應用S3C2410處理器平臺搭建的發送端硬件結構如圖1所示:包括S3C2410處理器、RS232接口、JTAG接口、RJ-45接口、SDRMA、Flash、電源、通過USB口連接的視頻采集模塊和通過USB接口連接的視頻發射模塊。RS232串口用于人機交互及低速數據的收發,應用電平轉換芯片MAX-323進行串口電平和TTL/CMOS電平的轉換。JTAG接口用于下載Bootloader。RJ-45接口用于和以太網連接,下載操作系統Linux內核、根文件系統和應用軟件。SDRMA用于系統的數據存儲器、Flash用于系統的程序存儲器。 應用S3C2410處理器平臺搭建的接收端硬件電路如圖2所示:與發送終端相比,多了SD卡和LCD顯示器。SD卡主要用來存儲數據,LCD顯示器主要用來顯示視頻圖像。 1.2 系統軟件設計 系統的軟件構成分為引導驅動程序、操作系統、文件系統和應用程序4部分,如圖3所示。引導驅動程序在系統啟動時進行內存重映射,將保存在Flash中的操作系統和應用程序重新映射到SDRAM中。Linux的內核版本為LinIix2.6。文件系統是Yaffs,它包括模塊、配置文件和庫等。系統的應用程序建立在嵌入式Linux內核、攝像頭驅動和文件系統之上。 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)模塊安裝 執行以下命令安裝視頻輸入模塊: insmod videodev.o 執行以下命令安裝視頻輸入設備驅動模塊: insmod usbcore.o insmod usb-ohci-s3c2410.ko insmod ov511.o 由于使用的設備是USB接口的攝像頭,所以在加載ov511.o模塊前,需要加載USB內核驅動和主機控制器驅動。 |