《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)
基于ARM的遠(yuǎn)程視頻監(jiān)控系統(tǒng)的設(shè)計(jì)
中電網(wǎng)
摘要: 在ARM微處理器平臺(tái)上移植嵌入式Linux操作系統(tǒng),完成視頻采集任務(wù),并以服務(wù)器方式將圖像發(fā)送到網(wǎng)絡(luò),,從而實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,。系統(tǒng)以ARM9微處理器AT91RM9200為主處理器,采用普通USB攝像頭作為圖像采集設(shè)備,,構(gòu)建了一種可靠性好,、價(jià)格低廉和使用方便的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。
Abstract:
Key words :

0 引言

在國(guó)內(nèi)外市場(chǎng)上,,視頻監(jiān)控主要有模擬視頻監(jiān)控和數(shù)字視頻監(jiān)控,。前者技術(shù)發(fā)展已經(jīng)非常成熟,在實(shí)際工程應(yīng)用中得到廣泛應(yīng)用,,但只適合于小范圍的區(qū)域監(jiān)控,,而且系統(tǒng)的擴(kuò)展能力差,已經(jīng)不能適應(yīng)社會(huì)發(fā)展的需要,。后者又可分為基于PC 機(jī)的視頻監(jiān)控系統(tǒng)和基于嵌入式的視頻監(jiān)控系統(tǒng),。嵌入式視頻監(jiān)控系統(tǒng)與PC 視頻監(jiān)控系統(tǒng)相比,具有體積小,、功耗低,、性能穩(wěn)定的特點(diǎn),很適合于在銀行,、學(xué)校等公共場(chǎng)所的安全監(jiān)控,。采用USB 攝像頭作為視頻采集設(shè)備的嵌入式視頻監(jiān)控系統(tǒng),更由于其價(jià)格低廉,、通用性好且接口標(biāo)準(zhǔn)而備受青睞,。

本系統(tǒng)基于 ARM9 處理器和嵌入式Linux 操作系統(tǒng),利用USB 接口攝像頭實(shí)現(xiàn)數(shù)字圖像采集任務(wù),,同時(shí)直接將數(shù)據(jù)以視頻服務(wù)器方式發(fā)送到網(wǎng)絡(luò),,用戶可以直接通過(guò)Web 瀏覽器進(jìn)行遠(yuǎn)程實(shí)時(shí)監(jiān)控。

1 硬件平臺(tái)設(shè)計(jì)

1.1 微處理器模塊

平臺(tái)采用 ATMEL 公司的AT91RM9200 處理器,,AT91RM9200 是基于ARM920T 內(nèi)核的低功耗32 位RISC 微處理器,,其主頻為180MHz,處理速度快,,功能強(qiáng),,性價(jià)比高,能很好滿足嵌入式Linux 系統(tǒng)的需求,,還集成了包括USB2.0 主機(jī)端口和設(shè)備端口以及10/100MBase-T 以太網(wǎng)接口,。在此基礎(chǔ)上,配置了64M 的Nand Flash 用作存儲(chǔ)設(shè)備,,2×32M的32 為SDRAM,。處理器通過(guò)USB 接口連接攝像頭,,通過(guò)以太網(wǎng)接口連接網(wǎng)絡(luò)。系統(tǒng)硬件平臺(tái)功能如圖1 所示,。

圖 1 監(jiān)控系統(tǒng)硬件
圖 1 監(jiān)控系統(tǒng)硬件

1.2 USB 主設(shè)備模塊

AT91RM9200 片內(nèi)集成的USB 主機(jī)端口集成一個(gè)跟集線器,,并在下游端口集成收發(fā)器,它提供幾個(gè)半雙工高速串行通信端口,,速率為12Mbit/s,,最多可連接127 個(gè)USB 器件。本系統(tǒng)外擴(kuò)一個(gè)USB 主機(jī)端口來(lái)支持USB 攝像頭的訪問(wèn),。

