張偉
基于ARM遠程監(jiān)控系統(tǒng)的設計與實現(xiàn)
張偉
選取了ARM9 處理器 S3C2410作為硬件平臺,以嵌入式 Linux 操作系統(tǒng)作為核心,介紹了硬件平臺的搭建,操作系統(tǒng)的選型,V4l2(Video For Linux 2)視頻采集的設計;通過 USB 攝像頭采集視頻信息、嵌入式處理器對完成數(shù)據(jù)的壓縮、傳輸以及控制,最終實現(xiàn)了視頻監(jiān)控系統(tǒng)的主要功能。通過測試,視頻采集能夠滿足遠程客戶實時性要求,與以往的監(jiān)控系統(tǒng)相比具有成本低、性能穩(wěn)定、維護簡單等優(yōu)點,滿足了對現(xiàn)有監(jiān)控系統(tǒng)的要求。
嵌入式系統(tǒng);V4l2;遠程監(jiān)控;嵌入式Linux
視頻監(jiān)控以其直觀、方便、信息內容豐富等特點在交通、安防、遙感探測等領域得到了廣泛的應用。嵌入式微處理器性能的不斷提高以及圖像處理技術、網(wǎng)絡技術的不斷發(fā)展,為嵌入式遠程視頻監(jiān)控系統(tǒng)的實現(xiàn)奠定了基礎?;贏RM的嵌入式遠程監(jiān)控系統(tǒng)具有體積小、性能穩(wěn)定、使用方便、成本低等優(yōu)點,它將成為新一代視頻監(jiān)控系統(tǒng)的主流。隨著信息發(fā)展的智能化、網(wǎng)絡化,嵌入式系統(tǒng)必將獲得更大的發(fā)展[1]。因此,研究并設計一種嵌入式遠程監(jiān)控系統(tǒng),具有較為廣泛的實際意義。
基于ARM9的遠程監(jiān)控系統(tǒng)集視頻采集、實時壓縮和網(wǎng)絡傳輸?shù)裙δ転橐惑w,同時在客戶端用應用程序進行實時播放,可以實現(xiàn)遠端客戶視頻的查看、瀏覽等功能。
1.1 系統(tǒng)的總體框架
本系統(tǒng)選用S3C2410處理器作為主控制芯片,內核為ARM920T。根據(jù)需要對Linux的內核進行裁減,加載USB攝像頭的驅動,首先,通過驅動 USB 攝像頭進行數(shù)據(jù)采集,然后,將采集到的圖像通過USB總線送給ARM9系統(tǒng)板,系統(tǒng)板利用Linux提供的Video 4 Linux API函數(shù)對USB攝像頭數(shù)據(jù)進行采集,再通過視頻流服務器上的相關插件對圖像進行壓縮處理,對壓縮的圖像通過USB總線送給USB網(wǎng)卡,最后,通過網(wǎng)線將視頻圖像傳送給遠程客戶端,在遠程客戶端上進行實時的顯示和控制,系統(tǒng)總體框架如圖1所示:
圖1 基于ARM9遠程監(jiān)控系統(tǒng)的總體架構
1.2 硬件平臺的選取
1.2.1 處理器的選型
ARM處理器具有高性能、低功耗、低成本等顯著優(yōu)點[2]。ARM微處理器眾多的芯片生產廠家、復雜多樣的內核結構,其中ARM9系列微處理器在低功耗、高性能特性方面表現(xiàn)的尤為突出。通過比較,最終選用ARM9系列微處理器。在確定ARM處理器的選型之后,最終選定了博創(chuàng)科技有限公司的ARM9開發(fā)板UP-TECH2410[3],其內核是SanSung公司的32位ARM920T處理器S3C2410。
1.2.2 嵌入式操作系統(tǒng)的選型
嵌入式操作系統(tǒng)主要對嵌入式系統(tǒng)的軟、硬件資源進行有效的管理、合理的調度及嚴格的控制。目前主流的嵌入式操作系統(tǒng)有: Linux、VxWorks、Symbain等。Linux在嵌入式開發(fā)方面的主要優(yōu)勢有[4]:(1)Linux是開源代碼的,不存在黑箱技術;(2)Linux的內核小、效率高,更新速度快;(3)Linux是一個跨平臺的系統(tǒng),可以支持幾十種CPU,且性能穩(wěn)定,裁剪性較好;(4)Linux的平臺移植速度遠遠超過Java的開發(fā)環(huán)境等。
1.3 軟件平臺的搭建
(1)搭建ubuntu操作系統(tǒng)環(huán)境
①下載Vmware 6.5;
②安裝Vmware 6.5;
③在硬盤上預留30G空間;
④創(chuàng)建虛擬機;
⑤安裝ubuntu;
(2)更新ubuntu軟件源
①下載sources.list;
②cp sources.list/etc/apt //修改源服務器;
③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基礎上進行了改進,它的作用是在Linux下為采集視頻、語音等數(shù)據(jù)提供API接口[6]。V4L2提供了兩種圖像采集方式,一種是內存映射方式(mmap),另一種是直接讀取方式(read)[7]。內存映射方式一般用于連續(xù)視頻數(shù)據(jù)的采集,直接讀取方式適用于靜態(tài)圖片數(shù)據(jù)的采集[8]。Linux通過內核的編譯來實現(xiàn)V4L2的功能,而V4L2是通過在文件“include/linux/videodev.h”中定義的數(shù)據(jù)來實現(xiàn)圖像的采集的,內核編譯的主要接口,如表1所示:
表1 V4l2規(guī)范中定義的Linux視頻處理接口
2.2 基于V4L2視頻采集
選用內存映射方式來采集視頻,通過V4L2接口進行視頻采集的過程如下:
(1)啟動視頻設備,初始化視頻采集的參數(shù)(包括視頻圖像的采集窗口、點陣大小以及幀格式等);
(2)查詢視頻設備的端口信息;
(3)為采集的視頻數(shù)據(jù)分別在用戶空間和內核空間申請幀緩沖區(qū);
(4)啟動視頻采集;
(5)視頻采集完成后,應用程序從視頻緩沖區(qū)中獲取視頻數(shù)據(jù),讀取并保存視頻數(shù)據(jù);處理完成后釋放視頻幀緩沖區(qū),等待為下一視頻采集服務。
(6)停止采集。
基于V4l2進行視頻采集的具體流程,如圖2所示:
圖2 基于V412視頻采集的流程
2.3 視頻采集的設計
2.3.1 初始化采集參數(shù)
Linux操作系統(tǒng)下,攝像頭被映射為 “/dev/video0”[9],用open函數(shù)打開這個設備文件,其文件描述符“fd_v4l2”,然后對描述符進行初始化。
(1)視頻窗口采集的設置
在攝像頭的取景范圍之內設置采集窗口的大小、起始坐標、寬度、高度等。
(2)主要變量的定義:
Pixel_format :圖像的格式;
Width:圖像的寬;
Height:圖像的高;
Size_image:圖像大小;
(3)設置視頻采集的幀率
通過partm中的V4L_2_capture型結構體capture設定即可。Capture_mode為采集模式,其為1時表示采集高質量圖片,為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 視頻采集過程及相關API函數(shù)的定義
(1)打開視頻文件;
int ft=Open("/dev/video0",O_RDWR);
(2)查詢視頻設備;
Ioctl(ft_v4l2, Vid_Que_Cap, &cap)
(3)設置視頻采集的參數(shù);
Ioctl (ft_v4l2, VIDIOC_S_SHP ,&shp)//設置圖像大小
Ioctl (ft_v4l2, VIDIOC_S_FORT, &fort) //設置幀格式
(4)申請視頻流數(shù)據(jù)的幀緩沖區(qū);
Ioctl(fd_v4l2, Vid_Req_Buf, &req)
(5) 內存映射;
Buffers[i].start = mmap (NULL, Buffers[i].length, PROT_READ | PROT_WRITE, MAP_SHARED, ft_v4l2, Buffers[i].offset);// 將幀緩沖區(qū)的地址映射到用戶空間
(6)向視頻采集隊列中放入幀緩沖;
Ioctl (ft_v4l2, Vid_Que_uf, &buf)
(7)視頻流的采集;
Ioctl (ft_v4l2, Vid_Stream_On,&type);
(8)將采集數(shù)據(jù)的幀緩沖區(qū)從視頻采集輸出隊列中取出;
Ioctl (ft_v4l2, VIDIOC_DQBUF, &buf) ;
(9)將該幀緩沖區(qū)放入輸入隊列,以便再次采集;
Ioctl (ft_v4l2, VIDIOC_QBUF, &buf)
(10)停止視頻采集,關閉視頻設備(close(fd_v4l)),釋放視頻幀緩沖區(qū)(unmap)。
每個緩沖區(qū)都有一個與之對應的狀態(tài)標志變量,其中每一個比特代表一個狀態(tài),狀體轉換如圖3所示:
圖3 緩沖區(qū)標志狀態(tài)轉換圖
本設計采用博創(chuàng)科技有限公司的ARM9開發(fā)板UP-TECH2410為硬件平臺,視頻采集設備選用USB攝像頭,通過網(wǎng)線接口將遠程客戶端與開發(fā)板平臺相連,遠程客戶端與視頻采集端分別安放在兩個不同的實驗室。通過軟硬件的聯(lián)合調試,基于ARM平臺下遠程監(jiān)控系統(tǒng)運行正常,采集的視頻圖像流暢、性能穩(wěn)定,能夠滿足監(jiān)控系統(tǒng)的實時性要求,運行界面如圖4所示:
圖4 測試界面
本文在ARM 硬件平臺上利用Linux嵌入式實時操作系統(tǒng)完成了遠程視頻監(jiān)控系統(tǒng)的設計。通過硬件平臺的搭建、視頻驅動的選型、視頻采集的設計、軟硬件的調試等環(huán)節(jié),最終實現(xiàn)了遠程視頻監(jiān)控系統(tǒng)的基本功能,通過測試,系統(tǒng)運行正常,視頻采集能夠滿足遠程客戶端的實時性要求。與以往的監(jiān)控系統(tǒng)相比,本系統(tǒng)具有成本低、體積小、性能穩(wěn)定、使用方便的優(yōu)點,下一步的工作是對無線模塊的移植進行研究,實現(xiàn)基于ARM遠程監(jiān)控系統(tǒng)的無線傳輸功能。
[1] 馮飛雨,于春梅,胡立鋒.基于S3C2440的嵌入式遠程視頻監(jiān)控系統(tǒng)的設計[J].安防科技,2010,31(16): 3569-3572.
[2] 劉洪濤.ARM嵌入式體系結構與接口技術[M].北京: 人民郵電出版社,2012.
[3] 博創(chuàng)智聯(lián),ARM9經(jīng)典雙核心教學科研平臺[EB/OL].[2014-3-15.]http://www.up-tech.com/?productst udy/typeid/2/tid/3.html.
[4] 羅怡桂.嵌入式Linux實踐教程[M].北京:清華大學出版社,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)的研究與設計[J].電腦編程技巧與維護,2010.18.
[8] 卞鋒.遠紅外焦平面探測器溫度測定技術的研究[D] .濟南:山東大學,2012.
[9] 甘勤操,陳西曲.基于V4L2的嵌入式視頻監(jiān)控系統(tǒng)的研究[J].武漢輕工大學學報,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)
國家自然科學基金(61102018);陜西省教育廳科研計劃項目(2013JK1203);咸陽師范學院專項科研基金項目(12XSYK701)
張 偉(1981-),男,陜西禮泉人,咸陽師范學院信息工程學院,講師,碩士,研究方向:可信計算、嵌入式系統(tǒng)與結構,咸陽,712000