?

一種基于ARM-Linux的Web遠程放射源實時視頻監控系統

2014-03-03 03:57何劍鋒何月順葉志翔
中國測試 2014年5期
關鍵詞:放射源驅動程序內核

何劍鋒,羅 敏,何月順,葉志翔

(1.核技術應用教育部工程研究中心,江西 南昌 330013;2.江西省計算技術研究所,江西 南昌 330002)

一種基于ARM-Linux的Web遠程放射源實時視頻監控系統

何劍鋒1,羅 敏2,何月順1,葉志翔1

(1.核技術應用教育部工程研究中心,江西 南昌 330013;2.江西省計算技術研究所,江西 南昌 330002)

針對放射源監控的實時性和網絡多媒體遠程訪問的新要求,提出一種基于嵌入式ARM-Linux有線和無線傳輸的B/S模式Web遠程放射源實時視頻監控系統。系統采用ARM920T內核的微控制器S3C2440版和UVC格式/YUV編碼標準USB攝像頭構建Web服務器端,詳細設計嵌入式Linux下攝像頭的驅動程序,分析視頻數據采集與傳輸的開源MJPG-Streamer視頻服務軟件,結合Vedio4Linux2接口和socket網絡編程,并將其移植到嵌入式Web服務器端。監控系統的測試表明:經過壓縮與編碼處理后其圖像數據流信息能穩定、可靠的顯示在監控終端的瀏覽器中,在放射源和核設備實時監控中取得優良的效果。

ARM-Linux;視頻;Web技術;放射源監控;移植

0 引 言

遠程視頻監控系統是應用現代計算機技術進行圖像采集、編/解碼、存儲、傳輸并通過計算機控制有關設備的監控系統。計算機網絡技術、圖像處理技術與通信技術的快速發展極大的推動了視頻監控技術的不斷更新。近年來,核技術被廣泛應用于工業、農業、醫療、重點實驗室及教學科研等各個領域,其放射源安全監控也越來越受到重視。在輻射監測技術日趨成熟的今天,人們已經可以利用儀表對有危險的、環境惡劣的采集工作實現遠程操作,大大降低危險性[1-2]。為了滿足放射源安全監控的實時性、可靠性、網絡多媒體遠程訪問等需求,本文設計并實現一種基于嵌入式ARM-Linux有線和無線傳輸的B/S模式Web遠程放射源實時視頻監控系統。

1 系統設計方案

系統的服務器端硬件解決方案由基于ARM920T內核的RISC-16/32微控制器S3C2440A構成的視頻信號處理傳輸模塊來完成,該模塊的接口帶有128M SDRAM,1G的Nand Flash,3通道的UART,3個USB Slave型接口、320×240分辨率的3.5英寸TFT真彩液晶觸摸屏等;USB輸出的數字攝像頭可實現VGA級(640×480)的壓縮視頻信號輸出[3],內置有專用DSP芯片對視頻信號處理與壓縮;服務器端用于采集視頻數據和網頁服務器的開發設計??蛻舳耸褂米詭g覽器的PC、智能手機或平板電腦等通過無線Wi-Fi或有線網進行數據傳輸,也可連接外網傳輸。

系統的軟件構架主要由驅動程序模塊、視頻數據采集模塊、嵌入式Web服務器模塊、無線傳輸模塊和視頻監控模塊等個模塊組成。其中驅動程序模塊主要實現在Linux下識別攝像頭和無線網卡設備;視頻數據采集模塊負責從USB攝像頭中獲取圖像信息且獲取過程符合Video4Linux接口標準,并采用MJPG-Streamer軟件設計和實現;嵌入式Web服務器模塊接收客戶端瀏覽器的連接請求并分析,通過訪問嵌入式平臺讀取視頻流信息;無線傳輸模塊通過Wi-Fi構建局域網,系統可在局域網內訪問網絡服務器。視頻監控模塊通過訪問嵌入式網絡服務器獲取視頻數據,實現視頻信號的接收、存儲及播放程序。

2 攝像頭驅動程序設計

目前,攝像頭主要有CCD(charge coupled device)和CMOS(complementary metal oxide semiconductor)兩種類型。由于CMOS的功耗要比CCD小,較CCD便宜,且滿足圖像質量要求,因此本系統采用輸出格式為UVC的攝像頭、YUV編碼方式、標準USB接口的CMOS攝像頭。針對不同攝像頭的驅動,將驅動程序分共性模塊和特性模塊,共性模塊包括設備注冊、設備初始化、設備卸載、上層接口函數等。特性模塊用于調用攝像頭設備的具體操作函數。當USB攝像頭設備插入時,共性模塊執行,并獲取攝像頭設備的型號和相關參數,根據參數確定該芯片的具體操作函數,掛載該設備驅動程序。

