李寶山 程麗娟
(內蒙古科技大學信息工程學院,內蒙古包頭014010)
為提高家庭的智能化水平,本設計提出采用ARM芯片作為整個遠程家居控制系統的控制芯片﹑LINUX作為整個系統的操作系統的設計思想,給出遠程家居智能控制系統具體的軟硬件解決方案。而嵌入式網絡視頻監控系統以嵌入式微處理器和嵌入式操作系統[1]為核心,專用性強,軟硬件結合緊密,設備構成簡單,成本較低,在各個領域得到了廣泛的應用。
本系統選用韓國三星電子的基于ARM 920T內核的32位嵌入式微處理器S3C2410作為系統的控制核心,該芯片本身集成了包括存儲器接口、通信接口(USB,RS232),A/D,JTAG等在內的豐富的硬件資源,可簡化外圍設備與微處理器的硬件連接程度,提高系的穩定性、可靠性[3]。其硬件結構如圖1所示。

圖1 硬件結構圖
由于S3C2410本身沒有集成以太網控制模塊,所以需要一個與之相匹配的控制芯片來實現以太網擴展接口。本系統選用CIRRUSLOGIC公司的CS8900A作為系統的以太網控制芯片。CS8900A是一個單芯片全雙工的以太網解決方案,所有的數字和模擬電路合成了完整的以太網電路。主要結構包括ISA總線接口、802.3MAC引擎、BUFFER、串行E2PROM接口和帶10BASE2T和AUI的模擬前端。CS8900A的10BASE2T接口通過變壓器HR601627與RJ45網口連接。
本系統采用Linux作為操作系統[4],并選用Linux2.6內核在嵌入式微處理器S3C2410上移植,具體移植方法如下:
①準備Linux2.6內核移植所必需的文件(內核壓縮包linux-2.6.tar.bz2及交叉編譯器arm-linux-gcc-3.4.1.tar.bz2),這些文件可到Linux官方網站免費下載。
②利用Linux命令(mkdir,tar,mv及export)安裝交叉編譯器arm-linux-gcc-3.4.1。
③修改Makefile文件及相關硬件文件。由于內核的編譯是根據Makefile文件的指示進行的,Makefile文件來組織內核的各模塊之間的關系,記錄了各個模塊之間的相互聯系和依賴關系。所以,開發人員要首先修改Linux2.6根目錄下的Makfile文件,修改的主要內容是目標代碼的類型和為編譯內核指定一個編譯器。
④運用Make命令編譯內核生成內核鏡像文件zImage文件,通過相應的固化軟件把這個文件固化在系統相應的存儲器中,完成Linux2.6內核在ARM微處理器上的移植。
3.2.1 軟件的總體架構
嵌入式遠程視頻監控系統采用客戶端-服務器(Client-Server)模型。在客戶端/服務器模型中,客戶端向服務器端發送請求信息服務器對客戶端的請求信息進行響應,實現遠程通訊。遠程服務器端與客戶端的通信采用TCP協議,TCP協議是面向連接的、提供差錯控制、超時重發機制,而視頻數據的傳輸采用UDP協議以提高傳輸速度和實時性。由于UDP協議沒有提供差錯控制、超時重發等機制,因此系統使用多媒體數據傳輸的實時傳輸協議RTP(Real time Transport Protocol)和實時傳輸控制協議RTCP(Real time Transport Control Protocol)。RTP協議是在因特網上廣泛使用的多媒體數據流的一種傳輸協議,服務器通過RTP/RTCP協議向客戶端發送視頻流[2]。系統軟件結構圖如圖2所示。

圖2 系統軟件結構圖
3.2.2 服務器端和客戶端軟件設計
Linux的網絡功能非常強大,支持多種網絡協議。本系統使用套接字接口實現客戶端與服務器端的通訊。套接字(socket)是由通訊協議、IP地址和端口三部分組成,其中通訊協議有TCP和UDP協議,端口號用來代表通信進程。根據使用協議的不同,有三種套接字:流格式、數據報格式和原始格式。
3.2.3 視頻采集模塊的設計
在Linux下加載驅動程序可以采用動態和靜態兩種方式。靜態加載就是把驅動程序直接編譯到內核里,系統啟動后可以直接調用;動態加載利用了可以在系統啟動后用insmod命令把驅動程序添加上去,在不需要的時候用rmmod命令來卸載。動態方式與靜態方式相比,測試要簡單的多。不需要下載整個內核,只需通過NFS加載驅動即可測試。在測試成功后就可以編譯進內核。本系統攝像頭驅動程序采用了動態加載的方式,在程序啟動時再加載。在Linux操作系統中,外部設備被看作設備文件,完成視頻設備驅動程序加載后,通過open函數打開設備;視頻設備完成初始化后,進入工作狀態,開始采集視頻幀;系統將采集到的視頻數據放在內存緩沖區中,通過Mmap函數實現內存文件與普通文件之間的映射。其主要過程如圖3所示。
為了實現實時傳輸的要求,需要對攝像頭采集的數據進行壓縮處理。基于MPEG-4的視頻壓縮編碼技術能大幅度降低錄像存儲容量,獲得較高的錄像清晰度,特別適用于長時間實時錄像的需求同時具備在低帶寬上優良的網絡傳輸能力。基于其以上優點,本系統選用MPEG-4視頻壓縮編碼方式。MPEG-4將圖像分為三種:I幀、P幀和B幀。編碼流程如圖4所示。

圖3 視頻采集流程圖

圖4 視頻解碼流程圖
為了節約成本,本系統沒有用專門的視頻編解碼硬件,而是采用了現有開源的的MPEG-4視頻編碼軟件FFmpeg對視頻圖像進行壓縮編碼。FFmpeg是一個高效編碼流的而且具有可移植性的編碼軟件[5],FFmpeg的開發是基于linux操作系統的,最適合移植到嵌入式系統,是因為它是采用純C語言編寫的,對各種編譯器進行了優化,并針對ARM處理器用匯編語言實現了DCT和逆DCT的相互變換。所以本系統中采用了FFmpeg軟件。
本方案設計采用ARM 9處理器和嵌入式Linux操作系統構建了基于MPEG-4遠程視頻監控系統,系統采用USB攝像頭采集視頻,開源軟件FFMPEG對視頻進行編碼,在工業監控、智能家居等領域具有廣泛的應用前景。下一階段我們的重點將主要集中在如何研發出更適合中國國情的智能家居的產品以及如何進一步提高產品的可擴張性。
[1] GORMAN M,SAHLMAN W A.What do venture capitalists do[J].Journal of Business Venturing,1989,4(4):231-248.
[2] 樊振萍,唐繼勇.基于RTP協議和MPEG-4的流媒體系統分析與實現[J].西部廣播電視,2004.
[3] 賴曉晨,原旭,孫寧.嵌入式系統程序設計[M].北京:清華大學出版社.2001,11:30—31.
[4] 王學龍.嵌入式Linux系統設計與應用[M].北京:清華大學出版社.2001.
[5] 李少春.基于FFmpeg的嵌入式視頻監控系統[J].電子技術,2007,3.