《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM11-Linux的視頻采集傳輸系統(tǒng)的研究
基于ARM11-Linux的視頻采集傳輸系統(tǒng)的研究
來源:微型機(jī)與應(yīng)用2013年第8期
謝婧波,吳伯農(nóng)
(北方工業(yè)大學(xué) 機(jī)電工程學(xué)院,北京100144)
摘要: 研究了一種基于ARM11的視頻采集無線傳輸系統(tǒng),實(shí)現(xiàn)了主體家庭網(wǎng)關(guān)通過攝像頭對(duì)各個(gè)分散房間的有效監(jiān)控。系統(tǒng)選用ARM11內(nèi)核的S3C6410作為系統(tǒng)處理器,CMOS攝像頭OV9650作為采集端,在自主設(shè)計(jì)的硬件平臺(tái)上搭建Linux軟件系統(tǒng),利用系統(tǒng)內(nèi)部的V4L2提供的數(shù)據(jù)結(jié)構(gòu)、應(yīng)用函數(shù)等完成攝像頭的采集;在傳輸系統(tǒng)方面,采用傳輸速度較快的WIFI-Ad-Hoc模式(端對(duì)端傳輸),依靠TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,成功實(shí)現(xiàn)家庭網(wǎng)關(guān)對(duì)各個(gè)分散采集點(diǎn)視頻信息的接收。
Abstract:
Key words :

摘  要: 研究了一種基于ARM11的視頻采集無線傳輸系統(tǒng),實(shí)現(xiàn)了主體家庭網(wǎng)關(guān)通過攝像頭對(duì)各個(gè)分散房間的有效監(jiān)控。系統(tǒng)選用ARM11內(nèi)核的S3C6410作為系統(tǒng)處理器,CMOS攝像頭OV9650作為采集端,在自主設(shè)計(jì)的硬件平臺(tái)上搭建Linux軟件系統(tǒng),利用系統(tǒng)內(nèi)部的V4L2提供的數(shù)據(jù)結(jié)構(gòu)、應(yīng)用函數(shù)等完成攝像頭的采集;在傳輸系統(tǒng)方面,采用傳輸速度較快的WIFI-Ad-Hoc模式(端對(duì)端傳輸),依靠TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,成功實(shí)現(xiàn)家庭網(wǎng)關(guān)對(duì)各個(gè)分散采集點(diǎn)視頻信息的接收。
關(guān)鍵詞: 視頻;采集;傳輸;無線網(wǎng)絡(luò);ARM11

    在信息、通信不斷發(fā)展的今天,人們對(duì)生活環(huán)境的安全性越來越重視,有效的視頻監(jiān)控系統(tǒng)為人們解決了這個(gè)問題。隨著電子信息技術(shù)、網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的迅速發(fā)展,嵌入式的無線視頻監(jiān)控隨即出現(xiàn)并且飛速發(fā)展,整個(gè)視頻監(jiān)控市場(chǎng)朝著集成化、網(wǎng)絡(luò)化、數(shù)字化和實(shí)時(shí)化的方向發(fā)展,而家庭視頻監(jiān)控中對(duì)采集傳輸?shù)囊笤絹碓礁遊1]。由于視頻數(shù)據(jù)信息量大、實(shí)時(shí)傳輸要求高,因此視頻監(jiān)控技術(shù)中視頻的采集和傳輸顯得尤為重要。而ARM嵌入式系統(tǒng)的小型化、成本低廉、結(jié)構(gòu)緊湊、占用空間小、可裁減性好、支持無線網(wǎng)絡(luò)等特點(diǎn),使得利用ARM11+Linux構(gòu)成的采集傳輸系統(tǒng)在現(xiàn)實(shí)中具有很大的實(shí)用價(jià)值。
    本文針對(duì)網(wǎng)絡(luò)視頻采集傳輸?shù)膶?shí)際應(yīng)用需求,結(jié)合圖像采集、無線傳輸和嵌入式系統(tǒng)等新技術(shù),設(shè)計(jì)了基于ARM11內(nèi)核S3C6410微處理器的無線視頻傳輸系統(tǒng),在Linux系統(tǒng)平臺(tái)上實(shí)現(xiàn)通過遠(yuǎn)程控制家庭網(wǎng)關(guān)來對(duì)各個(gè)分散房間環(huán)境的有效監(jiān)控。
