張偉
基于ARM遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
張偉
選取了ARM9 處理器 S3C2410作為硬件平臺(tái),以嵌入式 Linux 操作系統(tǒng)作為核心,介紹了硬件平臺(tái)的搭建,操作系統(tǒng)的選型,V4l2(Video For Linux 2)視頻采集的設(shè)計(jì);通過(guò) USB 攝像頭采集視頻信息、嵌入式處理器對(duì)完成數(shù)據(jù)的壓縮、傳輸以及控制,最終實(shí)現(xiàn)了視頻監(jiān)控系統(tǒng)的主要功能。通過(guò)測(cè)試,視頻采集能夠滿足遠(yuǎn)程客戶實(shí)時(shí)性要求,與以往的監(jiān)控系統(tǒng)相比具有成本低、性能穩(wěn)定、維護(hù)簡(jiǎn)單等優(yōu)點(diǎn),滿足了對(duì)現(xiàn)有監(jiān)控系統(tǒng)的要求。
嵌入式系統(tǒng);V4l2;遠(yuǎn)程監(jiān)控;嵌入式Linux
視頻監(jiān)控以其直觀、方便、信息內(nèi)容豐富等特點(diǎn)在交通、安防、遙感探測(cè)等領(lǐng)域得到了廣泛的應(yīng)用。嵌入式微處理器性能的不斷提高以及圖像處理技術(shù)、網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,為嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)奠定了基礎(chǔ)。基于ARM的嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)具有體積小、性能穩(wěn)定、使用方便、成本低等優(yōu)點(diǎn),它將成為新一代視頻監(jiān)控系統(tǒng)的主流。隨著信息發(fā)展的智能化、網(wǎng)絡(luò)化,嵌入式系統(tǒng)必將獲得更大的發(fā)展[1]。因此,研究并設(shè)計(jì)一種嵌入式遠(yuǎn)程監(jiān)控系統(tǒng),具有較為廣泛的實(shí)際意義。
基于ARM9的遠(yuǎn)程監(jiān)控系統(tǒng)集視頻采集、實(shí)時(shí)壓縮和網(wǎng)絡(luò)傳輸?shù)裙δ転橐惑w,同時(shí)在客戶端用應(yīng)用程序進(jìn)行實(shí)時(shí)播放,可以實(shí)現(xiàn)遠(yuǎn)端客戶視頻的查看、瀏覽等功能。
1.1 系統(tǒng)的總體框架
本系統(tǒng)選用S3C2410處理器作為主控制芯片,內(nèi)核為ARM920T。根據(jù)需要對(duì)Linux的內(nèi)核進(jìn)行裁減,加載USB攝像頭的驅(qū)動(dòng),首先,通過(guò)驅(qū)動(dòng) USB 攝像頭進(jìn)行數(shù)據(jù)采集,然后,將采集到的圖像通過(guò)USB總線送給ARM9系統(tǒng)板,系統(tǒng)板利用Linux提供的Video 4 Linux API函數(shù)對(duì)USB攝像頭數(shù)據(jù)進(jìn)行采集,再通過(guò)視頻流服務(wù)器上的相關(guān)插件對(duì)圖像進(jìn)行壓縮處理,對(duì)壓縮的圖像通過(guò)USB總線送給USB網(wǎng)卡,最后,通過(guò)網(wǎng)線將視頻圖像傳送給遠(yuǎn)程客戶端,在遠(yuǎn)程客戶端上進(jìn)行實(shí)時(shí)的顯示和控制,系統(tǒng)總體框架如圖1所示:
圖1 基于ARM9遠(yuǎn)程監(jiān)控系統(tǒng)的總體架構(gòu)
1.2 硬件平臺(tái)的選取
1.2.1 處理器的選型
ARM處理器具有高性能、低功耗、低成本等顯著優(yōu)點(diǎn)[2]。ARM微處理器眾多的芯片生產(chǎn)廠家、復(fù)雜多樣的內(nèi)核結(jié)構(gòu),其中ARM9系列微處理器在低功耗、高性能特性方面表現(xiàn)的尤為突出。通過(guò)比較,最終選用ARM9系列微處理器。在確定ARM處理器的選型之后,最終選定了博創(chuàng)科技有限公司的ARM9開發(fā)板UP-TECH2410[3],其內(nèi)核是SanSung公司的32位ARM920T處理器S3C2410。
1.2.2 嵌入式操作系統(tǒng)的選型
嵌入式操作系統(tǒng)主要對(duì)嵌入式系統(tǒng)的軟、硬件資源進(jìn)行有效的管理、合理的調(diào)度及嚴(yán)格的控制。目前主流的嵌入式操作系統(tǒng)有: Linux、VxWorks、Symbain等。Linux在嵌入式開發(fā)方面的主要優(yōu)勢(shì)有[4]:(1)Linux是開源代碼的,不存在黑箱技術(shù);(2)Linux的內(nèi)核小、效率高,更新速度快;(3)Linux是一個(gè)跨平臺(tái)的系統(tǒng),可以支持幾十種CPU,且性能穩(wěn)定,裁剪性較好;(4)Linux的平臺(tái)移植速度遠(yuǎn)遠(yuǎn)超過(guò)Java的開發(fā)環(huán)境等。
1.3 軟件平臺(tái)的搭建
(1)搭建ubuntu操作系統(tǒng)環(huán)境
①下載Vmware 6.5;
②安裝Vmware 6.5;
③在硬盤上預(yù)留30G空間;
④創(chuàng)建虛擬機(jī);
⑤安裝ubuntu;
(2)更新ubuntu軟件源
①下載sources.list;
②cp sources.list/etc/apt //修改源服務(wù)器;
③apt-get update // 更新列表;
(3)搭建開發(fā)環(huán)境
①安裝 Visual Studio 2012
②安裝arm-linux-gcc
arm-linux-gcc-4.3.2.tar //下載
tar zxvf arm-linux-gcc-4.3.2.tar /tmp //解壓
(4)安裝局域網(wǎng)通信軟件ipmsg
①下載g2ipmsg-0.9.6.tar.gz
(http://www.ipmsg.org/index.html.en)
②tar zxvf g2ipmsg-0.9.6.tar.gz
③./configure--prefix=/usr --sysconfdir=/etc --enable-syst ray
④make
⑤make install
⑥Reset
2.1 V4L2介紹
V4L2[5](Video for Linux two)是在V4L基礎(chǔ)上進(jìn)行了改進(jìn),它的作用是在Linux下為采集視頻、語(yǔ)音等數(shù)據(jù)提供API接口[6]。V4L2提供了兩種圖像采集方式,一種是內(nèi)存映射方式(mmap),另一種是直接讀取方式(read)[7]。內(nèi)存映射方式一般用于連續(xù)視頻數(shù)據(jù)的采集,直接讀取方式適用于靜態(tài)圖片數(shù)據(jù)的采集[8]。Linux通過(guò)內(nèi)核的編譯來(lái)實(shí)現(xiàn)V4L2的功能,而V4L2是通過(guò)在文件“include/linux/videodev.h”中定義的數(shù)據(jù)來(lái)實(shí)現(xiàn)圖像的采集的,內(nèi)核編譯的主要接口,如表1所示:
表1 V4l2規(guī)范中定義的Linux視頻處理接口
2.2 基于V4L2視頻采集
選用內(nèi)存映射方式來(lái)采集視頻,通過(guò)V4L2接口進(jìn)行視頻采集的過(guò)程如下:
(1)啟動(dòng)視頻設(shè)備,初始化視頻采集的參數(shù)(包括視頻圖像的采集窗口、點(diǎn)陣大小以及幀格式等);
(2)查詢視頻設(shè)備的端口信息;
(3)為采集的視頻數(shù)據(jù)分別在用戶空間和內(nèi)核空間申請(qǐng)幀緩沖區(qū);
(4)啟動(dòng)視頻采集;
(5)視頻采集完成后,應(yīng)用程序從視頻緩沖區(qū)中獲取視頻數(shù)據(jù),讀取并保存視頻數(shù)據(jù);處理完成后釋放視頻幀緩沖區(qū),等待為下一視頻采集服務(wù)。
(6)停止采集。
基于V4l2進(jìn)行視頻采集的具體流程,如圖2所示:
圖2 基于V412視頻采集的流程
2.3 視頻采集的設(shè)計(jì)
2.3.1 初始化采集參數(shù)
Linux操作系統(tǒng)下,攝像頭被映射為 “/dev/video0”[9],用open函數(shù)打開這個(gè)設(shè)備文件,其文件描述符“fd_v4l2”,然后對(duì)描述符進(jìn)行初始化。
(1)視頻窗口采集的設(shè)置
在攝像頭的取景范圍之內(nèi)設(shè)置采集窗口的大小、起始坐標(biāo)、寬度、高度等。
(2)主要變量的定義:
Pixel_format :圖像的格式;
Width:圖像的寬;
Height:圖像的高;
Size_image:圖像大??;
(3)設(shè)置視頻采集的幀率
通過(guò)partm中的V4L_2_capture型結(jié)構(gòu)體capture設(shè)定即可。Capture_mode為采集模式,其為1時(shí)表示采集高質(zhì)量圖片,為0表示一般圖片。
STRUCT v4l2_stream_parm
{ ENUM v4l2_buf_type;
UNION
{ struct v4l2_Capture_mode capture;
struct v4l2_Output_parm output;
USR Raw_data[240];
} partm;
};
2.3.2 視頻采集過(guò)程及相關(guān)API函數(shù)的定義
(1)打開視頻文件;
int ft=Open("/dev/video0",O_RDWR);
(2)查詢視頻設(shè)備;
Ioctl(ft_v4l2, Vid_Que_Cap, &cap)
(3)設(shè)置視頻采集的參數(shù);
Ioctl (ft_v4l2, VIDIOC_S_SHP ,&shp)//設(shè)置圖像大小
Ioctl (ft_v4l2, VIDIOC_S_FORT, &fort) //設(shè)置幀格式
(4)申請(qǐng)視頻流數(shù)據(jù)的幀緩沖區(qū);
Ioctl(fd_v4l2, Vid_Req_Buf, &req)
(5) 內(nèi)存映射;
Buffers[i].start = mmap (NULL, Buffers[i].length, PROT_READ | PROT_WRITE, MAP_SHARED, ft_v4l2, Buffers[i].offset);// 將幀緩沖區(qū)的地址映射到用戶空間
(6)向視頻采集隊(duì)列中放入幀緩沖;
Ioctl (ft_v4l2, Vid_Que_uf, &buf)
(7)視頻流的采集;
Ioctl (ft_v4l2, Vid_Stream_On,&type);
(8)將采集數(shù)據(jù)的幀緩沖區(qū)從視頻采集輸出隊(duì)列中取出;
Ioctl (ft_v4l2, VIDIOC_DQBUF, &buf) ;
(9)將該幀緩沖區(qū)放入輸入隊(duì)列,以便再次采集;
Ioctl (ft_v4l2, VIDIOC_QBUF, &buf)
(10)停止視頻采集,關(guān)閉視頻設(shè)備(close(fd_v4l)),釋放視頻幀緩沖區(qū)(unmap)。
每個(gè)緩沖區(qū)都有一個(gè)與之對(duì)應(yīng)的狀態(tài)標(biāo)志變量,其中每一個(gè)比特代表一個(gè)狀態(tài),狀體轉(zhuǎn)換如圖3所示:
圖3 緩沖區(qū)標(biāo)志狀態(tài)轉(zhuǎn)換圖
本設(shè)計(jì)采用博創(chuàng)科技有限公司的ARM9開發(fā)板UP-TECH2410為硬件平臺(tái),視頻采集設(shè)備選用USB攝像頭,通過(guò)網(wǎng)線接口將遠(yuǎn)程客戶端與開發(fā)板平臺(tái)相連,遠(yuǎn)程客戶端與視頻采集端分別安放在兩個(gè)不同的實(shí)驗(yàn)室。通過(guò)軟硬件的聯(lián)合調(diào)試,基于ARM平臺(tái)下遠(yuǎn)程監(jiān)控系統(tǒng)運(yùn)行正常,采集的視頻圖像流暢、性能穩(wěn)定,能夠滿足監(jiān)控系統(tǒng)的實(shí)時(shí)性要求,運(yùn)行界面如圖4所示:
圖4 測(cè)試界面
本文在ARM 硬件平臺(tái)上利用Linux嵌入式實(shí)時(shí)操作系統(tǒng)完成了遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)。通過(guò)硬件平臺(tái)的搭建、視頻驅(qū)動(dòng)的選型、視頻采集的設(shè)計(jì)、軟硬件的調(diào)試等環(huán)節(jié),最終實(shí)現(xiàn)了遠(yuǎn)程視頻監(jiān)控系統(tǒng)的基本功能,通過(guò)測(cè)試,系統(tǒng)運(yùn)行正常,視頻采集能夠滿足遠(yuǎn)程客戶端的實(shí)時(shí)性要求。與以往的監(jiān)控系統(tǒng)相比,本系統(tǒng)具有成本低、體積小、性能穩(wěn)定、使用方便的優(yōu)點(diǎn),下一步的工作是對(duì)無(wú)線模塊的移植進(jìn)行研究,實(shí)現(xiàn)基于ARM遠(yuǎn)程監(jiān)控系統(tǒng)的無(wú)線傳輸功能。
[1] 馮飛雨,于春梅,胡立鋒.基于S3C2440的嵌入式遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].安防科技,2010,31(16): 3569-3572.
[2] 劉洪濤.ARM嵌入式體系結(jié)構(gòu)與接口技術(shù)[M].北京: 人民郵電出版社,2012.
[3] 博創(chuàng)智聯(lián),ARM9經(jīng)典雙核心教學(xué)科研平臺(tái)[EB/OL].[2014-3-15.]http://www.up-tech.com/?productst udy/typeid/2/tid/3.html.
[4] 羅怡桂.嵌入式Linux實(shí)踐教程[M].北京:清華大學(xué)出版社,2011.
[5] Video for Linux resources[R/OL].[2014-05-21]. http://www.exploits.org/v4l/.
[6] SCHIMCK M H, DIRKS Bill. Video for Linux two API specification :draft 0.12[S/OL].[2002-12-01]. http://www.limuxtv.org
[7] 洪毅虹,曹茜.Linux下視頻監(jiān)控系統(tǒng)的研究與設(shè)計(jì)[J].電腦編程技巧與維護(hù),2010.18.
[8] 卞鋒.遠(yuǎn)紅外焦平面探測(cè)器溫度測(cè)定技術(shù)的研究[D] .濟(jì)南:山東大學(xué),2012.
[9] 甘勤操,陳西曲.基于V4L2的嵌入式視頻監(jiān)控系統(tǒng)的研究[J].武漢輕工大學(xué)學(xué)報(bào),2014(6):61-63.
Design and Implementation of Remote Monitoring System Based on ARM
Zhang Wei
(School of Information Engineering, XianYang Normal University,Xianyang712000,China)
The remote monitoring system is designed based on ARM which selects the ARM9 S3C2410 processor as the hardware platform and the embedded Linux operation system is used as the core. It introduces the construction of the hardware platform, selection of the operating system, and the design of V4l2(Video For Linux 2) video acquisition. Finally the main function of the video monitoring system was realized by using the USB camera to collect video information and using the embedded processor to complete data compression, transmission and control. Through testing, video acquisition can satisfy the remote client requirements of real-time. Compared with the previous monitoring system, it has advantages such as low cost, stable performance, simple maintenance and so on, and it satisfy the requirement of the existing monitoring system.
Embedded System; Video for Linux 2; Remote Monitoring; Embedded Linux
TP319
A
1007-757X(2014)10-0001-03
2014.06.18)
國(guó)家自然科學(xué)基金(61102018);陜西省教育廳科研計(jì)劃項(xiàng)目(2013JK1203);咸陽(yáng)師范學(xué)院專項(xiàng)科研基金項(xiàng)目(12XSYK701)
張 偉(1981-),男,陜西禮泉人,咸陽(yáng)師范學(xué)院信息工程學(xué)院,講師,碩士,研究方向:可信計(jì)算、嵌入式系統(tǒng)與結(jié)構(gòu),咸陽(yáng),712000