2.1 Linux設備驅動程序

Linux系統內核以設備文件方式通過調用接口函數使用底層的硬件設備[4-5]。上層應用程序通過獲得設備的文件描述符,然后調用如open()、close()、read()、write()、ioctl()等來操作設備。

USB設備驅動程序需要針對USB內核層和文件系統定義兩個不同的數據結構,分別用于提供信息和操作函數。主要包含描述自身特性的USB核心層數據結構模塊、設備初始化和卸載模塊、上層軟件接口模塊、數據傳輸模塊等。

1)描述自身特性的數據結構模塊,模塊定義了配置攝像頭硬件所需的參數和數據交換的接口方式。

2)設備初始化和卸載模塊,分別調用init_module()和cleanup_module()實現。并通過初始化函數和卸載函數完成設備的注冊和注銷,usb_init()函數中調用設備注冊函數usb_register(&usbcamer_driver);卸載模塊調用注銷函數usb_deregister(&usbcamer _driver)。

3)上層軟件接口模塊,主要是針對文件系統,應用程序把設備當成普通的設備文件進行訪問。通過填充file_operation數據結構實現USB設備的系統調用,采用 V4L協議規范,對攝像頭的DSP輸出視頻信號進行傳輸和相應的處理。主要完成open()、close()、read()、mmap()、loctl()等函數功能模塊。

2.2 驅動程序編譯與加載

Linux內核的編譯過程是通過內核源代碼根目錄和各個子目錄中的Makefile分級管理。由于Linux操作系統中對驅動編譯常存在靜態和動態兩種編譯方式,對于一個調試好的驅動程序而言,通常將其直接編譯到了內核中,在配置內核時就可以自由裁剪,即靜態編譯方式。將USB攝像頭驅動程序usbcamera編譯到內核的具體操作如下[6]:

1)將驅動程序選項加入到menuconfig的menu中以供配置內核時選擇該驅動模塊。在drivers/usb/ config.in文件中,配置在“$CONFIG_VIDEO_DEV”選項下。

2)根目錄下修改MAKEFILE。將“CC=gcc”改為“/opt/EmbedSky/4.4.3/bin/arm-gcc-linux”。保存使用該交叉編譯器。

3)配置內核編譯參數。在配置內核時(如“makemenuconfig”),選擇 Multimedia device下的 Video for linux,usb suppor目錄下選擇support for usb和選擇相應的攝像頭驅動模塊,保存退出。執行編譯命令make modules可編譯內核中所有配置為模塊的驅動程序,make modules命令完成后會在/driver/usb下生成sPCa5xx.o,sPCadecoder.o,sPCa_core.o文件。最后通過insmod掛載驅動模塊。

4)內核配置,完成了驅動程序的編譯和加載,需要配置內核,通過make menuconfig命令配置:Device Drivers →Multimedia devices →Video capture adapters→V4L USB devices→USB SPCA5XX Sunplus/Vimicro/sonix jpeg Cameras。配置完成后,保存配置單,重新編譯內核鏡像,并燒寫到ARM9視頻板,然后插入USB攝像頭,啟動系統,系統將自動識別該攝像頭,并在文件系統的“/dev”目錄下生成“video0”的設備名。

3 視頻數據采集模塊設計

視頻數據采集模塊主要用于將USB攝像頭所采集到的數據流讀出,并交由其他模塊處理,當攝像頭驅動程序加載完成后,需要添加Vedio4Linux模塊。Vedio4Linux(V4L)[6]是Linux中有關視頻設備的內核驅動程序,為視頻設備提供與應用程序的相關接口函數。在Linux中視頻設備作為文件形式進行讀寫,對應于/dev/video0。通過提供的API程序實現對/dev/ video0的各種操作。Vedio4Linux的主要數據結構包含基本信息capabilities,采集圖像屬性pictures,信號源屬性channels,捕獲區信息windows,利用mmap映射幀信息mbufs,內存映射mmaps等。Vedio4Linux視頻采集的流程如圖1所示。

圖1 V4L視頻采集流程圖

MJPG-Streamer可獲取網絡攝像頭的JPEG格式圖像信息,傳送到瀏覽器或移動設備。其主要是通過Vedio4Linux2接口,從單一輸入組件獲取圖像后傳輸到其他多個輸出組件使用的應用程序?!癕JPGStreamer”通過模塊化方式設計各個組件(plug-in),在設計中用戶根據自行需要選擇各個功能模塊。常用的組件有input_uvc輸入組件及output_http輸出組件。input_uvc.c文件中包含該組件的接口函數的定義,獲取視頻圖像數據,包含有提供給外部接口使用的函數。output_http輸出組件主要完實現了對客戶端的請求相應要求,發送信息返回給客戶端output_http輸出組件中的http.c文件內定義了服務器對客戶端請求的響應。其他相關組件包括input_control、input_file、input_testpICture、input_gspcavl、output_autofocus、output_file、out_viewer等。通過腳本文件start_uvc_yuv.sh中包含有執行語句#./start_uvc_yuv.sh,即使用編譯完成后的MJPG-Streamer可執行文件。