1 系統(tǒng)的整體結(jié)構(gòu)
    家居視頻采集傳輸系統(tǒng)的整體結(jié)構(gòu)可以分為視頻采集系統(tǒng)和視頻傳輸系統(tǒng)兩個(gè)部分。其中家庭網(wǎng)關(guān)是視頻采集與傳輸?shù)年P(guān)鍵,是家庭監(jiān)控系統(tǒng)的主節(jié)點(diǎn)核心設(shè)備,視頻采集傳輸?shù)母黜?xiàng)命令都需要家庭網(wǎng)關(guān)下達(dá)。整個(gè)系統(tǒng)構(gòu)成如圖1所示。

    家庭網(wǎng)關(guān)的中央處理器的選擇方案比較多,考慮到家庭網(wǎng)關(guān)的功能和成本,選擇S3C6410微處理器作為基本的中央處理單元完成視頻信息的存儲(chǔ)及傳輸。為了方便采集模塊攝像頭視頻信息的采集處理,選擇功能強(qiáng)大的S3C6410處理器作為采集端的核心,方便家庭網(wǎng)關(guān)與采集模塊同時(shí)擴(kuò)展WIFI模塊來建立Ad-Hoc點(diǎn)對(duì)點(diǎn)的無線網(wǎng)絡(luò)連接,實(shí)現(xiàn)視頻的快速、平穩(wěn)、流暢的傳輸。
    整個(gè)系統(tǒng)的工作流程如下:
    (1)整個(gè)系統(tǒng)上電,使房間各個(gè)設(shè)備處于待機(jī)狀態(tài),室內(nèi)每個(gè)房間安裝帶有攝像頭的采集模塊,并且在采集模塊上集成WIFI模塊,家庭主節(jié)點(diǎn)(家庭網(wǎng)關(guān))也擴(kuò)展相同的WIFI模塊,每塊WIFI模塊都設(shè)置成Ad-Hoc工作模式;
    (2)處于待機(jī)狀態(tài)的家庭網(wǎng)關(guān)接收到用戶的命令,判斷用戶需要哪個(gè)房間的具體信息,使家庭網(wǎng)關(guān)與所需房間所在攝像頭采集模塊建立連接(兩者通過Ad-Hoc網(wǎng)絡(luò)建立連接)。家庭網(wǎng)關(guān)發(fā)送采集視頻指令給某個(gè)房間的采集模塊,相應(yīng)的采集端接收采集指令使處于待機(jī)狀態(tài)的采集模塊分析指令,從而開啟攝像頭采集存儲(chǔ)房間的視頻信息;
    (3)采集模塊采集視頻信息,根據(jù)命令將采集的視頻信息通過TCP/IP的傳輸方式發(fā)送到家庭網(wǎng)關(guān),家庭網(wǎng)關(guān)根據(jù)用戶命令檢測(cè)采集是否完成,選擇是否關(guān)閉會(huì)話,使房間設(shè)備處于待機(jī)狀態(tài),等待下次采集命令。

 


2 視頻采集系統(tǒng)的實(shí)現(xiàn)
2.1 采集系統(tǒng)硬件設(shè)計(jì)

    采集系統(tǒng)硬件部分設(shè)計(jì)主要包括微處理器單元S3C6410、電源模塊、CMOS攝像頭采集模塊、SD-WIFI無線網(wǎng)絡(luò)模塊、NAND Flash和SDRAM、SD卡等外圍電路模塊等。本系統(tǒng)利用S3C6410處理器控制接收CMOS攝像頭的視頻信號(hào),利用其內(nèi)部集成的Video4Linux2提供的數(shù)據(jù)結(jié)構(gòu)、應(yīng)用函數(shù)等完成攝像頭的采集;SD-WIFI模塊建立Ad-hoc端對(duì)端網(wǎng)絡(luò)連接,通過TCP/IP協(xié)議的傳輸方式使采集端與家庭網(wǎng)關(guān)之間建立連接,成功實(shí)現(xiàn)家庭網(wǎng)關(guān)對(duì)各個(gè)分散采集點(diǎn)視頻信息的接收;在此基礎(chǔ)上,配置了1 GB的NAND Flash,用于存放嵌入式Linux操作系統(tǒng)、應(yīng)用程序和數(shù)據(jù),128 MB的SDRAM內(nèi)存,用于存放運(yùn)行程序及攝像頭采集的數(shù)據(jù); SD卡用于程序的下載和簡(jiǎn)易安裝;整個(gè)硬件系統(tǒng)設(shè)計(jì)統(tǒng)一的電源模塊供電。
    整個(gè)視頻采集終端中,除了核心處理器S3C6410外,最重要的就是CMOS攝像頭,其中攝像頭的選擇與硬件電路連接是系統(tǒng)硬件設(shè)計(jì)的關(guān)鍵。
    CMOS攝像頭是一種采用CMOS圖像傳感器的攝像頭,是數(shù)碼設(shè)備用來感光成像的部件,集成在被稱做金屬氧化物的半導(dǎo)體材料上。CMOS圖像傳感器可通過CMOS技術(shù)將像素陣列與外圍支持電路(如圖像傳感器核心、單一時(shí)鐘、所有的時(shí)序邏輯、可編程功能和A/D轉(zhuǎn)換器)集成在同一塊芯片上,具有體積小、重量輕、功耗低、成本低、編程方便、易于控制等優(yōu)點(diǎn)[2],因此,CMOS圖像傳感器的應(yīng)用已經(jīng)變得越來越廣泛。
    本設(shè)計(jì)選用傳感器芯片OV9650。OV9650傳感器具有130萬像素的配置,分辨率可達(dá)1 280×1 024,具有標(biāo)準(zhǔn)的SSCB接口和10 bit數(shù)據(jù)接口,由于S3C6410片內(nèi)有攝像頭接口外設(shè),所以將OV9650攝像頭芯片直接與處理器攝像頭接口引腳相連,圖像并行傳輸,圖像數(shù)據(jù)速度明顯提高,CMOS攝像頭電路原理圖如圖2所示。

    該芯片支持RGB(4:2:2)、YUV(4:2:2)、YCrCb(4:2:2)三種數(shù)據(jù)輸出格式,內(nèi)置138個(gè)設(shè)備控制寄存器,地址范圍0x00~0x8A,通過SCCB接口可以方便地設(shè)置傳感器視窗大小、增益、白平衡校正、曝光控制、飽和度、色調(diào)等參數(shù)。