系統(tǒng)采用的是應(yīng)用廣泛的選用羅技快看酷訊版攝像頭進(jìn)行數(shù)據(jù)采集,,這種攝像頭可以實(shí)現(xiàn)硬件JPEG 編碼,視頻數(shù)據(jù)由攝像頭采集,,一旦主控制器獲得視頻數(shù)據(jù)請(qǐng)求,,則通過(guò)USB接口讀取其緩存的數(shù)據(jù),并對(duì)圖像數(shù)據(jù)進(jìn)行壓縮編碼,,然后基于socket 編程來(lái)發(fā)送這些壓縮后的數(shù)據(jù)到服務(wù)器,。

1.3 以太網(wǎng)接口模塊

AT91RM9200 的在片以太網(wǎng)卡端口和網(wǎng)絡(luò)物理層芯片DM9161E 的MII 接口通信。片內(nèi)以太網(wǎng)卡通過(guò)DMA 通道進(jìn)行數(shù)據(jù)的發(fā)送,,不影響AT91RM9200 的正常運(yùn)行,。首先正確設(shè)置傳送控制寄存器和傳送地址寄存器的傳送數(shù)據(jù)塊字節(jié)數(shù)、數(shù)據(jù)塊存儲(chǔ)首地址等參數(shù),,隨后依次從指定數(shù)據(jù)存儲(chǔ)區(qū)地址讀取1024b 數(shù)據(jù),,送入內(nèi)部發(fā)送緩沖器中,由MAC 對(duì)數(shù)據(jù)進(jìn)行封裝發(fā)送,,同時(shí)記錄已傳送字節(jié)數(shù),,直到數(shù)據(jù)塊發(fā)送完畢。當(dāng)發(fā)送完一組數(shù)據(jù)后,,發(fā)出DMA中斷請(qǐng)求,,由AT91RM9200 進(jìn)行相應(yīng)的處理。整個(gè)網(wǎng)絡(luò)子系統(tǒng)電路由AT91RM9200 控制和調(diào)度,。

2 嵌入式Linux 開(kāi)發(fā)環(huán)境的建立

2.1 交叉編譯鏈的建立

嵌入式開(kāi)發(fā)與普通開(kāi)發(fā)有個(gè)顯著的不同是,,普通開(kāi)發(fā)是在本機(jī)開(kāi)發(fā)、調(diào)試,,本機(jī)運(yùn)行,,而嵌入式由于資源有限,不能直接在嵌入式目標(biāo)機(jī)上運(yùn)行開(kāi)發(fā)工具,,因此嵌入式開(kāi)發(fā)一般采用交叉編譯方式,,即在開(kāi)發(fā)主機(jī)上編譯目標(biāo)機(jī)上運(yùn)行的程序。交叉編譯鏈可以自己制作,也可以通過(guò)網(wǎng)絡(luò)下載別人已制作好的交叉編譯鏈直接使用,。本系統(tǒng)所用交叉編譯鏈版本是3.4.3,。

2.2 配置并編譯內(nèi)核

系統(tǒng)選用開(kāi)源的 Linux 2.6.14 版內(nèi)核作為操作系統(tǒng),以交叉編譯方式編譯,,即在普通PC機(jī)上運(yùn)行Fedora 8 環(huán)境下,,用交叉編譯鏈編譯在ARM 9 機(jī)器上運(yùn)行的Linux 內(nèi)核,。內(nèi)核用tftp 方式下載到開(kāi)發(fā)板,,然后解壓自引導(dǎo)。具體操作如下:

(1) 給內(nèi)核補(bǔ)丁,,下載Linux2.6.14 內(nèi)核源碼linux-2.6.14.tar.bz2 和AT91RM9200 補(bǔ)丁2.6.14-at91.patch.gz,,然后:

3 視頻采集的實(shí)現(xiàn)

3.1 USB 攝像頭驅(qū)動(dòng)