4 Boa軟件與CGI C庫的移植

Boa軟件是專門為嵌入式設備設計的Web服務器,以達到滿足嵌入式設備資源條件的目的。由于Boa服務器小巧、性能較高、且源碼開放、支持CGI編程而被廣泛采用[7]。而CGI(common gateway interface)稱為通用網關接口,可實現客戶端和服務器端信息的交互。CGI作為一種規范,可使用任何一種語言來編寫CGI程序[9]。下面主要闡述Boa軟件與CGI C庫的移植過程。

4.1 Boa軟件的移植

首先,從Boa的官方網站下載完畢后解壓到相應目錄:#tar xvfz Boa-0.94.13.tar.gz-C/opt/EmbedSky/。進入Boa解壓文件夾,修改src目錄下的Makefile文件:#cd/opt/EmedSky/Boa-0.94.13/src。將CC=gcc和CPP=gcc-E修改成CC=arm-linux-gcc,CPP=armlinux-g++-E保存退出即可。

其次,修改src/compat.h文件中120行為:#define TIMEZONE_OFFSET(foo)foo->tm_gmtoff。

最后,完成上述編譯條件的設置后即可編譯出Boa的可執行文件,并對可執行文件進行優化。通過執行配置#make arm-linux-strip Boa命令后,在文件系統中新建一個名為“Web”的目錄,/etc/目錄下新建一個“Boa”目錄,復制剛才移植的Boa可執行文件到sbin/目錄下,復制Boa的配置文件“Boa.conf”到文件系統的etc/Boa/目錄下。同時,修改配置Boa.conf文件。

4.2 CGI C庫的移植

首先,下載cgic庫后,解壓到“/opt/EmbedSky/”目錄。進入cgic205目錄修改Makefile文件參數,CFLAGS=-g-Wall;CC=arm-linux-gcc;AR=arm-linux-ae;RANLIB=arm-linux-ranlib;LIBS=-L./-lcgic等。同時,修改Makefile文件中install:libcgic.a語句:cp libcgic.a/opt/EmbedSky/4.3.3/arm-none-linuxgnueabi/libc/armv4t/lib;cp cgic.h/opt/EmbedSky/4.3.3/ arm-none-linux-gnueabi/libc/usr/include,以保證靜態庫的正確調用。

其次,完成makefile文件的修改后,需將CGIC庫移植到視頻信號處理板上,通過NFS掛載,將文件capture和測試腳本cgictest.cgi移植到NFS文件目錄的Web下。

最后,編寫cgi腳本執行,通過測試腳本cgictest. cgi以及編寫cgictest2.c編譯生成cgi腳本的過程來測試cgi。編寫CGI測試程序后,編譯文件:#armlinux-gcc-o cigctest2.cgi cgictest2.c。編譯完成后便會生成cgictest2.cgi腳本,使用chmod+x cgictest2.cgi修改測試文件權限。

5 遠程視頻監控系統應用

測試環境說明:測試環境包括硬件環境、軟件環境及放射源環境。1)硬件環境:S3C2440 ARM視頻板及組件,UVC輸出格式攝像頭,Tenda A6無線路由器,TL-WN321G+型號USB無線網卡,PC機,智能手機或iPad;2)軟件環境:嵌入式Linux操作系統,安裝有視頻采集插件瀏覽器。測試方法是通過有線模塊或無線模塊,在PC機或智能手機上連接該網絡,通過瀏覽器訪問開發板的Boa服務器中網頁,進行視頻監控;3)放射源環境:監控具有鉛箱體屏蔽防護條件下60Co、137Cs、241Am、232Th等放射源。

視頻監控測試過程:開啟無線模塊,ARM視頻板和PC機連接無線模塊,同時將USB攝像裝置連接至視頻板,開啟視頻服務器軟件,在PC機或智能手機的瀏覽器上輸入開發板IP、端口及監控頁面地址,實現遠程B/S模式的監控。

