詹一佳,鄧本再,曹宇杰
(長(zhǎng)沙理工大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙 410114)
伴隨電子信息技術(shù),網(wǎng)絡(luò)技術(shù)及多媒體技術(shù)的快速發(fā)展,嵌入式無線視頻監(jiān)控技術(shù)也在不斷的飛速發(fā)展。視頻監(jiān)控系統(tǒng)正在向數(shù)字化、網(wǎng)絡(luò)化和集成化方向發(fā)展,因此研究基于嵌入式的視頻監(jiān)控系統(tǒng)是必要的。基于嵌入式的無線視頻監(jiān)控是以高性能處理器為核心,控制外圍部件進(jìn)行視頻采集和壓縮編碼,再將視頻流以無線的方式發(fā)送到中斷進(jìn)行存儲(chǔ)顯示。與其他監(jiān)控系統(tǒng)相比,利用嵌入式技術(shù)的無線視頻監(jiān)控系統(tǒng)易安裝,體積小,可以實(shí)現(xiàn)無人值守,對(duì)于各種特殊場(chǎng)合需求的視頻監(jiān)控能夠滿足應(yīng)用要求。
錢華明[1]等人提出了一種基于S3C2410硬件平臺(tái)和嵌入式Linux操作系統(tǒng),將采集的視頻數(shù)據(jù)進(jìn)行MPEG-4編碼,再通過CDMA模塊,完成無線網(wǎng)絡(luò)視頻傳輸。涂繼輝[2]等人提出了以高性能ARM9芯片作微處理器,通過嵌入式Linux采集USB攝像頭視頻數(shù)據(jù),經(jīng)MJPEG-4壓縮,通過2.4 GHz無線發(fā)送/接受模塊實(shí)現(xiàn)無線視頻監(jiān)控。張偉男[3]等人提出了一種基于3G無線網(wǎng)絡(luò)傳輸?shù)囊苿?dòng)視頻監(jiān)控系統(tǒng)的方案,實(shí)現(xiàn)了實(shí)時(shí)監(jiān)控的功能。
為了實(shí)現(xiàn)室內(nèi)視頻監(jiān)控系統(tǒng)的網(wǎng)絡(luò)傳輸,在保證傳輸穩(wěn)定和多用戶的需求前提下,本文選取了主頻更高的ARM11作為處理器,以802.11g的無線局域網(wǎng)和Mjpg-streamer視頻服務(wù)器為傳輸媒介的無線視頻監(jiān)控系統(tǒng)[4-8]。
微處理器是系統(tǒng)硬件的核心,考慮到ARM低功耗、低成本、高性能等特點(diǎn),本文采用ARM11 S3C6410微處理器為核心的飛凌OK6410開發(fā)板,S3C6410是一款高性能32位的RISC微處理器,主頻高達(dá)667 MHz,它采用64/32位內(nèi)部總線架構(gòu),具有視頻處理、二維圖形顯示和縮放等硬件加速器功能。該開發(fā)板有256MB DDR和2 GB NAND FLASH,CPU內(nèi)部集成SDRAM控制器、32通道DMA、4通道UART、SD接口、USB接口及以太網(wǎng)接口等,為各種應(yīng)用開發(fā)提供了強(qiáng)大的支持。系統(tǒng)硬件架構(gòu)圖如圖1所示。

