張偉
基于ARM遠程監控系統的設計與實現
張偉
選取了ARM9 處理器 S3C2410作為硬件平臺,以嵌入式 Linux 操作系統作為核心,介紹了硬件平臺的搭建,操作系統的選型,V4l2(Video For Linux 2)視頻采集的設計;通過 USB 攝像頭采集視頻信息、嵌入式處理器對完成數據的壓縮、傳輸以及控制,最終實現了視頻監控系統的主要功能。通過測試,視頻采集能夠滿足遠程客戶實時性要求,與以往的監控系統相比具有成本低、性能穩定、維護簡單等優點,滿足了對現有監控系統的要求。
嵌入式系統;V4l2;遠程監控;嵌入式Linux
視頻監控以其直觀、方便、信息內容豐富等特點在交通、安防、遙感探測等領域得到了廣泛的應用。嵌入式微處理器性能的不斷提高以及圖像處理技術、網絡技術的不斷發展,為嵌入式遠程視頻監控系統的實現奠定了基礎。基于ARM的嵌入式遠程監控系統具有體積小、性能穩定、使用方便、成本低等優點,它將成為新一代視頻監控系統的主流。隨著信息發展的智能化、網絡化,嵌入式系統必將獲得更大的發展[1]。因此,研究并設計一種嵌入式遠程監控系統,具有較為廣泛的實際意義。
基于ARM9的遠程監控系統集視頻采集、實時壓縮和網絡傳輸等功能為一體,同時在客戶端用應用程序進行實時播放,可以實現遠端客戶視頻的查看、瀏覽等功能。
1.1 系統的總體框架
本系統選用S3C2410處理器作為主控制芯片,內核為ARM920T。根據需要對Linux的內核進行裁減,加載USB攝像頭的驅動,首先,通過驅動 USB 攝像頭進行數據采集,然后,將采集到的圖像通過USB總線送給ARM9系統板,系統板利用Linux提供的Video 4 Linux API函數對USB攝像頭數據進行采集,再通過視頻流服務器上的相關插件對圖像進行壓縮處理,對壓縮的圖像通過USB總線送給USB網卡,最后,通過網線將視頻圖像傳送給遠程客戶端,在遠程客戶端上進行實時的顯示和控制,系統總體框架如圖1所示:

圖1 基于ARM9遠程監控系統的總體架構
1.2 硬件平臺的選取
1.2.1 處理器的選型
ARM處理器具有高性能、低功耗、低成本等顯著優點[2]。ARM微處理器眾多的芯片生產廠家、復雜多樣的內核結構,其中ARM9系列微處理器在低功耗、高性能特性方面表現的尤為突出。通過比較,最終選用ARM9系列微處理器。在確定ARM處理器的選型之后,最終選定了博創科技有限公司的ARM9開發板UP-TECH2410[3],其內核是SanSung公司的32位ARM920T處理器S3C2410。
1.2.2 嵌入式操作系統的選型
嵌入式操作系統主要對嵌入式系統的軟、硬件資源進行有效的管理、合理的調度及嚴格的控制。目前主流的嵌入式操作系統有: Linux、VxWorks、Symbain等。Linux在嵌入式開發方面的主要優勢有[4]:(1)Linux是開源代碼的,不存在黑箱技術;(2)Linux的內核小、效率高,更新速度快;(3)Linux是一個跨平臺的系統,可以支持幾十種CPU,且性能穩定,裁剪性較好;(4)Linux的平臺移植速度遠遠超過Java的開發環境等。
1.3 軟件平臺的搭建
(1)搭建ubuntu操作系統環境
①下載Vmware 6.5;
②安裝Vmware 6.5;
③在硬盤上預留30G空間;
④創建虛擬機;
⑤安裝ubuntu;
(2)更新ubuntu軟件源
①下載sources.list;
②cp sources.list/etc/apt //修改源服務器;
③apt-get update // 更新列表;
(3)搭建開發環境
①安裝 Visual Studio 2012
②安裝arm-linux-gcc
arm-linux-gcc-4.3.2.tar //下載
tar zxvf arm-linux-gcc-4.3.2.tar /tmp //解壓
(4)安裝局域網通信軟件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下為采集視頻、語音等數據提供API接口[6]。V4L2提供了兩種圖像采集方式,一種是內存映射方式(mmap),另一種是直接讀取方式(read)[7]。內存映射方式一般用于連續視頻數據的采集,直接讀取方式適用于靜態圖片數據的采集[8]。Linux通過內核的編譯來實現V4L2的功能,而V4L2是通過在文件“include/linux/videodev.h”中定義的數據來實現圖像的采集的,內核編譯的主要接口,如表1所示:

