基于嵌入式技術(shù)的視頻監(jiān)控系統(tǒng)的設(shè)計
為了大幅度降低成本,使遠程數(shù)字視頻音頻監(jiān)控應(yīng)用更加普及,目前國內(nèi)外的發(fā)展趨勢是使用嵌入式系統(tǒng)。即采用專用微處理器、圖像聲音的數(shù)字化芯片、數(shù)據(jù)壓縮芯片及網(wǎng)絡(luò)接口芯片等,按照特定的功能需求開發(fā)出最小應(yīng)用單板系統(tǒng)。這樣,系統(tǒng)功能沒有任何浪費,可大幅度降低成本。而且,由于軟件都是固化在單板內(nèi)的Flash ROM中,系統(tǒng)更加可靠。
1 系統(tǒng)總體結(jié)構(gòu)和功能概述
由于嵌入式系統(tǒng)具有上述的種種優(yōu)點,筆者最新開發(fā)了一套基于嵌入式技術(shù)的多媒體遠程監(jiān)控管理系統(tǒng)。
該系統(tǒng)采用目前流行的TCP/IP網(wǎng)絡(luò)協(xié)議,視頻編碼基于H.263協(xié)議――低比特率視頻通信編碼算法, 音頻編碼基于G.723協(xié)議――低比特率音頻通信編碼算法。它們可以在網(wǎng)絡(luò)帶寬很低的環(huán)境,甚至是電話線上進行圖像和聲音的傳輸。
整個系統(tǒng)主要由三部分組成:前端機、監(jiān)控中心和客戶端,其具體架構(gòu)如圖1所示。
前端機是一塊嵌入式系統(tǒng)的印刷電路板,它的主要功能如下:
四路模擬視頻信號輸入,可任意選擇一路進行采樣和壓縮編碼;
一路音頻信號的編碼與解碼;
通過局域網(wǎng)向監(jiān)控中心傳送視頻編碼數(shù)據(jù)和音頻編碼數(shù)據(jù),并接收監(jiān)控中心傳送的音頻編碼數(shù)據(jù);
通過RS-232接口向攝像頭的云臺控制器發(fā)出控制指令;
通過EPLD的并行口接收用戶報警信號,并通過局域網(wǎng)傳送到監(jiān)控中心。
監(jiān)控中心是整個視頻監(jiān)控系統(tǒng)的中樞,它的主要功能如下:
通過局域網(wǎng)向前端機發(fā)送用戶控制指令,如前端機的選擇、視頻通道的選擇、調(diào)節(jié)圖像參數(shù)(包括幀速率、碼流量的大小、色度、亮度、飽和度和對比度)、聲音編碼音量的大小等;
接收多路前端機的視頻編碼數(shù)據(jù),保存在本地硬盤上,同時進行解碼,并顯示多路解碼圖像;
向遠程用戶轉(zhuǎn)發(fā)當(dāng)前視頻編碼數(shù)據(jù),或者傳送存盤圖像數(shù)據(jù)。
客戶端是提供一個用戶操作的界面。本地用戶可以直接在監(jiān)控中心的服務(wù)器上使用;而遠程用戶則有另一套操作界面,可使用的功能比本地用戶少,但是它可以讓異地用戶通過Internet或者電話線獲得本地的視頻信息。
該系統(tǒng)還具有很好的擴展性能。對于幾百甚至上千個監(jiān)控點的大型監(jiān)控場所,可以采用多級級聯(lián)的方式,即在前端機和監(jiān)控中心之間,加上一級或者多級區(qū)域服務(wù)器,每個區(qū)域服務(wù)器可以管理十幾至幾十個監(jiān)控點,他們分擔(dān)監(jiān)控中心的工作,并接受監(jiān)控中心的控制。
2 前端機的硬件設(shè)計與各模塊的功能
本嵌入式視頻監(jiān)控系統(tǒng)的硬件開發(fā)工作主要集中在嵌入式前端機的硬件設(shè)計和調(diào)試上。
前端機是一個嵌入式系統(tǒng),硬件結(jié)構(gòu)比較復(fù)雜,其總體結(jié)構(gòu)如圖2所示。主要包含嵌入式CPU、EPLD、視頻模數(shù)轉(zhuǎn)換芯片、視頻壓縮編碼芯片、音頻編碼解碼芯片、音頻模數(shù)與數(shù)模轉(zhuǎn)換芯片、以太網(wǎng)控制器、數(shù)據(jù)緩沖存儲器、網(wǎng)絡(luò)收發(fā)器、Flash ROM、RAM、多種電源芯片和時鐘芯片等。這些芯片按照各自的功能分別組合,構(gòu)成了幾大模塊,它們分別是:CPU模塊、電源時鐘模塊、控制模塊、視頻采集編碼模塊、音頻采集編解碼及模擬輸入輸出模塊和網(wǎng)絡(luò)模塊。
CPU模塊是所有硬件模塊的核心,主要包括嵌入式CPU芯片,兩片RAM和兩片F(xiàn)lash ROM。一片F(xiàn)lash ROM存放了整個硬件的監(jiān)視系統(tǒng),也叫ROM Monitor。當(dāng)系統(tǒng)上電后,CPU從中調(diào)入程序進行整個系統(tǒng)硬件的自檢和初始化配置,并為用戶提供一個簡單操作環(huán)境。當(dāng)系統(tǒng)發(fā)生故障時,可以通過它來讀取CPU主要寄存器的狀態(tài),從而找出故障原因。另一片F(xiàn)lash ROM用來存放用戶的應(yīng)用程序。當(dāng)整個系統(tǒng)通過自檢后,CPU將用戶的應(yīng)用程序讀入RAM中執(zhí)行。CPU通過PCI總線與視頻壓縮編碼芯片與以太網(wǎng)控制器連接,對它們進行調(diào)度和數(shù)據(jù)的收發(fā)。CPU還提供了兩個串口,其中一個與普通電腦的串口連接,通過Windows下的超級終端,可以讓用戶對整個系統(tǒng)進行監(jiān)測和調(diào)試;另一個串口則用于控制攝像頭云臺。
電源時鐘模塊負責(zé)給整個系統(tǒng)提供時鐘和電源,是系統(tǒng)的基本模塊。由于整個嵌入系統(tǒng)使用的芯片和器件較多,且各個器件對電源和時鐘的要求也不同,所以設(shè)計時使用了四種電源芯片和六種時鐘晶振??紤]到多種電源的存在,將電源層劃分成了七大塊,分別對所需要的器件供電;同時,也對數(shù)字地和模擬地進行了分割。這樣使整個系統(tǒng)的電源信號達到較高的質(zhì)量,大大提高了器件工作的穩(wěn)定性和可靠性。
控制模塊是一片可編程邏輯芯片EPLD,其主要功能包括PCI總線的地址譯碼與片選、電源控制、CPU的復(fù)位、I/O輸入輸出和看門狗邏輯。其中8路I/O輸入作為用戶的報警輸入,6路I/O輸出顯示系統(tǒng)的運行狀態(tài)??撮T狗邏輯是嵌入式系統(tǒng)不可缺少的部分。因為嵌入式系統(tǒng)一般不需要時刻監(jiān)管,當(dāng)系統(tǒng)工作狀態(tài)出現(xiàn)了偶然的異常情況,如死機,看門狗可以自動對整個系統(tǒng)進行復(fù)位,讓系統(tǒng)恢復(fù)到正常的工作狀態(tài)。
視頻采集編碼模塊主要由視頻模數(shù)轉(zhuǎn)換芯片、視頻壓縮編碼芯片和RAM組成。這個模塊的主要功能是將模擬視頻輸入送到視頻模數(shù)轉(zhuǎn)換芯片進行模數(shù)變換,并將變換后的數(shù)字視頻數(shù)據(jù)送入視頻壓縮編碼芯片,視頻壓縮編碼芯片在RAM中將視頻數(shù)據(jù)進行壓縮編碼,最后通過PCI總線將視頻編碼數(shù)據(jù)送入CPU。此外, 視頻壓縮編碼芯片還能通過I2C總線對視頻模數(shù)轉(zhuǎn)換芯片的圖像參數(shù)進行控制,包括圖像的亮度、色度、對比度和飽和度的調(diào)節(jié)以及視頻采樣通道的選擇等。
音頻編碼解碼模塊主要包括音頻編碼解碼芯片、音頻模數(shù)與數(shù)模轉(zhuǎn)換芯片和音頻模擬信號處理電路。音頻模擬信號處理電路主要是把音頻信號進行濾波、放大;音頻模數(shù)與數(shù)模轉(zhuǎn)換芯片的功能是把模擬音頻信號轉(zhuǎn)換為數(shù)字音頻信號及把數(shù)字音頻信號轉(zhuǎn)換為模擬音頻信號;音頻編碼解碼芯片的主要功能是對數(shù)字音頻信號進行編解碼。
網(wǎng)絡(luò)模塊主要由以太網(wǎng)控制器、數(shù)據(jù)緩沖存儲器、網(wǎng)絡(luò)收發(fā)器和EEPROM組成,是CPU和網(wǎng)絡(luò)之間的橋梁,類似于計算機上的網(wǎng)卡。它支持IEEE以太網(wǎng)物理層協(xié)議,在EEPROM中用戶可以自己燒制嵌入式系統(tǒng)的底層硬件(MAC)地址。
3 軟件開發(fā)
本系統(tǒng)的軟件主要分為嵌入式前端機程序設(shè)計、監(jiān)控中心軟件設(shè)計和用戶界面設(shè)計三大部分。
3.1 嵌入式前端機的軟件設(shè)計
由于監(jiān)控系統(tǒng)的特點,前端機必須滿足實時性和并發(fā)性的要求,所以應(yīng)用軟件基于嵌入式實時操作系統(tǒng)。采用了US Software開發(fā)的SuperTask嵌入式實時操作系統(tǒng)。它具有內(nèi)核小、用戶可配置系統(tǒng)參數(shù)、高效的多任務(wù)管理(支持優(yōu)先級排隊和循環(huán)調(diào)度機制)、支持多種物理介質(zhì)及標(biāo)準(zhǔn)、完整的TCP/IP網(wǎng)絡(luò)協(xié)議棧(兼容BSD)、完全符合ANSI C標(biāo)準(zhǔn)等特點。
前端機的應(yīng)用程序由主控制、視頻編碼中斷、視頻網(wǎng)絡(luò)傳送、音頻編碼中斷、音頻網(wǎng)絡(luò)傳送、音頻網(wǎng)絡(luò)接收、音頻解碼中斷和串口中斷等幾個任務(wù)組成,各個任務(wù)的關(guān)聯(lián)如圖3所示。
3.2 監(jiān)控中心服務(wù)器的軟件設(shè)計
監(jiān)控中心服務(wù)器軟件是在Window2000下用VC++開發(fā)的,其總體結(jié)構(gòu)如圖4所示。
首先,程序?qū)⒏鶕?jù)配置文件的系統(tǒng)參數(shù)進行初始化,這些系統(tǒng)參數(shù)用戶可以根據(jù)自己的需要在配置文件中進行修改。
然后,程序?qū)⑦M行端口監(jiān)聽,CCtrlListenSocket(作為監(jiān)控中心服務(wù)器的Socket)開始工作。一旦前端機向監(jiān)控中心請求控制端口的連接,先通過Accept()將連接指定到CCtrlSocket(),再通過CCtrlSocket::GetPeerName(rPeerAddress, rPeerPort)得到遠端的IP地址。如果地址是非法的,則立即斷開;如果地址合法,就調(diào)用CCtrlSocket::Init()初始化。
主線程主要接收來自用戶的按鈕等命令,同時利用定時器刷新系統(tǒng)運行的總時間以及利用定時器檢查各個前端機的連接狀態(tài)。
3.3 用戶界面的設(shè)計
用戶界面使用Delphi進行開發(fā)。Delphi是目前世界上最流行的開發(fā)語言,它豐富的應(yīng)用模板并附帶各種工具軟件,使用戶界面的開發(fā)更加方便快捷,外觀更加漂亮。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論