圖1 系統(tǒng)硬件架構(gòu)圖Fig.1 Architecture diagram of system hardware
OK6410有1個(gè)CMOS攝像頭接口,但由于攝像頭只能固定在開發(fā)板上,不便于安裝和放置,故本設(shè)計(jì)采用USB攝像頭。考慮到成本問題,攝像頭選用天敏10moons,經(jīng)測(cè)試該設(shè)備可以用于OK6410開發(fā)板上,且輸出YUV格式的視頻幀數(shù)據(jù)。
本設(shè)計(jì)使用的WIFI模塊為飛凌公司自行設(shè)計(jì)生產(chǎn)的,接口為2.0間距的雙排插孔“CN4”,主芯片型號(hào)為“WM-G-MR-09”。在連無線網(wǎng)絡(luò)之前,先關(guān)閉DM9000網(wǎng)卡,再啟動(dòng)SDIO WIFI,命令分別為:ifconfig eth0 down 和 ifconfig wlan0 up。
軟件設(shè)計(jì)包括嵌入式操作平臺(tái)的搭建以及視頻服務(wù)器軟件的移植。為此,首先搭建嵌入式交叉編譯環(huán)境。Ubuntu是一個(gè)以桌面應(yīng)用為主的Linux操作系統(tǒng),且具有安裝系統(tǒng)簡(jiǎn)單和圖形界面人性化特點(diǎn),故選用Ubuntu 12.04為宿主機(jī)電腦操作系統(tǒng)。交叉編譯器選擇arm-linux-gcc 4.3.2版本。
現(xiàn)階段主流的嵌入式操作系統(tǒng)有Linux、WinCE和uC/OS-II,其中Linux以其充分的開源性和良好的可移植性被廣泛使用,此次設(shè)計(jì)選取Linux 3.0.1版本的系統(tǒng)[9]。
2.1.1 內(nèi)核的裁剪與移植
內(nèi)核的裁剪就是對(duì)各個(gè)功能進(jìn)行裁剪,選取滿足特定平臺(tái)和需求的功能。Linux內(nèi)核采用模塊化設(shè)計(jì),并且各個(gè)模塊源碼以文件目錄的形式存放,在對(duì)內(nèi)核的裁剪和編譯時(shí)非常方便。
1)USB攝像頭驅(qū)動(dòng)模塊的添加
進(jìn)入內(nèi)核文件目錄,執(zhí)行make menuconfig命令,進(jìn)入Linux內(nèi)核配置界面一次選擇Device Drivers->Multimedia devices->Video For Linux->Video capture adapters->V4L USB devices->USB Video Class(UVC)->UVC input events device support將USB攝像頭驅(qū)動(dòng)編譯進(jìn)內(nèi)核。
2)SDIO WIFI驅(qū)動(dòng)模塊的加載
系統(tǒng)的通信方式采用的是無線傳輸,由于這是系統(tǒng)的基本功能,可以采用將無線網(wǎng)卡驅(qū)動(dòng)直接編譯進(jìn)內(nèi)核的方式來實(shí)現(xiàn)。具體過程如下:
進(jìn)入Linux內(nèi)核配置主界面后,首先配置網(wǎng)絡(luò)支持:Networking support->Wireless,然后配置網(wǎng)卡驅(qū)動(dòng)支持:Device Driver->Network device->Wireless LAN->Wireless LAN(IEEE 802.11),最后配置SD HOST驅(qū)動(dòng)支持:Device Driver->MMC/SD/SDIO card support。
對(duì)內(nèi)核配置完成后,使用make zImage指令編譯Linux內(nèi)核,將生成可引導(dǎo)的、壓縮的zImage映像文件,可直接燒寫到開發(fā)板。
2.1.2 引導(dǎo)加載程序Bootloader的移植
Bootloader是操作系統(tǒng)運(yùn)行前執(zhí)行的一段小程序,在對(duì)系統(tǒng)硬件進(jìn)行初始化,完成內(nèi)存空間映射表的建立等操作后,實(shí)現(xiàn)對(duì)操作系統(tǒng)的加載。常用的Bootloader種類主要有:RedBoot、ARMboot、Vivi、U-Boot和 Blob 等。 由于 U-boot的開源性,以及多功能、靈活性強(qiáng),支持多種平臺(tái)的特點(diǎn),使其在多種平臺(tái)上得到了普遍的采用,本設(shè)計(jì)也使用U-Boot來引導(dǎo)系統(tǒng)的啟動(dòng)。
2.1.3 根文件系統(tǒng)的移植
文件系統(tǒng)是操作系統(tǒng)在磁盤上組織文件的方法,通過使用文件系統(tǒng),用戶可以對(duì)數(shù)據(jù)進(jìn)行透明且有效地存取和訪問。Linux根文件系統(tǒng)通常包含如圖所示的目錄結(jié)構(gòu):
Yaffs是第一個(gè)專門為Nandflash存儲(chǔ)介質(zhì)而設(shè)計(jì)的嵌入式文件系統(tǒng),yaffs有很好的魯棒性,對(duì)啟動(dòng)時(shí)間和RAM使用都做了優(yōu)化,加快了文件系統(tǒng)的加載和訪問速度。故本文用yaffs作為根文件系統(tǒng)。
2.1.4 一鍵燒寫Linux
OK6410支持一鍵燒寫,就是借助SD卡、系統(tǒng)映像和燒寫工具,通過一系列的操作,非常迅速地?zé)龑慙inux到開發(fā)板的Nandflash中。具體步驟如下:
1)將SD卡格式化為FAT32格式,通過SD_Writer.exe將mmc.bin燒寫到SD卡中;
2)將U-Boot、zImage和yaffs2文件拷貝到SD卡中;
3)將SD卡插入開發(fā)板,撥動(dòng)開發(fā)板的撥碼開關(guān),設(shè)置為SD卡啟動(dòng);
4)設(shè)置DNW串口,給開發(fā)板上電,等待5分鐘左右即可;
5)斷電,將撥碼開關(guān)設(shè)置為Nandflash啟動(dòng),重新啟動(dòng)電源,便完成系統(tǒng)燒寫。
Mjpg-streamer是一個(gè)視頻流應(yīng)用軟件,使用V4L2(Video 4 Linux 2)的接口,通過文件或HTTP方式訪問linux-UVC兼容攝像頭。視頻采集功能通過調(diào)用mmap()函數(shù)將視頻采集設(shè)備映射到系統(tǒng)內(nèi)存中來實(shí)現(xiàn),取代了傳統(tǒng)的直接讀取用戶空間設(shè)備的方式,繞過了內(nèi)核緩沖區(qū),加快了視頻數(shù)據(jù)的處理速度,提高了實(shí)時(shí)性。
Mjpg-streamer支持使用攝像頭內(nèi)的DSP硬件壓縮功能付出少量硬件壓縮時(shí)的電源開銷,減少了CPU的負(fù)荷,減少帶寬的占用,特別適用于嵌入式設(shè)備。
Mjpg-streamer采用模塊化的設(shè)計(jì)方法,以功能塊,即plug-in(組件)為單位進(jìn)行描述。Mjpg-streamer的工作就是將其中的一個(gè)輸入組件和多個(gè)輸出組件綁定在一起,所有的功能都是通過它的各個(gè)組件完成的。用戶可以選擇需要的模塊,并進(jìn)行必要修改,以完成所需功能。體系結(jié)構(gòu)如圖2所示。
插件最主要且最常用的組件是input-uvc輸入組件和output_http輸出組件。其他組件包括input_control、input_file、input_testpicture、input_gspcav1、output_autofocus、output_file、out_viewer,如圖 3所示。
2.2.1 input_uvc輸入組件

