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