2.2 采集模塊軟件實(shí)現(xiàn)
    系統(tǒng)軟件可以控制實(shí)現(xiàn)硬件設(shè)備CMOS攝像頭對(duì)房間視頻信息的采集、存儲(chǔ),這里選擇Linux作為操作系統(tǒng)。Linux系統(tǒng)下,對(duì)視頻設(shè)備的各種操作是通過Video4Linux2(簡(jiǎn)稱V4L2)實(shí)現(xiàn)的。Video4Linux2是Linux內(nèi)核中支持影像設(shè)備的一組APIs,配合適當(dāng)?shù)囊曨l采集設(shè)備和相應(yīng)的驅(qū)動(dòng)程序,可以實(shí)現(xiàn)影像采集、AM/FM廣播、頻道切換等功能,在遠(yuǎn)程會(huì)議、可視電話、視頻監(jiān)控系統(tǒng)中有著廣泛的應(yīng)用。V4L2在Linux下進(jìn)行視頻采集的接口函數(shù)主要有open、read、write、select、mmap以及ioctl等,這與普通字符設(shè)備的驅(qū)動(dòng)接口形式上都是一致的,但是V4L2為設(shè)備控制接口函數(shù)ioctl提供了豐富的控制字來實(shí)現(xiàn)對(duì)設(shè)備的管理,管理的內(nèi)容包括對(duì)設(shè)備信息的查詢、幀緩沖的設(shè)置、圖像屬性的設(shè)置、視頻的捕捉等。
    在Linux下,所有的外設(shè)均被看成是一種特殊文件進(jìn)行處理,稱之為設(shè)備文件。系統(tǒng)調(diào)用和各種函數(shù)庫直接或間接地提供了內(nèi)核及應(yīng)用程序之間的接口,而設(shè)備的驅(qū)動(dòng)程序則是內(nèi)核及外設(shè)之間的接口,它完成設(shè)備的初始化和釋放、對(duì)設(shè)備文件的各種操作和對(duì)中斷進(jìn)行處理等各項(xiàng)功能。由于應(yīng)用程序屏蔽了外設(shè)硬件的細(xì)節(jié),使得應(yīng)用程序可以像普通文件一樣對(duì)外進(jìn)行操作而無需關(guān)注具體細(xì)節(jié)[3]。因此,在進(jìn)行視頻圖像采集之前,必須先加載Video4Linux2模塊為視頻采集設(shè)備提供函數(shù)接口。同時(shí)在內(nèi)核中,加載采用OV9650接口芯片的CMOS攝像頭的驅(qū)動(dòng),通過OV9650芯片就可以采集視頻數(shù)據(jù)并保存在Linux系統(tǒng)中進(jìn)行數(shù)據(jù)處理。
    Video4Linux2分兩層式架構(gòu),最上層為Video4Linux2驅(qū)動(dòng)程序本身,最下層架構(gòu)則是影像設(shè)備的驅(qū)動(dòng)程序。本系統(tǒng)中則是使用V4L2的最上層驅(qū)動(dòng)程序,即V4L2本身所提供給程序開發(fā)人員的APIs。Linux系統(tǒng)中把設(shè)備看成設(shè)備文件,在用戶空間可以通過標(biāo)準(zhǔn)的I/O系統(tǒng)調(diào)用函數(shù)操作此設(shè)備文件,從而達(dá)到與設(shè)備通信交互的目的。
    采集端在接收到家庭網(wǎng)關(guān)的采集指令之后開始視頻采集,整個(gè)視頻數(shù)據(jù)采集的流程如圖3所示。