圖2 Mjpg-streamer體系結(jié)構(gòu)層次圖Fig.2 Mjpg-streamer system structure diagram

圖3 Mjpg-streamer的組件體系Fig.3 The components of Mjpg-streamer system
Input_uvc組件的主要功能是獲取攝像頭拍攝的圖像并將其壓縮編碼,共包括5個(gè)組件接口函數(shù),這些組件接口函數(shù)是各個(gè)組件提供給外部使用的接口。相關(guān)函數(shù)的定義可查看input_uvc.c文件。
Output_http輸出插件是功能齊全的HTTP 1.0的web服務(wù)器,通過輸入插件獲取的USB攝像頭圖像數(shù)據(jù)處理之后以流媒體的形式輸出,并可為設(shè)置用戶名和密碼,最終在其客戶端瀏覽器顯示。
2.2.2 mjpg-streamer視頻服務(wù)器的移植
Mjpg-streamer的移植需要JPEG庫的支持,所以首先需要移植JPEG庫到開發(fā)板。從http://www.ijg.org/files/下載jpeg源碼包,解壓縮后進(jìn)入其目錄,在源碼包目錄執(zhí)行./configure CC=arm-linux-gcc–host=arm-unknown-linux–prefix=/opt/linux/jpeg–enable-shared–enable-static命令配置其交叉編譯器和編譯后安裝的目錄,然后執(zhí)行make命令編譯和make install命令安裝,最后將jpeg目錄下生成的庫文件libjpeg.so.9拷貝到開發(fā)板根目錄下的lib文件夾中,即完成jpeg庫的移植。
通過sourceforge網(wǎng)站下載mjpg-streamer源碼包。修改input_uvc目錄下的Makefile文件,以其滿足編譯要求。然后執(zhí)行make CC=arm-linux-gcc命令進(jìn)行編譯。在開發(fā)板建立mjpg安裝目錄,將其源碼目錄中的.so為后綴的共享庫文件和start.sh文件及文件夾www拷貝到其中,同時(shí)復(fù)制編譯后目標(biāo)文件路徑下的可執(zhí)行文件mjpg_streamer到開發(fā)板根目錄的bin文件夾中,至此整個(gè)移植過程完畢。最后執(zhí)行./mjpg_streamer-i“/mjpg/input_uvc.so –y –d /dev/video2” –o “/mjpg/output_http.so–w/mjpg/www”命令以開啟視頻服務(wù)器。
本文采用飛凌公司的ARM11開發(fā)板進(jìn)行實(shí)驗(yàn),通過燒寫并運(yùn)行應(yīng)用程序,可在遠(yuǎn)程PC機(jī)上看到視頻監(jiān)控效果。在瀏覽器端輸入服務(wù)器端的IP地址訪問目標(biāo)服務(wù)器,即輸入http://10.17.133.88:8080/?action=stream,視頻監(jiān)控效果如圖4所示。從監(jiān)控畫面可以看出,接收到的監(jiān)控畫面比較清晰,反映出通過Mjpg-streamer服務(wù)器進(jìn)行無線傳輸?shù)膱D像畫面質(zhì)量較好,達(dá)到了無線傳輸?shù)墓δ堋?/p>

