《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于嵌入式ARM的圖像采集與傳輸設計
基于嵌入式ARM的圖像采集與傳輸設計
天津科技大學 嚴新忠 陳雨
摘要: 隨著嵌入式技術的迅猛發(fā)展和Linux在信息行業(yè)中的廣泛應用,,視頻采集與傳輸系統(tǒng)作為遠程視頻監(jiān)控,、可視電話會議和工業(yè)自動控制領域的一項核心技術,,近年來已經(jīng)得到了飛速的發(fā)展,。本文在基于嵌入式Linux系統(tǒng)平臺上,采用USB攝像頭捕捉視頻信號,,利用V4L內(nèi)核應用編程接口函數(shù),,實現(xiàn)了視頻連續(xù)幀圖像的采集,并保存成文件的形式利用無線傳輸方式傳輸給接收端,。這里著重討論視頻采集發(fā)送端的實現(xiàn),。
Abstract:
Key words :

 

     隨著嵌入式技術的迅猛發(fā)展和Linux在信息行業(yè)中的廣泛應用,視頻采集與傳輸系統(tǒng)作為遠程視頻監(jiān)控,、可視電話會議和工業(yè)自動控制領域的一項核心技術,,近年來已經(jīng)得到了飛速的發(fā)展。本文在基于嵌入式Linux系統(tǒng)平臺上,,采用USB攝像頭捕捉視頻信號,,利用V4L內(nèi)核應用編程接口函數(shù),實現(xiàn)了視頻連續(xù)幀圖像的采集,,并保存成文件的形式利用無線傳輸方式傳輸給接收端,。這里著重討論視頻采集發(fā)送端的實現(xiàn)。
  1 系統(tǒng)組成
  1.1 統(tǒng)的硬件構成
  本系統(tǒng)包括發(fā)送端和接收端2部分,,兩部分均采用Samsung公司生產(chǎn)的S3C2410處理器做硬件開發(fā)平臺,。S3C2410在片上集成了豐富的組件:分開的16 KB指令Cache和16 KB數(shù)據(jù)Cache、用于虛擬存儲器管理的MMU,、支持STN和TFT的LCD控制器,、NAND Flash啟動裝載器、具有片選邏輯和SDRAM控制器的系統(tǒng)管理器,、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串口用于人機交互及低速數(shù)據(jù)的收發(fā),,應用電平轉(zhuǎn)換芯片MAX-323進行串口電平和TTL/CMOS電平的轉(zhuǎn)換。JTAG接口用于下載Bootloader,。RJ-45接口用于和以太網(wǎng)連接,,下載操作系統(tǒng)Linux內(nèi)核、根文件系統(tǒng)和應用軟件,。SDRMA用于系統(tǒng)的數(shù)據(jù)存儲器,、Flash用于系統(tǒng)的程序存儲器。
  應用S3C2410處理器平臺搭建的接收端硬件電路如圖2所示:與發(fā)送終端相比,,多了SD卡和LCD顯示器,。SD卡主要用來存儲數(shù)據(jù),LCD顯示器主要用來顯示視頻圖像,。
 
  1.2 系統(tǒng)軟件設計
  系統(tǒng)的軟件構成分為引導驅(qū)動程序,、操作系統(tǒng)、文件系統(tǒng)和應用程序4部分,,如圖3所示,。引導驅(qū)動程序在系統(tǒng)啟動時進行內(nèi)存重映射,將保存在Flash中的操作系統(tǒng)和應用程序重新映射到SDRAM中,。Linux的內(nèi)核版本為LinIix2.6,。文件系統(tǒng)是Yaffs,它包括模塊,、配置文件和庫等,。系統(tǒng)的應用程序建立在嵌入式Linux內(nèi)核、攝像頭驅(qū)動和文件系統(tǒng)之上,。
  2 視頻采集的具體實現(xiàn)
  USB攝像頭連接簡單,、使用靈活,、價格低廉且具有良好的性能,因此,,得到了廣泛的應用,。Linux內(nèi)核包含了多種USB攝像頭驅(qū)動,最常用的有基于OV5ll及其兼容芯片,。OV511芯片主要包括CAMERA接口,、DRMA接口、ISO FIFO接口和OmniCE以及USB控制器等部分,。本設計使用的是在低端市場占有率較高的中芯微公司生產(chǎn)的ZC030x系列攝像頭芯片,。Linux系統(tǒng)中的視頻子系統(tǒng)’Vide04linux為視頻應用程序提供了一套統(tǒng)一的API,視頻應用程序通過調(diào)用API即可操作各種不同的視頻捕獲設備,,包括電視卡,、視頻捕捉卡和USB攝像頭等。本設計的具體實現(xiàn)過程如下所述:
  2.1 攝像頭驅(qū)動的實現(xiàn)
  1)配置Vide04linux內(nèi)核
  在終端使用make menuconfig命令打開S3C24lOlinux內(nèi)核編譯的main menu窗口,,并進入“multimedia device———>”菜單選項,,然后將Video for Linux配置為模塊,即:
  Device driver———>
  Multimedia devices———>
  <*>Video for linux
  2)配置OV511驅(qū)動
  返回主菜單,,在進入“USB support———>”菜單選項,,然后將USB OV5llcamera support設置為模塊,即:
  SUB suppor———>
  <*>USB OV5llcamera support(NEW)
  3)模塊安裝
  執(zhí)行以下命令安裝視頻輸入模塊:
  insmod videodev.o
  執(zhí)行以下命令安裝視頻輸入設備驅(qū)動模塊:
  insmod usbcore.o
  insmod usb-ohci-s3c2410.ko
  insmod ov511.o
  由于使用的設備是USB接口的攝像頭,,所以在加載ov511.o模塊前,,需要加載USB內(nèi)核驅(qū)動和主機控制器驅(qū)動。 
 2.2 利用Vide041inux實現(xiàn)圖像采集
  在安裝了圖像采集設備驅(qū)動后,,只需要再編寫一個對視頻采集的應用程序就可以采集視頻圖像,。在Linux系統(tǒng)中,視頻文件是設備文件,,可以像訪問普通文件一樣對其進行讀寫,,攝像頭文件一般是/dev/v4l/video。在進行視頻捕捉之前,,需要做一些必要的設置工作,。這些設置涉及到如下結構:
  V4L下視頻采集編程首先要打開視頻設備:
 
  Int fd="open"(“/dev/v4l/video”,O_RDONLY),;
  If(fd<O)return-l,;
  接著對攝像頭參數(shù)進行設置。一般是先通過I/O控制命令讀取設備信息,,然后對特定項進行修改,,最后通過I/O控制命令保存到內(nèi)核中。由于篇幅有限源程序不再贅述,。
  獲取基本信息后,,可以輸出顯示,,也可以通過ioctl系統(tǒng)調(diào)用對這些值進行修改。然后調(diào)用函數(shù)Char*Carmera_get_image(video_device*vd)獲得圖像數(shù)據(jù)指針,。此函數(shù)比較重要,,關系到圖像采集的效率。獲取圖像數(shù)據(jù)有2種方法:一是通過映射得到視頻驅(qū)動的數(shù)據(jù)緩沖,,然后直接對映射后的緩沖進行讀操作,;二是直接讀設備,及調(diào)用read函數(shù),。下面分別介紹:
  (1)read系統(tǒng)調(diào)用方式比較簡單,只需將前面得到攝像頭參數(shù)傳入read函數(shù)中,,得到圖像數(shù)據(jù)指針picture_p后返回即可:read(vd->fd,,picture_p,width*hight),;其中vd_>fd為設備文件描述符,。
  (2)利用mmap方式先使用ioctl(fd,VIDIOCGMBUF,,&grab_vm)函數(shù)獲得攝像頭存儲緩沖區(qū)的幀信息,,之后修改voideo_mmap中的設置,例如重新設置圖像幀的垂直及水平分辨率,、彩色顯示格式,,使用如下語句:
  grab_buf.height=240;
  grab_buf.width=320,;
  grab—buf.format=VIDEO_PALETTE_RGB24,;
  接著把攝像頭對應的設備文件映射到內(nèi)存區(qū),具體使用grab_data=(unsigned char*)mmap(O,,grab_vm.size,,PROT_READ|PROT_WRITE,MAP_SHARED,,grab_fd,,O)操作。這樣設備文件的內(nèi)容就映射到內(nèi)存區(qū),,該映射內(nèi)容區(qū)可讀可寫并且不同進程間可共享,。該函數(shù)成功時返回圖像數(shù)據(jù)的指針,失敗時返回值為-1,。
  3 無線傳輸模塊
  本系統(tǒng)選用西門子的MC235作為GPRS通信模塊,,來實現(xiàn)圖像的無線傳輸。該模塊結合語音,、數(shù)據(jù)傳輸,、短信服務等功能,,最大傳輸速率可以達到85.6 Kbps,具有豐富的AT指令使模塊與微處理器通信,,功能強大,,操作靈活方便,特別適用于數(shù)據(jù)的監(jiān)測和傳輸,。
  在進行GPRS傳輸操作之前需對模塊進行設置,,主要有:(1)設置通信波特率;(2)設置接入網(wǎng)關,;(3)設置移動終端類別,;(4)測試GPRS服務是否開通,激活GPRS功能,。這些設置都在主程序的初始化代碼段完成,。通過測試,GPRS驅(qū)動正常工作,,能很好地支持數(shù)據(jù)/命令復合協(xié)議傳輸,,其協(xié)議的丟包率、吞吐量等性能指標與無線模塊的指標無實質(zhì)性差別,,整個系統(tǒng)工作正常,,基本達到設計要求。
  4 結束語
  本文基于S3C2410的硬件平臺和嵌入式Linux的軟件平臺,,實現(xiàn)了視頻信號的采集和網(wǎng)絡傳輸,。發(fā)送端由于把圖像壓縮和網(wǎng)絡功能集成到一個體積很小的設備內(nèi),并直接通過無線方式接入GPRS網(wǎng),,省掉各種復雜的電纜連接,,安裝方便;用軟件的方法替代了以往許多用硬件模塊實現(xiàn)的功能,,同時實現(xiàn)了收發(fā)雙方體積的小型化和低功耗,,在網(wǎng)絡狀況較為理想的情況下,系統(tǒng)在圖像分辨率為352×288,,像素為16位的情況下,,可以實現(xiàn)每秒鐘傳送1幀圖像。整個系統(tǒng)具有穩(wěn)定可靠,、安裝簡便,、成本低廉等特點,可擴展應用在工業(yè)控制,、視頻會議系統(tǒng),、可視電話、遠程監(jiān)控系統(tǒng)等諸多領域,。
 

來源:國外電子測量技術 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權禁止轉(zhuǎn)載,。