3 視頻傳輸系統(tǒng)的實(shí)現(xiàn)
3.1 視頻傳輸模塊設(shè)計(jì)
3.1.1 傳輸方式選擇

    相較于有線網(wǎng)絡(luò)的繁瑣,無線網(wǎng)絡(luò)漸漸成為家庭網(wǎng)絡(luò)的首選。在流行的無線網(wǎng)絡(luò)產(chǎn)品中,最為熟悉的網(wǎng)絡(luò)標(biāo)準(zhǔn)主要有WIFI、BlueTooth、ZigBee、3G等[4],具體詳見表1。

    連接ARM與WIFI模塊常用的硬件接口有SPI、SDIO和USB,其中SPI是大多數(shù)微處理器都集成的一種接口,具有硬件連接方便、軟件設(shè)計(jì)簡(jiǎn)單、節(jié)省系統(tǒng)資源等特點(diǎn)。本系統(tǒng)采用的WIFI模塊支持SPI和SDIO連接。本系統(tǒng)中采用SPI接口來連接S3C6410處理器,通過CON11針腳引出,它是一個(gè)2.0間距的20Pin插針腳,為了配合SDIO使用,該接口還包含1路SPI、2個(gè)GPIO。
3.2 視頻數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)
3.2.1 無線傳輸模式的搭建

    傳輸模式的搭建可分為兩個(gè)部分,一是內(nèi)核模塊的加載,二是工作模式的設(shè)置。內(nèi)核加載WIFI模塊,通過insmod命令來實(shí)現(xiàn),這里需要加載相應(yīng)的運(yùn)行文件,這兩個(gè)文件可以在Marvel官方網(wǎng)站下載;設(shè)定工作模式之前要先使用ifconfig命令設(shè)定目標(biāo)板的IP地址,然后通過iwconfig命令設(shè)置模塊的工作模式和用戶名,為增加安全性,也可以設(shè)置相應(yīng)的密碼。