測試設備中本文對攝像頭采取特殊的結構設計保護,且放射源均放入在防護箱體內,其目的是為了避免輻射對視頻監控設備輻射敏感器件的損傷[10-11]。測試過程分別通過PC機瀏覽器實現遠程視頻監控,安卓智能手機登入Wi-Fi模塊并通過瀏覽器實現視頻監控的效果。測試結果表明該系統將嵌入式和無線網絡技術相結合,視頻監控與輻射劑量監測相結合,通過無線模塊傳輸,實現了B/S模式的網絡視頻監控效果,并可通過客戶端PC機登入頁面實現監控,同時可使用智能手機登入監控頁面實現監控。

6 結束語

本文提出一種基于嵌入式ARM-Linux有線和無線傳輸的B/S模式Web遠程放射源實時視頻監控系統。該系統很好地實現了無線監控,可完整保存監控現場信息,且能夠擺脫有線的束縛;同時,基于Web遠程放射源實時視頻監控系統的便捷性也得到了有效的提升。

[1]孫釗.基于WinCE的遠程輻射監控終端的設計[D].南昌:東華理工大學,2012.

[2]趙書朵,諶海云,高鳳水,等.基于ARM的嵌入式多路遠程視頻監控系統的設計[J].中國測試,2010,36(10):66-68.

[3]Samsung Corp.User Manual S3C2440A[EB/OL].http:// wwv.Samsung.com,2008.

[4]張光建,劉政.嵌入式Linux驅動程序開發實例教程[M].北京:清華大學出版社,2011.

[5]何劍鋒,李祥,何月順.基于S3C2410的嵌入式Linux下OLED模塊驅動設計[J].液晶與顯示,2010(5):90-93.

[6]驢性天下.V4L和V4L2的區別[EB/OL].http://blog.csdn. net/dulin201004/article/details/7864762,2012.

[7]百度百科.Boa服務器 [EB/OL].http://baike.baidu.com/ view/2373126.htm,2012.

[8]dfhf2007.嵌入式CGI開發之旅[EB/OL].http://blog.chinaunix.net/uid-24810608-id-330976.html,2011.

[9]Gordon D.Automatic motion detection in reconnaissance imagery and other applications of real time orthorectification[J].Airborne Intelligence,Surveillance,Reconnaissance(ISR)Systems and Applications II,2005(6):5-7.

[10]羅霞,陳琳,趙小鵬.一種視頻監控設備防輻射結構設計[C]∥第十六屆全國核電子學與核探測技術學術年會,2012:164-167.

[11]毛從吉,毋琦.可用于遠程輻射探測系統的數據采集與監控平臺的開發 [J].核電子學與核探測技術,2012(6):728-731.

System designing of web remote real-time video radioactive monitoring based on ARM-Linux

HE Jian-feng1,LUO Min2,HE Yue-shun1,YE Zhi-xiang1
(1.Engineering Research Center of Nuclear Technology Application,Ministry of Education,Nanchang 330013,China;2.Jiangxi Institute of Computing Technology,Nanchang 330002,China)

For the new requirements for radioactive sources monitoring such as real-time,networked multimedia remote access etc.,the radioactive sources real-time video monitoring system of B/S model with remote web access is presented,which is based on wired and wireless transmission of the embedded ARM-Linux.It uses the S3C2440 controller board with ARM920T core and USB camera of UVC format and YUV coding to build web server,the camera driver on embedded Linux is designed in detail,the video data acquisition and the open source MJPG-Streamer video service software are analyzed,and the port of Video4Linux2 and the network programming of socket are combined and ported into the embedded web server.The monitoring system test results show that the image data flow information can display stably and reliably on the monitoring terminal browser after compressing and encoding process,and achieve excellent results on the real time monitoring of the radioactive sources and the nuclear equipments.

ARM-Linux;video;Web technology;radioactive monitoring;porting

TL929;X837;TP334.2+5;TP391.413

:A

:1674-5124(2014)05-0100-04

10.11857/j.issn.1674-5124.2014.05.026

2014-02-23;

:2014-04-17

國家自然科學基金項目(11365001);江西省自然科學基金項目(20114BA211026);江西省教育廳科學技術研究項目(GJJ13464);核技術應用教育部工程研究中心開放基金項目(HJSYB2011-08)

何劍鋒(1977-),男,江西婺源縣人,副教授,博士,研究方向為嵌入式系統應用開發、核數據采集與信號處理。

猜你喜歡
放射源驅動程序內核
寧夏銥-192放射源輻射事故調查及分析
一起銫-137放射源失控事故應急監測探討
多內核操作系統綜述①
基于梯度上升算法的丟失放射源搜尋方法
強化『高新』內核 打造農業『硅谷』
活化非遺文化 承啟設計內核
阻止Windows Update更新驅動程序
微軟發布新Edge瀏覽器預覽版下載換裝Chrome內核
計算機硬件設備驅動程序分析
準單色X射線機替代241Am放射源的測厚應用研究
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合