<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 基于ARM的嵌入式MPEG-4遠程網絡監(jiān)控系統(tǒng)的設計與實現(xiàn)

          基于ARM的嵌入式MPEG-4遠程網絡監(jiān)控系統(tǒng)的設計與實現(xiàn)

          作者:■ 中國移動(深圳)有限公司 王海波 時間:2005-04-27 來源:eaw 收藏

          摘    要:本文詳細介紹了基于ARM的遠程網絡監(jiān)控系統(tǒng)的視頻采集、壓縮、傳輸和系統(tǒng)控制等方面的設計,提供了基于TCP/IP協(xié)議的C/S軟件結構和通信的設計與實現(xiàn)方法。
          關鍵詞:;;

          在遠程監(jiān)控系統(tǒng)的應用中,往往要求監(jiān)控中心的主機可以同時接收一路或多路監(jiān)控數(shù)據(jù),并且可以同時發(fā)送一路或多路的控制指令。因此,如何在有限帶寬的前提條件下,將多個現(xiàn)場的監(jiān)控數(shù)據(jù)方便、高效地通過計算機網絡傳送到監(jiān)控主機上,是該類系統(tǒng)要解決的主要問題。

          系統(tǒng)整體結構
          為了實現(xiàn)一個基于TCP/IP網絡的遠程數(shù)字視頻監(jiān)控系統(tǒng),本設計的系統(tǒng)結構如圖1所示。
          圖1中,攝像機通過RS-232接口受外界控制,控制命令為一系列的ASCII碼,可以調整攝像頭的焦距和控制云臺的轉動。嵌入式硬編碼板也有一個RS-232接口,可通過它設置信源制式(PAL/NTSC)、編碼亮度、編碼色度、音頻速率、編碼音量和編碼速率。編碼板與網絡服務器集成到一個機箱里,編碼板通過PCI接口向網絡服務器輸出數(shù)據(jù)。網絡服務器有多個RS-232接口,分別與攝像機和硬編碼板上的RS-232接口相連。
          播放設備由嵌入式硬解碼板和電視機組成。解碼板采用速率自適應方式設計,解碼速率自動匹配遠端編碼器的編碼速率。解碼板和網絡服務器同樣集成在一個機箱里。該系統(tǒng)還實現(xiàn)了軟解碼方式,在這種方式中,播放設備由一臺安裝了視頻采集卡的PC機構成,其上運行解碼軟件和媒體播放器,通過PC機的顯示器和音箱輸出圖像和聲音。
          系統(tǒng)的記錄設備由硬盤錄像機構成,安放于顯示點一側,用來存儲系統(tǒng)圖像。
          控制臺由一臺運行Windows2000操作系統(tǒng)的PC機實現(xiàn),PC機上運行客戶端的控制軟件。管理服務器也由一臺運行Windows2000操作系統(tǒng)的PC機實現(xiàn),PC機上運行系統(tǒng)管理軟件。在簡化的系統(tǒng)實現(xiàn)中,管理服務器和控制臺可以在同一臺PC機上實現(xiàn),在這種情況下,管理軟件和控制軟件運行在同一臺主機上,但仍然通過網絡接口通信。

          系統(tǒng)硬件設計
          網絡服務器是系統(tǒng)硬件的核心部件,它由運行嵌入式操作系統(tǒng)的嵌入式計算機構成,在嵌入式操作系統(tǒng)之上運行著系統(tǒng)的核心軟件。
          網絡服務器采用的是基于ARM 內核的CPU——。該芯片是一款基于ARM 7TDMI RISC芯片。它一方面具有ARM處理器的:低功耗、高性能等優(yōu)點;同時又具有豐富的片上資源,非常適合嵌入式產品的開發(fā)。
          多媒體編碼芯片則采用韓國INTIME公司生產的IME6400,該芯片提供了豐富的外圍硬件接口:支持CCIR601建議的16Bit視頻解碼器接口、32Bit數(shù)據(jù)、81MHz的SDRAM數(shù)據(jù)總線接口、I2C總線接口、I2S外部音頻/PCM編碼器/DSP接口以及靈活的主機接口,可以支持多種類型的CPU。
          圖2簡單介紹了MPEG-4硬件視頻壓縮處理的結構和網絡接口。MPEG-4視頻采集壓縮模塊以IME6400芯片為核心,完成對標準視頻信號(PAL或NTSC信號)的A/D轉換、MPEG-4壓縮以及與之間的通信功能。圖2中視頻解碼ADC把從攝像頭輸入的模擬視頻信號轉化為數(shù)字視頻信號,然后進行編碼預處理,即把視頻解碼輸出的CCIR601格式的信號轉化為編碼器可以處理的CIF或QCIF格式,然后再進行MPEG-4壓縮編碼。S3C44B0X上的軟件則通過總線接口單元來控制編碼器的參數(shù)設置和讀取編碼壓縮后的碼流數(shù)據(jù)。視頻數(shù)據(jù)處理模塊包括以下功能單元:以BT829為核心的視頻ADC單元;以IME6400為核心的MPEG-4視頻壓縮單元;以S3C44B0X 為核心構成的控制邏輯和總線接口單元??偩€接口單元是視頻數(shù)據(jù)處理模塊與S3C44B0X進行交互的通道,可以和主機進行視頻碼流和控制數(shù)據(jù)的交換??刂七壿嬍且曨l采集壓縮模塊的核心,它控制并協(xié)調各模塊工作,提供控制信號,通過指令實現(xiàn)系統(tǒng)各模塊所需要的選通、緩沖、讀/寫使能、數(shù)據(jù)總線和地址總線的切換等等。
          鏡頭云臺控制是通過S3C44B0X上的RS-232口進行的,允許用戶根據(jù)自己的要求調節(jié)系統(tǒng)。用戶可以通過調節(jié)鏡頭的景深、焦距以及光圈來調整圖像質量,還可以通過云臺的上下左右調節(jié)來獲取不同角度的圖像。由監(jiān)控中心的客戶機端軟件通過SOCKET網絡接口,把調整信息發(fā)送給服務器端,服務器接收到控制指令后,進行指令識別,然后向對應的RS-232口發(fā)送指令去控制云臺,完成調整任務。

          視頻數(shù)據(jù)發(fā)送、指令控制模塊的設計與實現(xiàn)
          監(jiān)控現(xiàn)場主機通過視頻數(shù)據(jù)發(fā)送模塊,將現(xiàn)場采集到的視頻流數(shù)據(jù)經過編碼后,以IP 組播的形式通過計算機網絡發(fā)送出去。對于發(fā)送來的視頻數(shù)據(jù),運行在監(jiān)控中心主機端的視頻數(shù)據(jù)接收播放模塊一方面可以將其保存起來,作為資料庫便于以后查詢及回放;另一方面還可以實時播放出來。
          本系統(tǒng)的軟件結構采用了客戶機服務器結構,兩端通過網絡建立TCP/IP連接,按照自定義的數(shù)據(jù)通信協(xié)議交換數(shù)據(jù),完成數(shù)據(jù)通信和系統(tǒng)控制功能。監(jiān)控中心的客戶端向服務器端申請建立連接,服務器監(jiān)聽到連接請求之后,和客戶端建立SOCKET連接,客戶端向服務器發(fā)送控制信號,服務器端向客戶端發(fā)送視頻碼流。
          服務器端軟件運行在S3C44B0X上,軟件設計的主要思想如下:讀取線程、發(fā)送線程和控制線程之間的同步,防止有限資源的浪費。
          為了充分利用CPU計算能力,提高系統(tǒng)的整體性能,在該系統(tǒng)中采用技術實現(xiàn)任務的調度。
          考慮到監(jiān)控中心主機要同時監(jiān)控多個現(xiàn)場,需要加入多個組播組的情況。我們在設計系統(tǒng)時要求監(jiān)控中心端在接收視頻數(shù)據(jù)前應向相應的監(jiān)控現(xiàn)場發(fā)送數(shù)據(jù)請求。為此,我們要建立兩個通訊通道:一個是控制通道,一個為數(shù)據(jù)通道??刂仆ǖ烙脕碓诎l(fā)送端和接收端之間建立會話,包括發(fā)送一些數(shù)據(jù)請求和確認控制等信息。接收端在接收視頻流數(shù)據(jù)前先向相應的發(fā)送端發(fā)送數(shù)據(jù)請求,發(fā)送端在接收到數(shù)據(jù)請求后向接收端發(fā)回相應的IP 組播地址和端口,接收端則加入該組接收視頻流數(shù)據(jù)。為了保證這些控制信息準確無誤地到達對方,對于控制通道我們選擇可靠性較高的TCP 協(xié)議。數(shù)據(jù)通道用于視頻流數(shù)據(jù)的通信,我們選用VxWorks IP組播組來實現(xiàn)。這兩個通訊通道互不相關,各自執(zhí)行自己的任務。

          視頻數(shù)據(jù)發(fā)送模塊的設計
          在視頻傳輸中,服務器端要求碼流讀取和發(fā)送互不干擾,避免讀取和發(fā)送相互等待或者相互沖突的情況出現(xiàn)。同樣,在客戶端解碼和接收也存在這個關系,我們可以采用任務間的通信功能來協(xié)調多個獨立任務間的活動。VxWorks提供了一套豐富的任務間通信機制,包括共享內存、信號量、消息隊列和管道等等。任務間通信最直接、最明顯的方法是訪問共享數(shù)據(jù)結構。由于所有VxWorks任務共存單一的線性地址空間,在多個任務間共享數(shù)據(jù)結構是非常容易的,任一程序中定義的各種類型的全局變量,都可以被所有任務直接訪問。
          由于實時組播的視頻流來自于MPEG-4編碼器,所以首先要從編碼器中獲得視頻數(shù)據(jù),這主要通過訪問編碼器所提供的I/O端口來完成。本設計采用了一種基于環(huán)形緩沖區(qū)的多任務視頻傳輸技術,較好的解決了碼流讀取和發(fā)送互不干擾的問題。系統(tǒng)的環(huán)形緩沖區(qū)除了達到數(shù)據(jù)分離互斥作用外,還可以起到平滑碼流的作用。讀取任務和發(fā)送任務是互斥的關系,讀取任務一次從編碼模塊中讀入4K的視頻數(shù)據(jù)供發(fā)送任務處理。在讀取時為了避免競爭,使用信號量對該環(huán)形緩沖區(qū)進行上鎖,以保證訪問的互斥進行。發(fā)送任務的訪問環(huán)形緩沖區(qū)的情況也類似。通過利用環(huán)形緩沖區(qū)和互斥鎖完全可以解決這兩個任務的同步問題。
          指令控制模塊的設計
          系統(tǒng)定義了自己的指令系統(tǒng)和指令傳輸協(xié)議。指令可以分為以下幾類:工作控制(傳輸開始、傳輸停止、存儲控制等);鏡頭云臺控制(焦距、光圈、自動轉動等);系統(tǒng)設置(用戶管理、通信參數(shù)設置等),每條指令前面都有其唯一的識別標志,服務器接收到后可以用來和其它指令進行區(qū)分。
          多路復用的輸入/輸出模型Select函數(shù)可以實現(xiàn)高效的管理套接字。使用工作在無阻塞方式的套接字,在一定程度上提高了程序的效率(與阻塞套接字相比)。但是,程序需要不斷的輪詢各個套接字描述符的情況,這浪費了大量的CPU時間。如果進程不是主動地輪詢套接字的情況,而是將希望監(jiān)視的套接字向系統(tǒng)進行登記,而后采取被動的態(tài)度等待,當套接字上發(fā)生了某些事件后,系統(tǒng)再以某種方式通知進程,接著進程去檢測套接字的情況,發(fā)現(xiàn)對應的事件并進行處理。在這種工作方式下,進程是在已經知道在套接字上發(fā)生了事件時,才對套接字進行檢測,而在沒有事件的情況下,進程將睡眠,所以這種工作方式節(jié)省了大量的CPU時間,對于資源本來就非常緊張的系統(tǒng),可以大大提高系統(tǒng)的整體性能。

          結語
          本文設計的基于ARM S3C44B0X的嵌入式MPEG-4遠程網絡監(jiān)控系統(tǒng),目前已經在某省高速公路監(jiān)控中得到了應用,并取得了很好的應用效果。該監(jiān)控系統(tǒng)穩(wěn)定性高,支持基于Internet的數(shù)據(jù)傳輸,C/S的結構體系允許用戶進行遠端操縱系統(tǒng)的工作方式。系統(tǒng)的各個子模塊相對獨立,通過采用MPEG-4視頻壓縮技術,圖像高清晰,畫質可接近DVD效果,能夠實現(xiàn)單畫面輪流監(jiān)看和1~16個畫面同屏監(jiān)看。支持遠程和本地云臺控制,支持多任務工作方式,而且圖像存儲、監(jiān)看、遠程控制可同步進行,監(jiān)控距離隨網絡延伸而不斷加長,具有良好的發(fā)展應用前景?!?/P>

          參考文獻
          1 余兆明,李曉飛,陳來春編著. 數(shù)字電視設備及測量. 人民郵電出版社,2000
          2 Stevens. TCP/IP詳解,卷1:協(xié)議,機械工業(yè)出版社,2000
          3 林宇,郭凌云編著. Linux網絡編程. 人民郵電出版社,2000
          4 VxWorks Programmer誷 Guide 5.4.1. WinRiver System Inc., 1999
          5 S3C44B0X User誷 Manual. SUMSUNG Inc., 1997
          6 孔祥營,柏桂枝編著. 嵌入式實時操作系統(tǒng)VxWorks及其開發(fā)環(huán)境Tornado. 中國電力出版社,2002

          tcp/ip相關文章:tcp/ip是什么




          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();