基于S3C2410網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)
1 引言
本文引用地址:http://m.butianyuan.cn/article/81070.htm視頻監(jiān)控系統(tǒng)是日常生產(chǎn)生活中的重要輔助設(shè)備,應(yīng)用十分廣泛。當前視頻監(jiān)控系統(tǒng)正逐步由模擬化走向數(shù)字化。隨著視頻壓縮技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,開發(fā)新一代的基于計算機網(wǎng)絡(luò)和多媒體MPEG-4壓縮算法的視頻監(jiān)控系統(tǒng)已成為整個行業(yè)技術(shù)發(fā)展的主要方向之一。通常人們采用DSP與MPEG-4算法結(jié)合的方案來實現(xiàn),在編程的工作上有巨大的復(fù)雜程度,而且成本也過高。本文提出并研究設(shè)計一種基于MPEG-4專用壓縮芯片MPG440、以嵌入式Linux為操作系統(tǒng)的視頻監(jiān)控系統(tǒng)方案,不僅開發(fā)便捷、成本低廉,而且實時性較好,適應(yīng)范圍廣。
2 視頻監(jiān)控系統(tǒng)總體設(shè)計
整個系統(tǒng)的總體設(shè)計分為硬件和軟件系統(tǒng)兩部分。硬件設(shè)計部分主要包括以下幾個模塊:系統(tǒng)主控制器、壓縮編碼部分、網(wǎng)絡(luò)接口模塊、攝像機控制模塊以及PC端監(jiān)控部分。系統(tǒng)的主控制器模塊主要有主控制芯片S3C2410、數(shù)據(jù)存儲Nand Flash以及內(nèi)存單元SDRAM組成。其中主控制芯片S3C2410主要負責系統(tǒng)的整體調(diào)度,為整個系統(tǒng)的核心;Nand Flash里固化了Linux的Bootloader、系統(tǒng)內(nèi)核、文件系統(tǒng)、應(yīng)用程序以及環(huán)境變量和系統(tǒng)配置文件等;SDRAM作為內(nèi)存單元供系統(tǒng)運行時使用。壓縮編碼部分主要由視頻數(shù)據(jù)采集芯片、MPEG-4壓縮芯片以及SDRAM組成,負責將視頻流轉(zhuǎn)化為MPEG-4數(shù)據(jù)流。網(wǎng)絡(luò)接口模塊主要負責傳輸MPEG-4視頻流。攝像機的控制部分主要由串口芯片組成,用于實現(xiàn)轉(zhuǎn)發(fā)控制相機命令的功能。PC端則通過瀏覽器進行視頻的監(jiān)測并可發(fā)送控制命令對攝像機狀態(tài)進行控制。主控制器通過對片內(nèi)Nand Flash控制器的操作將Linux內(nèi)核從Nand Flash中轉(zhuǎn)入SDRAM中,Linux系統(tǒng)內(nèi)核從內(nèi)存單元啟動。系統(tǒng)啟動后,主控制器通過主機接口(HPI)控制MPEG-4壓縮編碼模塊,系統(tǒng)結(jié)構(gòu)框圖如圖(1)所示。
圖(1) 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)的軟件部分主要由嵌入式Linux的Bootloader和內(nèi)核的移植、MPEG-4壓縮編碼模塊、CGI控制程序的實現(xiàn)以及MPEG-4解碼程序的實現(xiàn)等四部分組成。Linux系統(tǒng)存儲在Nand Flash中,負責系統(tǒng)軟件的調(diào)度。MPEG-4壓縮編碼模塊主要負責模擬視頻流的采集和A/D轉(zhuǎn)換,并將數(shù)字視頻流壓縮為MPEG-4數(shù)據(jù)流以便網(wǎng)絡(luò)的傳輸。CGI控制程序主要實現(xiàn)攝像機的控制以及對MPEG-4視頻流的相關(guān)設(shè)置。MPEG-4解碼程序則是在PC端對通過網(wǎng)絡(luò)取得的MPEG-4數(shù)據(jù)流進行解碼播放。
3 系統(tǒng)硬件設(shè)計
3.1 主控制器模塊
在整個系統(tǒng)中,主控制器是核心部件。文中選用的是三星公司的S3C2410,是一款基于ARM920T核的32位微控制器,其主頻可達203HZ,性價比較高,能很好的滿足嵌入式Linux系統(tǒng)的性能需求。其主要功能是在正常工作狀態(tài)下調(diào)度控制整個系統(tǒng)工作,在系統(tǒng)上電時配置所有需工作的芯片的功能寄存器,并通過以太網(wǎng)控制器控制物理層芯片發(fā)送視頻碼流。
S3C2410通過片內(nèi)的Nand Flash控制器和SDRAM控制器對外圍的 Nand Flash和內(nèi)存單元SDRAM進行控制,利用片內(nèi)的標準UART實現(xiàn)對串口芯片的控制,通過片內(nèi)地址、數(shù)據(jù)以及控制總線對片外的網(wǎng)絡(luò)芯片進行控制。系統(tǒng)控制原理框圖如圖(2)所示。
3.2 壓縮編碼模塊
壓縮編碼模塊包括兩部分:模擬視頻信號采集和MPEG-4壓縮模塊。視頻輸入解碼芯片采用TI公司的TVP5150,壓縮編碼芯片采用映佳公司的MPG440。TVP5105支持NTSC/PAL/SECAM等3種制式,實現(xiàn)模擬視頻信號轉(zhuǎn)換為數(shù)字并行信號ITU-R BT.601 或ITU-R BT.656碼流格式,正常工作時的功耗僅為115mW。MPG440具有采用符合工業(yè)標準的16b/32b的雙向主機接口,用來與視頻解碼芯片和主控制器進行通信,而且支持VGA、QVGA、CIF、QCI、D1五種分辨率模式。主控制芯片通過HPI接口實現(xiàn)MPG440寄存器的初始化配置,接收MPEG-4數(shù)據(jù)流,整個壓縮編碼模塊硬件原理圖如圖(3)所示。
圖(3) 壓縮編碼模塊電路
解碼芯片TVP5150的AIPIA模擬信號輸入口與攝像頭的信號輸出端相連,并向壓縮編碼芯片MPG440傳送視頻信號。由于TVP5150分場同步脈沖和行同步脈沖,分別對應(yīng)的輸出端為VSYNC和HSYNC,MPG440根據(jù)與之相連的VSYNC和HSYNC信號線來實現(xiàn)圖象的場同步和行同步操作,MPG440的視頻信號輸入數(shù)據(jù)線DATA_TV[7:0]與TVP5150的輸出端YOUT[7:0]相連。MPG440將接收到的數(shù)據(jù)流傳送到壓縮編碼單元,壓縮編碼后的視頻數(shù)據(jù)存儲到外部SDRAM中,TVP5150所需的14.31818M赫茲時鐘頻率由外部硬件電路提供,MPG440可通過I/O口對TVP5150的參數(shù)進行設(shè)置。MPG440通過片內(nèi)的PDMA控制器和SDRAM控制器來實現(xiàn)對SDRAM的訪問,并同時將數(shù)據(jù)流通過HPI總線發(fā)送到S3C2410以便通過網(wǎng)絡(luò)進行傳輸。
3.3 網(wǎng)絡(luò)傳輸模塊
S3C2410通過地址、數(shù)據(jù)、控制線以及片選信號線對CS8900A網(wǎng)絡(luò)芯片進行控制和通信。主芯片發(fā)送信號時首先置發(fā)送使能信號,數(shù)據(jù)發(fā)送信號端TXD0~TXD1與CS8900A的
TXD0~TXD1引腳連接,作為數(shù)據(jù)的發(fā)送通道。數(shù)據(jù)接收端RXD0~RXD1與CS8900A的RXD0~RXD1引腳對應(yīng)連接,為數(shù)據(jù)接收通道。CS8900A由S3C2410選通信號線nCS3來選通,通過對CS8900A一系列寄存器的設(shè)置,可以訪問CS8900A系統(tǒng)存儲空間。CS8900A的INTRQ0端用來產(chǎn)生中斷信號。
以太網(wǎng)控制芯片通過DMA通道進行數(shù)據(jù)的傳輸。首先設(shè)置好傳輸控制和傳輸?shù)刂芳拇嫫鞯膮?shù),依次從指定的數(shù)據(jù)存儲區(qū)域讀取數(shù)據(jù),送入內(nèi)部發(fā)送緩沖器中,用MAC對數(shù)據(jù)進行封狀發(fā)送,并同時記錄已發(fā)送完的字節(jié)數(shù),等到整個數(shù)據(jù)塊發(fā)送完畢。一組數(shù)據(jù)發(fā)送完后,請求DMA中斷,由S3C2410進行處理。整個網(wǎng)絡(luò)模塊硬件設(shè)計原理圖如圖(4)所示。
4 系統(tǒng)軟件設(shè)計
整個Linux系統(tǒng)由四部分組成:引導(dǎo)加載程序(BootLoader)、Linux內(nèi)核(Kernel)、文件系統(tǒng)(filesystem)以及用戶空間(user)。四者分別被存儲在Nand Flash的四個分區(qū)模塊中。本文中采用的是較節(jié)省空間的CRAMFS只讀文件系統(tǒng),而Bootloader以及內(nèi)核Kernel等在移植完成后可不需動態(tài)改變,user用戶空間則用來存放一些可以動態(tài)更新的配置文件,需要進行多次的讀寫操作,故可以使用支持動態(tài)擦寫保存的JFFS2文件系統(tǒng)。由于Linux系統(tǒng)移植技術(shù)已經(jīng)很成熟,本文中不再細述,下文主要介紹MPEG-4壓縮編碼和CGI模塊的程序設(shè)計。
4.1 MPEG-4壓縮編碼程序設(shè)計
整個壓縮編碼模塊完成了MPG440和TVP5150相關(guān)寄存器的配置,保證了MPEG-4數(shù)據(jù)流的正常輸出。系統(tǒng)啟動后,首先配置MPG440的寄存器,初始化完成后,通過I2C總線對TVP5150進行初始化配置。在壓縮編碼過程中,MPEG-4數(shù)據(jù)流接收存儲程序由MPG440的數(shù)據(jù)流緩沖器標志信號來進行控制。當緩沖器滿時,RISC_INT0置低,主控制器通過DMA通道把從MPG440的HPI接口接收過來的碼流通過網(wǎng)絡(luò)通道傳輸?shù)絇C端。其壓縮編碼模塊程序流程圖如圖(5)所示。
4.2 CGI程序設(shè)計
CGI(Common Gateway Interface)是外部應(yīng)用程序與萬維網(wǎng)(WWW)服務(wù)器交互通信的一個標準接口。在本系統(tǒng)中,其工作過程如下:在監(jiān)控端的PC機的瀏覽器中輸入網(wǎng)絡(luò)攝像機的IP地址,嵌入式網(wǎng)絡(luò)服務(wù)器根據(jù)請求,將相應(yīng)的控制頁面反饋給IE瀏覽器,用戶填寫完表單,然后提交,CGI程序根據(jù)表單的信息,來處理相應(yīng)的事件,如設(shè)置MPG440相關(guān)屬性、相機的云臺和鏡頭的相關(guān)操作等。CGI的控制原理圖如圖(6)所示。
CGI模塊程序的設(shè)計主要包括如下幾部分:WEB服務(wù)器的配置、html頁面的編寫、CGI程序的設(shè)計。嵌入式WEB服務(wù)器采用的是Boa,其配置是以文件的形式提供,放在文件系統(tǒng)中的/etc/httpd/conf/目錄下面,其配置主要涉及以下幾個方面:
(1)配置根文件的路徑:“DocumentRoot /home/httpd/html/”,html頁面必須放到此目錄下。
(2)配置CGI程序所存放路徑:“ScriptAlias /cgi-bin/ home/httpd/cgi-bin/”。
(3)配置環(huán)境變量:“SetEnv D_LIBRARY-_PATH=/lib:/usr/local/lib:/usr/lib”,該變量將會被傳送到CGI腳本和SSI頁面,以保證CIG程序能正確找到所依賴的庫文件。
網(wǎng)頁頁面的編寫采用html與shtml相結(jié)合的方法。Html的解析速度較快,而shtml可以在普通網(wǎng)頁中嵌入外部CGI程序,通過這種方式將系統(tǒng)的默認配置反饋給客戶端。
CGI程序的設(shè)計采用的是C語言和shell腳本相結(jié)合的方式,其編寫過程和Linux下其他程序的編寫相同,在此不在贅述。
4.3 MPEG-4解碼程序
由于映佳科技已經(jīng)提供了供二次開發(fā)的MPEG-4解碼插件OCX,OCX在PC機注冊后可以方便的被網(wǎng)頁調(diào)用,實現(xiàn)在PC端實時觀看圖象。
5 結(jié)語
本文敘述了一種基于S3C2410、MPG440以及TVP5150等芯片設(shè)計的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的實現(xiàn)方案。在測試過程中,該系統(tǒng)實時性好、穩(wěn)定可靠、圖象質(zhì)量也比較優(yōu)越,可廣泛應(yīng)用于銀行、交通以及工業(yè)監(jiān)控、視頻會議等眾多領(lǐng)域。
本文作者創(chuàng)新點:設(shè)計了一個基于S3C2410的遠程圖像監(jiān)控系統(tǒng)的實現(xiàn)方案,詳細討論了整個系統(tǒng)中的硬、軟件設(shè)計與實現(xiàn)。
參考文獻:
[1]趙印偉,謝勝利. 基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機的設(shè)計與實現(xiàn)[J]微計算機信息2006,5:26-28
[2]缐崴,孫先仿. 攝像機運動參數(shù)估計中的8點算法及其改進[J]微計算機信息2005, 8:99-100
[3]Ken Arnold, Embedded Controller Hardware Designe, USA, LLH Technology Publishing
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
c語言相關(guān)文章:c語言教程
linux相關(guān)文章:linux教程
攝像頭相關(guān)文章:攝像頭原理
評論