3.2.2 TCP/IP協(xié)議的視頻數(shù)據(jù)傳輸
    TCP(傳輸控制協(xié)議)是TCP/IP體系中面向連接的傳輸層協(xié)議,它可以保證數(shù)據(jù)可靠地傳輸。Linux作為一個(gè)通用的操作系統(tǒng),支持所有的網(wǎng)絡(luò)協(xié)議包括TCP/IP協(xié)議。首先,Linux的TCP/IP協(xié)議的實(shí)現(xiàn)是基于Linux的一整套內(nèi)核控制機(jī)制,如進(jìn)程調(diào)度機(jī)制、進(jìn)程通信機(jī)制、軟中斷機(jī)制等,一個(gè)基于TCP/IP應(yīng)用程序的執(zhí)行是一個(gè)進(jìn)程,所以操作系統(tǒng)的支持是顯然的,同時(shí)也是必須在操作系統(tǒng)的上述機(jī)制的控制下才能得以實(shí)現(xiàn)。
    應(yīng)用程序使用傳輸層的TCP協(xié)議來完成視頻數(shù)據(jù)的可靠傳輸,是因?yàn)門CP協(xié)議能夠保證數(shù)據(jù)準(zhǔn)確完整地、按正確的序列在網(wǎng)絡(luò)上傳送到目標(biāo)地址。TCP協(xié)議的特性是能夠提供可靠的、面向連接、字節(jié)流傳送服務(wù),TCP 協(xié)議能夠在兩個(gè)通信的主機(jī)之間建立點(diǎn)到點(diǎn)的邏輯連接。TCP實(shí)現(xiàn)傳送的過程為:首先在通信雙方-客戶端與服務(wù)器之間提供連接,一個(gè)TCP客戶與某個(gè)給定的服務(wù)器建立連接,通過建立的連接與服務(wù)器交換數(shù)據(jù)信息,最后結(jié)束連接。本文將采集發(fā)送端、接收端看做相應(yīng)的服務(wù)器、客戶端。
    在Linux系統(tǒng)中,如果希望通過網(wǎng)絡(luò)和其他程序進(jìn)行通信,就只能通過套接口socket()實(shí)現(xiàn)。套接口是一種使用操作系統(tǒng)中的文件描述符和系統(tǒng)進(jìn)程進(jìn)行通信的一種方法。Linux支持多種類型的套接口,每種類型的套接口都有自己的尋址方法,這里支持TCP/IP協(xié)議的套接口類型是INET。一旦申請(qǐng)了一個(gè)套接口以后,就可以利用Linux提供的網(wǎng)絡(luò)函數(shù)進(jìn)行網(wǎng)絡(luò)編輯[7]。具體傳輸過程如圖5所示。

    套接口通信的進(jìn)程使用的是采集端/家庭網(wǎng)關(guān)模式,服務(wù)器采集端用來提供服務(wù),家庭網(wǎng)關(guān)端則可以使用服務(wù)器采集端提供的服務(wù)。這里采集端首先創(chuàng)建一個(gè)套接口,然后給它指定一個(gè)名字。名字的形式取決于套接口的地址簇,事實(shí)上也就是采集端的本地地址,系統(tǒng)使用數(shù)據(jù)結(jié)構(gòu)sockaddr來指定套接口的名字和IP地址。當(dāng)采集端指定套接口以后,它將監(jiān)聽與此地址有關(guān)的連接請(qǐng)求,而請(qǐng)求的發(fā)起者(家庭網(wǎng)關(guān))將會(huì)創(chuàng)建一個(gè)套接口,然后再創(chuàng)建連接請(qǐng)求并指定采集端的目的地址,對(duì)于一個(gè)套接口來說,采集端的地址就是它的IP地址和端口號(hào)[8],當(dāng)然,對(duì)于不同的采集端所分配的IP地址是在一個(gè)網(wǎng)段的不同地址。通信過程中的連接請(qǐng)求必須通過各種協(xié)議層,然后等待采集端的監(jiān)聽套接口,一旦采集端收到了連接請(qǐng)求,它可以接受或者拒絕這個(gè)請(qǐng)求。當(dāng)接受連接請(qǐng)求后,采集端通過accept()響應(yīng)接受連接,建立起數(shù)據(jù)連接之后,雙方就會(huì)進(jìn)入傳輸狀態(tài),數(shù)據(jù)傳輸完畢之后,數(shù)據(jù)連接有選擇地循環(huán)繼續(xù)傳輸或者撤銷,如此循環(huán)反復(fù),直到會(huì)話結(jié)束,從而實(shí)現(xiàn)將視頻文件從采集端傳送到家庭網(wǎng)關(guān)。
    以往的嵌入式視頻采集傳輸系統(tǒng)都是在ARM9開發(fā)平臺(tái)上的,視頻的處理要采用相應(yīng)多媒體處理設(shè)備。而本文采用的ARM11內(nèi)核自身集成了視頻的采集處理功能,簡(jiǎn)化了開發(fā)難度,節(jié)約了成本。相較于以往有線家居視頻監(jiān)控系統(tǒng),本設(shè)計(jì)采用了比較新穎的無線WIFI監(jiān)控,傳輸速度快捷,滿足了大視頻數(shù)據(jù)傳輸?shù)囊蟆1鞠到y(tǒng)構(gòu)建了低成本、低功耗、實(shí)時(shí)性強(qiáng)的無線視頻監(jiān)控平臺(tái),除應(yīng)用于家居監(jiān)控外,還可以用于搭建各種各樣的應(yīng)用,具有可觀的實(shí)用價(jià)值。
參考文獻(xiàn)
[1] 郝東東,紀(jì)珂.基于S3C2440_Linux的視頻傳輸系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012(1):141-142.
[2] 丁昊杰,劉敬彪,盛慶華.基于CMOS圖像傳感器的視頻采集系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2012,35(14):178-188.
[3] 郝俊,孟傳良.基于V4L2的ARM11 USB視頻采集終端的設(shè)計(jì)與實(shí)現(xiàn)[J].貴州大學(xué)學(xué)報(bào),2011,28(4):74-78.
[4] 陳玉坤,李波.基于嵌入式Linux的Ad-Hoc網(wǎng)絡(luò)視頻傳輸研究[J].測(cè)控技術(shù),2011,30(1):83-86.
[5] 曾磊,張海峰,侯維巖.基于WIFI的無線測(cè)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電測(cè)與儀表,2011,48(7):81-83.
[6] 鄭曉東,王建.基于WIFI技術(shù)的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)[J].科技研究,2011(7):61-62.
[7] 何勁,謝松巍.基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計(jì)算機(jī)應(yīng)用與研究,2001,18(8):134-135.
[8] 王鳳純,魯靜.基于RTP/RTCP的音視頻同步方法研究[J].軟件,2011,32(6):78-80.

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