Linux 對(duì)于視頻采集設(shè)備的支持,是通過(guò)Video4Linux(V4L)實(shí)現(xiàn)的,,V4L 為視頻應(yīng)用程序提供了一套統(tǒng)一的API 函數(shù),,視頻應(yīng)用程序通過(guò)標(biāo)準(zhǔn)的API 接口實(shí)現(xiàn)與內(nèi)核和驅(qū)動(dòng)的通信,實(shí)現(xiàn)視頻設(shè)備的各種功能,。對(duì)于USB 接口攝像頭,,驅(qū)動(dòng)程序?qū)崿F(xiàn)了基本的I/O 接口函數(shù)open、close,、read,、write,實(shí)現(xiàn)了內(nèi)存映射功能函數(shù)mmap 和控制函數(shù)ioctl,,并對(duì)于中斷進(jìn)行了處理,。

Linux 中視頻采集的實(shí)現(xiàn),可以用read()函數(shù)直接讀取數(shù)據(jù),,也可以用mmap()函數(shù)通過(guò)內(nèi)存映射工作,。內(nèi)存映射方式直接將設(shè)備地址映射到內(nèi)存地址空間,使用方便,,效率更高,,因此本系統(tǒng)采用內(nèi)存方式獲取視頻數(shù)據(jù)。

本系統(tǒng)的設(shè)備控制函數(shù)ioctl 實(shí)現(xiàn)的主要設(shè)備控制命令有獲得攝像頭信息VEDIOCGCAP,,判斷獲取圖片是否成功VEDIOSYNC,,讀取圖片相關(guān)信息VEDIOCGPIC,以及獲取圖片VEDIOGETPIC,。

3.2 視頻數(shù)據(jù)采集

本系統(tǒng)數(shù)據(jù)采集程序也是基于 V4l 編寫應(yīng)用程序,,其基本流程首先通過(guò)open 系統(tǒng)調(diào)用打開(kāi)攝像頭設(shè)備,如果成功則繼續(xù)通過(guò)ioctl 函數(shù)命令(參數(shù)VEDIOCGCAP)獲取攝像頭相關(guān)信息,,ioctl 函數(shù)命令(VEDIOGETPIC)獲取圖像數(shù)據(jù),。

4 遠(yuǎn)程監(jiān)控的實(shí)現(xiàn)

4.1 BOA 服務(wù)器的建立

Web 服務(wù)器在本方案中采用了Linux 系統(tǒng)中常用的Boa,Boa 是一種非常小巧的Web服務(wù)器,其可執(zhí)行代碼只有大約60KB 左右,。Boa 支持CGI,,速度快和安全性好,很適合嵌入式系統(tǒng)使用,。使用時(shí)只需用已建好的交叉編譯鏈編譯,,然后修改配置文件boa.cONf,為Boa 創(chuàng)建需要的目錄/var/www/,、/var/log/boa/acces_log 和/var/log/boa/error_log,,以及將通用mime.types 拷貝到/etc 目錄下,即完成了BOA 的配置,。

4.2 遠(yuǎn)程視頻服務(wù)的實(shí)現(xiàn)

遠(yuǎn)程視頻服務(wù)基于 servfox/開(kāi)源軟件包,,servfox 流媒體服務(wù)器使用V4L 完成原始視頻圖像的獲取,然后把視頻圖像以MJPEG 的方式壓縮,,通過(guò)TCP 協(xié)議向網(wǎng)絡(luò)發(fā)送,。

復(fù)制 spcaview 軟件包的目錄http-java-applet 到Boa 的Web 服務(wù)器目錄下,啟動(dòng)boa 服務(wù),,再運(yùn)行命令,,#servfox –s 640x480 –w 7070.

即已完成視頻服務(wù)器的建立,在和ARM 開(kāi)發(fā)板連接的PC 機(jī)瀏覽器上,,輸入開(kāi)發(fā)板的IP 地址和Boa 服務(wù)器目錄下的網(wǎng)頁(yè)即可觀看攝像頭所采集的信息,。

5、結(jié)論

本文設(shè)計(jì)實(shí)現(xiàn)的嵌入式Linux 的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),,是一種低成本的網(wǎng)絡(luò)視頻監(jiān)控方案,,而且可以直接連入以太網(wǎng),通過(guò)瀏覽器即可觀看,,畫面流暢,,簡(jiǎn)易方便,具有廣泛的應(yīng)用價(jià)值,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。