圖4 視頻監(jiān)控效果圖Fig.4 Video surveillance renderings
通過表1中兩種方法進(jìn)行穩(wěn)定性測(cè)試,從測(cè)試效果可以看出,在瀏覽器端顯示的圖像信息良好,系統(tǒng)不管在何種情況下,均沒有出現(xiàn)死機(jī)或卡頓的現(xiàn)象,說明設(shè)計(jì)的監(jiān)控系統(tǒng)性能穩(wěn)定。

表1 穩(wěn)定性測(cè)試方法與結(jié)果Tab.1 Stability testing methods and results
本文設(shè)計(jì)了一種基于 ARM11、USB攝像頭、WIFI以及Mjpg-streamer軟件的嵌入式視頻監(jiān)控系統(tǒng),進(jìn)行了linux系統(tǒng)及視頻服務(wù)器軟件的編譯與移植,實(shí)現(xiàn)了視頻流在基于802.11g的遠(yuǎn)程視頻的實(shí)時(shí)穩(wěn)定傳輸。該系統(tǒng)體積小,功耗低,經(jīng)測(cè)試,系統(tǒng)穩(wěn)定可行,實(shí)時(shí)性好,可被多用戶同時(shí)訪問,遠(yuǎn)端計(jì)算機(jī)可以清晰地觀測(cè)到室內(nèi)監(jiān)控畫面。該系統(tǒng)滿足室內(nèi)視頻監(jiān)控的需求,為進(jìn)一步提高視頻圖像傳輸質(zhì)量和傳輸效率,可以考慮加入最新H.264編解碼算法進(jìn)行視頻圖像的編解碼。
[1]錢華明,劉英明,張振旅.基于S3C2410嵌入式無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2009,17(6):1132-1134.QIAN Hua-ming,LIU Ying-ming,ZHANG Zhen-lv.Design of embedded wireless video monitor system based on S3C2410[J].Computer Measurement&Control,2009,17(6):1132-1134.
[2]涂繼輝,余厚全,佘新平.基于ARM的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].長(zhǎng)江大學(xué)學(xué)報(bào)(自然科學(xué)版)理工卷,2010(2):89-91.TU Ji-hui,YU Hou-quan,SHE Xin-ping.Design and implement of an embedded video Mmonitoring system[J].Journal of Yangtze University(Natural Science Edition)Sci&Eng V,2010(2):89-91.
[3]張偉男,張溢華,唐倫,等.基于無線傳輸?shù)囊苿?dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].安防科技,2010(2):26-28.ZHANG Wei-nan,ZHANG Yi-hua,TANG Lun,et al.Design of mobile video monitor system transmitted over wireless[J].Security and Safety Technology Magazine,2010(2):26-28.
[4]陳書益,黃永慧.開源視頻服務(wù)器軟件MJPG-streamer的研究和應(yīng)用[J],電子設(shè)計(jì)工程,2012(5):173-176.CHEN Shu-yi,HUANG Yong-hui.Research and application of open source video server MJPG-streamer[J].Electronic Design Engineering,2012(5):173-176.
[5]伍儉,羅桂娥.基于B/S模式的嵌入式視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2010(4):74-76.WU Jian,LUO Gui E.Design of embedded viedo monitoring system based on B/Smodel[J].Microcomputer&Its Applications,2010(4):74-76.
[6]王剛,毛劍飛,田青,等.基于ARM11的無線視頻監(jiān)控系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011(8):18-22.WANG Gang,MAO Jian-Fei,TIAN Qing,et al.Wireless video surveillance system based on ARM11[J].Computer Systems&Applications,2011(8):18-22.
[7]郭巧云,許雪梅,李岸,等.基于ARM11的無線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2010(8):1786-1788.GUO Qiao-yun,XU Xue-mei,LI An,et al.Design of a wireless video monitoring system based on ARM11[J].Computer Measurement&Control,2010(8):1786-1788.
[8]Salim Beg,M.Khan,E.Video over wireless networks:A brief review [C]//Communication Systems Software and Middleware and Workshops,2008.COMSWARE 2008.3rd International Conference on,2008:692-698.
[9]張超.基于嵌入式linux的交通視頻采集傳輸系統(tǒng)[D].西安:長(zhǎng)安大學(xué),2013.