李寶山 程麗娟
(內(nèi)蒙古科技大學(xué)信息工程學(xué)院,內(nèi)蒙古包頭014010)
為提高家庭的智能化水平,本設(shè)計提出采用ARM芯片作為整個遠程家居控制系統(tǒng)的控制芯片﹑LINUX作為整個系統(tǒng)的操作系統(tǒng)的設(shè)計思想,給出遠程家居智能控制系統(tǒng)具體的軟硬件解決方案。而嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)以嵌入式微處理器和嵌入式操作系統(tǒng)[1]為核心,專用性強,軟硬件結(jié)合緊密,設(shè)備構(gòu)成簡單,成本較低,在各個領(lǐng)域得到了廣泛的應(yīng)用。
本系統(tǒng)選用韓國三星電子的基于ARM 920T內(nèi)核的32位嵌入式微處理器S3C2410作為系統(tǒng)的控制核心,該芯片本身集成了包括存儲器接口、通信接口(USB,RS232),A/D,JTAG等在內(nèi)的豐富的硬件資源,可簡化外圍設(shè)備與微處理器的硬件連接程度,提高系的穩(wěn)定性、可靠性[3]。其硬件結(jié)構(gòu)如圖1所示。
圖1 硬件結(jié)構(gòu)圖
由于S3C2410本身沒有集成以太網(wǎng)控制模塊,所以需要一個與之相匹配的控制芯片來實現(xiàn)以太網(wǎng)擴展接口。本系統(tǒng)選用CIRRUSLOGIC公司的CS8900A作為系統(tǒng)的以太網(wǎng)控制芯片。CS8900A是一個單芯片全雙工的以太網(wǎng)解決方案,所有的數(shù)字和模擬電路合成了完整的以太網(wǎng)電路。主要結(jié)構(gòu)包括ISA總線接口、802.3MAC引擎、BUFFER、串行E2PROM接口和帶10BASE2T和AUI的模擬前端。CS8900A的10BASE2T接口通過變壓器HR601627與RJ45網(wǎng)口連接。
本系統(tǒng)采用Linux作為操作系統(tǒng)[4],并選用Linux2.6內(nèi)核在嵌入式微處理器S3C2410上移植,具體移植方法如下:
①準(zhǔn)備Linux2.6內(nèi)核移植所必需的文件(內(nèi)核壓縮包linux-2.6.tar.bz2及交叉編譯器arm-linux-gcc-3.4.1.tar.bz2),這些文件可到Linux官方網(wǎng)站免費下載。
②利用Linux命令(mkdir,tar,mv及export)安裝交叉編譯器arm-linux-gcc-3.4.1。
③修改Makefile文件及相關(guān)硬件文件。由于內(nèi)核的編譯是根據(jù)Makefile文件的指示進行的,Makefile文件來組織內(nèi)核的各模塊之間的關(guān)系,記錄了各個模塊之間的相互聯(lián)系和依賴關(guān)系。所以,開發(fā)人員要首先修改Linux2.6根目錄下的Makfile文件,修改的主要內(nèi)容是目標(biāo)代碼的類型和為編譯內(nèi)核指定一個編譯器。
④運用Make命令編譯內(nèi)核生成內(nèi)核鏡像文件zImage文件,通過相應(yīng)的固化軟件把這個文件固化在系統(tǒng)相應(yīng)的存儲器中,完成Linux2.6內(nèi)核在ARM微處理器上的移植。
3.2.1 軟件的總體架構(gòu)
嵌入式遠程視頻監(jiān)控系統(tǒng)采用客戶端-服務(wù)器(Client-Server)模型。在客戶端/服務(wù)器模型中,客戶端向服務(wù)器端發(fā)送請求信息服務(wù)器對客戶端的請求信息進行響應(yīng),實現(xiàn)遠程通訊。遠程服務(wù)器端與客戶端的通信采用TCP協(xié)議,TCP協(xié)議是面向連接的、提供差錯控制、超時重發(fā)機制,而視頻數(shù)據(jù)的傳輸采用UDP協(xié)議以提高傳輸速度和實時性。由于UDP協(xié)議沒有提供差錯控制、超時重發(fā)等機制,因此系統(tǒng)使用多媒體數(shù)據(jù)傳輸?shù)膶崟r傳輸協(xié)議RTP(Real time Transport Protocol)和實時傳輸控制協(xié)議RTCP(Real time Transport Control Protocol)。RTP協(xié)議是在因特網(wǎng)上廣泛使用的多媒體數(shù)據(jù)流的一種傳輸協(xié)議,服務(wù)器通過RTP/RTCP協(xié)議向客戶端發(fā)送視頻流[2]。系統(tǒng)軟件結(jié)構(gòu)圖如圖2所示。
圖2 系統(tǒng)軟件結(jié)構(gòu)圖
3.2.2 服務(wù)器端和客戶端軟件設(shè)計
Linux的網(wǎng)絡(luò)功能非常強大,支持多種網(wǎng)絡(luò)協(xié)議。本系統(tǒng)使用套接字接口實現(xiàn)客戶端與服務(wù)器端的通訊。套接字(socket)是由通訊協(xié)議、IP地址和端口三部分組成,其中通訊協(xié)議有TCP和UDP協(xié)議,端口號用來代表通信進程。根據(jù)使用協(xié)議的不同,有三種套接字:流格式、數(shù)據(jù)報格式和原始格式。
3.2.3 視頻采集模塊的設(shè)計
在Linux下加載驅(qū)動程序可以采用動態(tài)和靜態(tài)兩種方式。靜態(tài)加載就是把驅(qū)動程序直接編譯到內(nèi)核里,系統(tǒng)啟動后可以直接調(diào)用;動態(tài)加載利用了可以在系統(tǒng)啟動后用insmod命令把驅(qū)動程序添加上去,在不需要的時候用rmmod命令來卸載。動態(tài)方式與靜態(tài)方式相比,測試要簡單的多。不需要下載整個內(nèi)核,只需通過NFS加載驅(qū)動即可測試。在測試成功后就可以編譯進內(nèi)核。本系統(tǒng)攝像頭驅(qū)動程序采用了動態(tài)加載的方式,在程序啟動時再加載。在Linux操作系統(tǒng)中,外部設(shè)備被看作設(shè)備文件,完成視頻設(shè)備驅(qū)動程序加載后,通過open函數(shù)打開設(shè)備;視頻設(shè)備完成初始化后,進入工作狀態(tài),開始采集視頻幀;系統(tǒng)將采集到的視頻數(shù)據(jù)放在內(nèi)存緩沖區(qū)中,通過Mmap函數(shù)實現(xiàn)內(nèi)存文件與普通文件之間的映射。其主要過程如圖3所示。
為了實現(xiàn)實時傳輸?shù)囊螅枰獙z像頭采集的數(shù)據(jù)進行壓縮處理。基于MPEG-4的視頻壓縮編碼技術(shù)能大幅度降低錄像存儲容量,獲得較高的錄像清晰度,特別適用于長時間實時錄像的需求同時具備在低帶寬上優(yōu)良的網(wǎng)絡(luò)傳輸能力。基于其以上優(yōu)點,本系統(tǒng)選用MPEG-4視頻壓縮編碼方式。MPEG-4將圖像分為三種:I幀、P幀和B幀。編碼流程如圖4所示。
圖3 視頻采集流程圖
圖4 視頻解碼流程圖
為了節(jié)約成本,本系統(tǒng)沒有用專門的視頻編解碼硬件,而是采用了現(xiàn)有開源的的MPEG-4視頻編碼軟件FFmpeg對視頻圖像進行壓縮編碼。FFmpeg是一個高效編碼流的而且具有可移植性的編碼軟件[5],F(xiàn)Fmpeg的開發(fā)是基于linux操作系統(tǒng)的,最適合移植到嵌入式系統(tǒng),是因為它是采用純C語言編寫的,對各種編譯器進行了優(yōu)化,并針對ARM處理器用匯編語言實現(xiàn)了DCT和逆DCT的相互變換。所以本系統(tǒng)中采用了FFmpeg軟件。
本方案設(shè)計采用ARM 9處理器和嵌入式Linux操作系統(tǒng)構(gòu)建了基于MPEG-4遠程視頻監(jiān)控系統(tǒng),系統(tǒng)采用USB攝像頭采集視頻,開源軟件FFMPEG對視頻進行編碼,在工業(yè)監(jiān)控、智能家居等領(lǐng)域具有廣泛的應(yīng)用前景。下一階段我們的重點將主要集中在如何研發(fā)出更適合中國國情的智能家居的產(chǎn)品以及如何進一步提高產(chǎn)品的可擴張性。
[1] GORMAN M,SAHLMAN W A.What do venture capitalists do[J].Journal of Business Venturing,1989,4(4):231-248.
[2] 樊振萍,唐繼勇.基于RTP協(xié)議和MPEG-4的流媒體系統(tǒng)分析與實現(xiàn)[J].西部廣播電視,2004.
[3] 賴曉晨,原旭,孫寧.嵌入式系統(tǒng)程序設(shè)計[M].北京:清華大學(xué)出版社.2001,11:30—31.
[4] 王學(xué)龍.嵌入式Linux系統(tǒng)設(shè)計與應(yīng)用[M].北京:清華大學(xué)出版社.2001.
[5] 李少春.基于FFmpeg的嵌入式視頻監(jiān)控系統(tǒng)[J].電子技術(shù),2007,3.