一、引言
應(yīng)用嵌入式網(wǎng)絡(luò)技術(shù)的監(jiān)控系統(tǒng)是監(jiān)控領(lǐng)域最新的發(fā)展趨勢,嵌入式網(wǎng)絡(luò)監(jiān)控系統(tǒng)是電子技術(shù)、計(jì)算機(jī)技術(shù)、通信技術(shù)和自動(dòng)化技術(shù)快速發(fā)展并相互結(jié)合的高新技術(shù)產(chǎn)品,嵌入式網(wǎng)絡(luò)技術(shù)改變以往的監(jiān)控系統(tǒng)體系結(jié)構(gòu),滿足了現(xiàn)代監(jiān)控系統(tǒng)的可擴(kuò)展性、分布式、實(shí)時(shí)性等,可廣泛應(yīng)用在電信、電力、交通、銀行、水利、智能大廈等領(lǐng)域。正是在這一背景下,本文設(shè)計(jì)了一種嵌入式網(wǎng)絡(luò)化視頻監(jiān)控系統(tǒng),該系統(tǒng)在32位高性能嵌入式處理器和專用視頻壓縮芯片的硬件平臺上,采用MPEG-4編碼技術(shù),嵌入式Linux操作系統(tǒng)和流媒體技術(shù)進(jìn)行設(shè)計(jì)。利用本系統(tǒng)可以進(jìn)行網(wǎng)絡(luò)數(shù)字化視頻監(jiān)控,具有體積小、圖像質(zhì)量穩(wěn)定、遠(yuǎn)距離監(jiān)控等優(yōu)點(diǎn),具有良好的應(yīng)用與發(fā)展前景。 本文從視頻監(jiān)控技術(shù)的發(fā)展歷史和嵌入式系統(tǒng)的現(xiàn)狀入手,分析了嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)相關(guān)技術(shù),對通用的嵌入式處理器和專用視頻壓縮芯片進(jìn)行了深入的研究,給出了整個(gè)系統(tǒng)的設(shè)計(jì)方案和功能規(guī)劃。基于上面的背景和對市場進(jìn)行深入調(diào)查取證,研究了目前流行的嵌入式系統(tǒng)和MPEG-4專用視頻壓縮芯片方案,在嵌入式系統(tǒng)方面確定了在AT91RM9200芯片上構(gòu)建嵌入式Web服務(wù)器的解決方案。
二、系統(tǒng)的總體設(shè)計(jì)
整個(gè)網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)采用C/S結(jié)構(gòu),從主體上分為兩部分:服務(wù)器端和客戶端。服務(wù)器端主要包括嵌入式處理器、攝像頭及其他外圍輔助設(shè)備,同時(shí)還包含運(yùn)行在嵌入式平臺上的采集、壓縮與傳輸程序;客戶端則是普通PC機(jī),通過它進(jìn)行圖像接收與回放。網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的基本處理機(jī)理,即前端的視頻監(jiān)控服務(wù)器從現(xiàn)場的攝像頭捕獲實(shí)時(shí)的視頻信息,壓縮處理后再通過以太網(wǎng)傳輸?shù)竭h(yuǎn)端的監(jiān)控終端上。
系統(tǒng)的整體結(jié)構(gòu)如圖1所示,視頻圖像采集和打包發(fā)送在服務(wù)器端完成,圖像的接收與回放將在客戶端完成。
圖1、系統(tǒng)結(jié)構(gòu)圖
三、系統(tǒng)的硬件設(shè)計(jì)
系統(tǒng)采用模塊化設(shè)計(jì)方案,主要包括以下幾個(gè)模塊:主控制器模塊、存儲電路模塊、外圍接口電路模塊、電源和復(fù)位電路,如圖2所示。
圖2、系統(tǒng)硬件結(jié)構(gòu)圖
1、AT91RM9200主控器模塊
主控器模塊是整個(gè)系統(tǒng)的核心,選用的是ATMEL公司的AT91RM9200。它是一款基于ARM920T 核的32位微控制器。該處理器最高運(yùn)行頻率可達(dá)到200MPS,它的低功耗、精簡和全靜態(tài)設(shè)計(jì)特別適合于對成本和功耗敏感的應(yīng)用。AT91RM9200提供了豐富的片內(nèi)資源,支持Linux,是本系統(tǒng)的合適選擇。它能完成整個(gè)系統(tǒng)的調(diào)度工作,在系統(tǒng)上電時(shí)配置所有需工作的芯片的功能寄存器,完成視頻流的編碼,并通過以太網(wǎng)控制器控制物理層芯片發(fā)送視頻碼流。
AT91RM9200微處理器最高主頻為180 MHz,其雙向、32位外部數(shù)據(jù)總線支持8/16/32位數(shù)據(jù)寬度,26位地址總線可以對最大64 MB空間進(jìn)行尋址。片內(nèi)集成了非常豐富的外圍功能模塊,包括內(nèi)存管理單元(MMU)、內(nèi)部包含16 KB的SRAM和128 KB的ROM,16 KB的數(shù)據(jù)緩存以及16 KB的指令緩存。其外部總線接口控制器(EBI),支持SDRAM,靜態(tài)存儲器,Burst FLASH以及Compact FLASH。為了提高系統(tǒng)性能還擴(kuò)展了以下外設(shè);增強(qiáng)的時(shí)鐘發(fā)生器與電源管理控制器(PMC);系統(tǒng)定時(shí)器(ST);實(shí)時(shí)時(shí)鐘(RTC);高級中斷控制器(AIC);4個(gè)32位PIO控制器;20通道的外設(shè)數(shù)據(jù)控制器(PDC);10/100兆Base-T型以太網(wǎng)卡接口;4個(gè)通用同步/異步串行收發(fā)器(UASRT)以及JTAG/ICE接口等。
在系統(tǒng)中AT91RM9200需要1.8 V和3.3 V電源,另外,大部分外圍器件需要3.3 V電源,小部分外圍器件還需要5 V電源,假設(shè)輸入電壓為5 V直流穩(wěn)壓電源。為了得到可靠的3.3 V電壓,此處選用的電壓轉(zhuǎn)換芯片是NCPlll7ST33T3,它的輸入電壓為5 V,輸出電壓為3.3 V,最大輸出電流為0.8 A。同樣,為了得到可靠的1.8 V電壓,選用NCPlll7STl8T3,它的輸入電壓為5 V,輸出電壓為1.8 V,最大輸出電流為0.8 A。由于3.3 V和1.8 V屬于NCPlll7系列的2個(gè)固定輸出電壓,所以設(shè)計(jì)比較簡單,只需要在電路中與芯片并聯(lián)2個(gè)典型值為10 tlf、的濾波電容即可。
2、系統(tǒng)存儲電路模塊
主控器還需一些外圍存儲單元如Nor Flash和SDRAM。Nor Flash 中包含Linux 的Bootloader、系統(tǒng)內(nèi)核、文件系統(tǒng)、應(yīng)用程序以及環(huán)境變量和系統(tǒng)配置文件等等,同時(shí)還預(yù)留了一部分空間作為用戶使用;SDRAM讀寫速度快,系統(tǒng)運(yùn)行時(shí)把它作為內(nèi)存單元使用。為充分保證系統(tǒng)的可擴(kuò)充性,系統(tǒng)設(shè)計(jì)采用了8M的Nor Flash和64M的SDRAM。
在網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)中,F(xiàn)lash用于存放操作系統(tǒng)、文件系統(tǒng)和驅(qū)動(dòng)程序等;SDRAM主要用作運(yùn)行嵌入式操作系統(tǒng)、應(yīng)用服務(wù)程序和臨時(shí)存放視音頻信息。Flash存儲器選用的是Spansion的S29AL016D70TF。它是一個(gè)16 Mbit的Flash存儲器,容量為2,097,152個(gè)字節(jié);采用48腳TSOP封裝和3.0V電源供電。S29AL016D70TF與Hi3510的接口連接框圖如圖3所示。其中。CE#管腳為芯片使能輸入,由于此Flash用于存儲引導(dǎo)程序,故此引腳連接EBICSlN#;OE#管腳為輸出使能輸入,連接EBIOEN;RY/BY為準(zhǔn)備或忙輸出管腳,懸空。
圖3 Flash存儲器接口設(shè)計(jì)框圖
SDRDM存儲器選用的是Hynix的HY57V281620ET,它的容量位是16MB(4Banks×2M×16bits),單片數(shù)據(jù)寬度是16位,為了增大數(shù)據(jù)吞吐能力,選取兩片SDRAM構(gòu)成32位地址寬度,存儲容量為32MB。HY57V281620ET的工作電壓為3.3V,常見封裝為54腳TSOP,兼容LVTTL接口。支持自動(dòng)刷新(Auto-Refresh)和自刷新(Self-Refresh)。HY57V281620ET與Hi3510的接口連接框圖如圖4所示。
圖4 SDRDM存儲器接口設(shè)計(jì)框圖
3、視頻采集模塊設(shè)計(jì)
視頻采集芯片選用Philips公司生產(chǎn)的SAA7113H,它是一款功能強(qiáng)大且操作簡單的9位視頻輸入處理芯片,采用CMOS工藝,通過I2C總線與處理器或DSP連接可方便地構(gòu)成應(yīng)用系統(tǒng)。它內(nèi)部包含四路模擬處理通道,可以選擇視頻信號源并可抗混疊濾波,同時(shí)還可以進(jìn)行模數(shù)轉(zhuǎn)換、自動(dòng)箝位、自動(dòng)增益控制(AGC)、時(shí)鐘產(chǎn)生(CGC)、多制式解碼,另外還可以對亮度、對比度和飽和度進(jìn)行控制。設(shè)置SAA7113H芯片的工作時(shí)鐘為24.576MHz,數(shù)據(jù)輸出格式為4:2:2,幀頻為25fps。視頻采集芯片SAA7113H在上電后,并不是立即采集模擬視頻信號進(jìn)行A/D轉(zhuǎn)換,它必須由Hi3510通過I2C總線對其內(nèi)部寄存器進(jìn)行初始化設(shè)置后,才能正常工作。視頻采集芯片SAA7113H與Hi3510的接口連接框圖如圖5所示。
圖5視頻采集電路原理框圖
4、外圍電路模塊
本設(shè)計(jì)用到的外設(shè)有USB接口,網(wǎng)卡接口,串行接口和JTAG接口。同時(shí)為保證系統(tǒng)將來的可擴(kuò)展性,系統(tǒng)還預(yù)留了PC104接口和大量的GPIO接口。AT91RM9200處理器的片內(nèi)以太網(wǎng)卡端口和網(wǎng)絡(luò)物理層芯片DM9161E 的MII 接口通信。而且片內(nèi)以太網(wǎng)卡內(nèi)置了獨(dú)立的雙緩沖的讀寫DMA 通道,這樣大大提供了數(shù)據(jù)的發(fā)送速度,同時(shí)不影響AT91RM9200 的正常運(yùn)行。
為保證視頻采集質(zhì)量,監(jiān)控系統(tǒng)選用了羅技等高端品牌的產(chǎn)品,然后攝像頭通過專用的USB集線器與處理器單元的USB接口連接。在實(shí)時(shí)監(jiān)控狀態(tài)下,各個(gè)攝像頭上捕獲的圖像數(shù)據(jù)通過USB集線器傳輸?shù)揭曨l監(jiān)控系統(tǒng)的USB主控制器模塊上,然后再由USB主控制器模塊交由AT91RM9200處理器集中處理。AT91RM9200對采集到的圖像進(jìn)行實(shí)時(shí)編碼壓縮,編碼之后的碼流直接傳輸?shù)桨l(fā)送緩沖區(qū)中,等候發(fā)送。最后由上層應(yīng)用程序?qū)⑻幚砗蟮囊曨l數(shù)據(jù)通過以太網(wǎng)口進(jìn)行發(fā)送。
四、軟件方案
系統(tǒng)的應(yīng)用軟件建立在Linux操作系統(tǒng)之上,嵌入式Linux具有許多優(yōu)點(diǎn),如開放源碼,功能強(qiáng)大的內(nèi)核,支持多用戶、多線程、多進(jìn)程、實(shí)時(shí)性好、功能強(qiáng)大穩(wěn)定;大小功能可定制等。本系統(tǒng)采用的嵌入式Linux系統(tǒng)是基于2.6.21的內(nèi)核,支持了內(nèi)核搶占式調(diào)度,同時(shí)調(diào)度周期為1ms,因此大大保證了系統(tǒng)的實(shí)時(shí)性。此外,系統(tǒng)內(nèi)嵌的嵌入式Linux系統(tǒng)實(shí)現(xiàn)了對所有硬件設(shè)備的驅(qū)動(dòng)支持,如基于Flash的文件系統(tǒng)、網(wǎng)卡驅(qū)動(dòng)程序、USB驅(qū)動(dòng)程序等等,完全保證了系統(tǒng)的可用性。
在本系統(tǒng)中,軟件設(shè)計(jì)可分為3部分:視頻圖像數(shù)據(jù)采集、圖像數(shù)據(jù)的JPEG壓縮以及系統(tǒng)平臺的網(wǎng)絡(luò)通信。
1、視頻圖像數(shù)據(jù)采集的實(shí)現(xiàn)
首先加載USB攝像頭驅(qū)動(dòng)程序,接著就是編寫一個(gè)對視頻流采集的應(yīng)用程序。攝像頭中的各種I/O口的控制主要依靠Vide04Linux提供的應(yīng)用程序接口函數(shù)實(shí)現(xiàn),主要有Open、Read、Write等。V4L下的視頻采集1。在本系統(tǒng)中,將有關(guān)攝像頭的各種數(shù)據(jù)和結(jié)構(gòu)封裝成了一個(gè)類,主要用到的一些系統(tǒng)調(diào)用函數(shù)定義如下:
open(“/dev/vide00”,O—RDWR):設(shè)備的打開。
close(fd):設(shè)備的關(guān)閉。
mmap(void+addr,size—t len,int prot,int flags,int fd,off__t offset):
設(shè)備緩沖區(qū)到內(nèi)存空間的映射。
munmap(void*addr,size t len):采集工作結(jié)束后取消mmap和mbuf的綁定。
ioctl(int Rl,jnt cmd...,):控制I/O的通道。
2、Linux下圖象數(shù)據(jù)的JPEG壓縮
由于視頻信息數(shù)據(jù)量過大,因此必須在視頻傳輸前對圖像數(shù)據(jù)進(jìn)行壓縮處理。在本系統(tǒng)中,攝像頭采集過來的圖像數(shù)據(jù)格式為RGB24,通過調(diào)用Linux下的Libjpeg庫來實(shí)現(xiàn)視頻數(shù)據(jù)的編碼,把RGB24圖像數(shù)據(jù)轉(zhuǎn)換為JPEG格式。下面簡述下整個(gè)壓縮處理過程:首先初始化JPEG壓縮的圖片格式,調(diào)用jpeg_set—defauhs(&cmjpeg),接著初始化JPEG壓縮圖片質(zhì)量,通過jpeg_set—ratio(&cmjpeg,raTIo,7rURE)實(shí)現(xiàn)。
開始壓縮:jpeg_start—compress(&cmjpeg,TURE);for(i--0,line--buf;ibuf 0。((_dst_ptr)cmjpeg.dest)一》buffer,size);
釋放內(nèi)存并銷毀cmjpeg變量:jpeg_destory_compress(&cmjpeg)
jpeg_buff_free(&emjpeg);
最后返回return size;返回值size標(biāo)記了緩沖區(qū)中視頻數(shù)據(jù)的實(shí)際長度。
3、系統(tǒng)網(wǎng)絡(luò)通訊的實(shí)現(xiàn)
本系統(tǒng)采用B/S(瀏覽器/服務(wù)器)模式的通信構(gòu)架。用戶只需在遠(yuǎn)程客戶機(jī)安裝一個(gè)普通的瀏覽器軟件,其他大部分工作由Web服務(wù)器完成。B/S模式開發(fā)的監(jiān)控軟件,降低了對系統(tǒng)軟件的要求,避免了用戶對客戶端的安裝和設(shè)置,實(shí)現(xiàn)了軟件安裝的簡單化、自由化。
視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)了對USB攝像頭的驅(qū)動(dòng)程序,這樣上層視頻采集程序可以直接通過標(biāo)準(zhǔn)的Video4Linux接口函數(shù)訪問USB攝像頭設(shè)備,捕獲實(shí)時(shí)的視頻流,放入上層緩沖區(qū),同時(shí)通知上層服務(wù)器軟件處理。
系統(tǒng)中內(nèi)置了一個(gè)完整的基于網(wǎng)絡(luò)的多用戶視頻服務(wù)器軟件,這樣當(dāng)服務(wù)器軟件監(jiān)聽到有網(wǎng)絡(luò)客戶連接時(shí),立即啟動(dòng)采集進(jìn)程從緩沖區(qū)中把處理后的視頻流數(shù)據(jù)讀出,然后發(fā)送給相應(yīng)的客戶連接。同時(shí)為了保證監(jiān)控客戶端的簡單性與統(tǒng)一性,本系統(tǒng)中的客戶端可以直接使用IE軟件,即用戶打開PC端的IE軟件后,直接在地址欄內(nèi)輸入需要訪問的設(shè)備IP地址或者域名,如192.168.0.5,此時(shí)就可以在IE瀏覽器中顯示當(dāng)前的實(shí)時(shí)采集圖像。
五、結(jié)論
本系統(tǒng)采用嵌入式Linux,操作系統(tǒng)和ARM核處理器的硬件平臺相結(jié)合,視頻信號從前端圖像采集設(shè)備輸出時(shí)即為數(shù)字信號,以網(wǎng)絡(luò)為傳輸媒介,并基于國際通用的TCP/IP協(xié)議,使用流媒體技術(shù)實(shí)現(xiàn)視頻信號在網(wǎng)絡(luò)上的傳輸,構(gòu)成了一個(gè)高質(zhì)量、監(jiān)控方式靈活、可靠性好和具有易于擴(kuò)展架構(gòu)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)。ARM處理核和Linux。相結(jié)合,很好地體現(xiàn)了整個(gè)監(jiān)控小型化、數(shù)字化、網(wǎng)絡(luò)化、低功耗的優(yōu)點(diǎn)。系統(tǒng)電路板現(xiàn)已成功配置和運(yùn)行,調(diào)試結(jié)果表明,整個(gè)系統(tǒng)具有穩(wěn)定可靠、安裝簡便、成本低廉等特點(diǎn),可廣泛使用在家庭、銀行、超市、公共場所等。