表1 V4l2規范中定義的Linux視頻處理接口
2.2 基于V4L2視頻采集
選用內存映射方式來采集視頻,通過V4L2接口進行視頻采集的過程如下:
(1)啟動視頻設備,初始化視頻采集的參數(包括視頻圖像的采集窗口、點陣大小以及幀格式等);
(2)查詢視頻設備的端口信息;
(3)為采集的視頻數據分別在用戶空間和內核空間申請幀緩沖區;
(4)啟動視頻采集;
(5)視頻采集完成后,應用程序從視頻緩沖區中獲取視頻數據,讀取并保存視頻數據;處理完成后釋放視頻幀緩沖區,等待為下一視頻采集服務。
(6)停止采集。
基于V4l2進行視頻采集的具體流程,如圖2所示:

圖2 基于V412視頻采集的流程
2.3 視頻采集的設計
2.3.1 初始化采集參數
Linux操作系統下,攝像頭被映射為 “/dev/video0”[9],用open函數打開這個設備文件,其文件描述符“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函數的定義
(1)打開視頻文件;
int ft=Open("/dev/video0",O_RDWR);
(2)查詢視頻設備;
Ioctl(ft_v4l2, Vid_Que_Cap, &cap)
(3)設置視頻采集的參數;
Ioctl (ft_v4l2, VIDIOC_S_SHP ,&shp)//設置圖像大小
Ioctl (ft_v4l2, VIDIOC_S_FORT, &fort) //設置幀格式
(4)申請視頻流數據的幀緩沖區;
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);// 將幀緩沖區的地址映射到用戶空間
(6)向視頻采集隊列中放入幀緩沖;
Ioctl (ft_v4l2, Vid_Que_uf, &buf)
(7)視頻流的采集;
Ioctl (ft_v4l2, Vid_Stream_On,&type);
(8)將采集數據的幀緩沖區從視頻采集輸出隊列中取出;
Ioctl (ft_v4l2, VIDIOC_DQBUF, &buf) ;
(9)將該幀緩沖區放入輸入隊列,以便再次采集;
Ioctl (ft_v4l2, VIDIOC_QBUF, &buf)
(10)停止視頻采集,關閉視頻設備(close(fd_v4l)),釋放視頻幀緩沖區(unmap)。
每個緩沖區都有一個與之對應的狀態標志變量,其中每一個比特代表一個狀態,狀體轉換如圖3所示:

圖3 緩沖區標志狀態轉換圖
本設計采用博創科技有限公司的ARM9開發板UP-TECH2410為硬件平臺,視頻采集設備選用USB攝像頭,通過網線接口將遠程客戶端與開發板平臺相連,遠程客戶端與視頻采集端分別安放在兩個不同的實驗室。通過軟硬件的聯合調試,基于ARM平臺下遠程監控系統運行正常,采集的視頻圖像流暢、性能穩定,能夠滿足監控系統的實時性要求,運行界面如圖4所示:

圖4 測試界面
本文在ARM 硬件平臺上利用Linux嵌入式實時操作系統完成了遠程視頻監控系統的設計。通過硬件平臺的搭建、視頻驅動的選型、視頻采集的設計、軟硬件的調試等環節,最終實現了遠程視頻監控系統的基本功能,通過測試,系統運行正常,視頻采集能夠滿足遠程客戶端的實時性要求。與以往的監控系統相比,本系統具有成本低、體積小、性能穩定、使用方便的優點,下一步的工作是對無線模塊的移植進行研究,實現基于ARM遠程監控系統的無線傳輸功能。
[1] 馮飛雨,于春梅,胡立鋒.基于S3C2440的嵌入式遠程視頻監控系統的設計[J].安防科技,2010,31(16): 3569-3572.
[2] 劉洪濤.ARM嵌入式體系結構與接口技術[M].北京: 人民郵電出版社,2012.
[3] 博創智聯,ARM9經典雙核心教學科研平臺[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下視頻監控系統的研究與設計[J].電腦編程技巧與維護,2010.18.
[8] 卞鋒.遠紅外焦平面探測器溫度測定技術的研究[D] .濟南:山東大學,2012.
[9] 甘勤操,陳西曲.基于V4L2的嵌入式視頻監控系統的研究[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-),男,陜西禮泉人,咸陽師范學院信息工程學院,講師,碩士,研究方向:可信計算、嵌入式系統與結構,咸陽,712000