1.引言
隨著通信技術(shù)和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,通過網(wǎng)絡(luò)遠(yuǎn)程實時監(jiān)控重要場所已倍受人們關(guān)注,網(wǎng)絡(luò)攝像機(jī)在此背景下產(chǎn)生,并成為人們關(guān)注的焦點(diǎn)。網(wǎng)絡(luò)攝像機(jī)是一種結(jié)合傳統(tǒng)攝像機(jī)與網(wǎng)絡(luò)技術(shù)所產(chǎn)生的新一代攝像機(jī),它可以將影像通過網(wǎng)絡(luò)傳至地球另一端,且遠(yuǎn)端的瀏覽者不需用任何專業(yè)軟件,只要標(biāo)準(zhǔn)的網(wǎng)絡(luò)瀏覽器(如“Microsoft IE或Netscape)即可監(jiān)視其影像。網(wǎng)絡(luò)攝像機(jī)要將高清晰度的實時視頻信息通過互聯(lián)網(wǎng)傳送到監(jiān)控終端,因其信息量巨大,所以必須壓縮。通常人們采用DSP與MPEG-4算法相結(jié)合的方案來實現(xiàn),不僅編程工作量大,而且產(chǎn)品的成本高。本文所介紹的網(wǎng)絡(luò)攝像機(jī)采用專用的MPEG-4壓縮芯片、以嵌入式Linux作為操作系統(tǒng),不僅開發(fā)便捷、成本低廉,而且實時性好,適用范圍廣。
2.系統(tǒng)總體設(shè)計
系統(tǒng)總體設(shè)計包括硬件設(shè)計和軟件設(shè)計兩部分。這兩部分工作是互相聯(lián)系的,需要交叉進(jìn)行,系統(tǒng)設(shè)計是開發(fā)人員進(jìn)行的工作,他們將系統(tǒng)設(shè)計階段得到的目標(biāo)系統(tǒng)的邏輯模型轉(zhuǎn)換為目標(biāo)系統(tǒng)的物理模型,該階段得到工作成果――系統(tǒng)設(shè)計說明書是下一個階段系統(tǒng)實施的工作依據(jù)。硬件設(shè)計模塊主要包括微控制器模塊、微控制器是將微型計算機(jī)的主要部分集成在一個芯片上的單芯片微型計算機(jī)。
微控制器誕生于20世紀(jì)70年代中期,經(jīng)過20多年的發(fā)展,其成本越來越低,而性能越來越強(qiáng)大,這使其應(yīng)用已經(jīng)無處不在,遍及各個領(lǐng)域。例如電機(jī)控制、條碼閱讀器/掃描器、消費(fèi)類電子、游戲設(shè)備、電話、HVAC、樓宇安全與門禁控制、工業(yè)控制與自動化和白色家電(洗衣機(jī)、微波爐)等。壓縮編碼模塊、網(wǎng)絡(luò)接口模塊和相機(jī)控制模塊四部分。
微控制器模塊主要由主控芯片、DataFlash和SDRAM(1)組成。其中,主控芯片是整個控制系統(tǒng)的核心,它負(fù)責(zé)整個系統(tǒng)的調(diào)度工作。DataFlash里固化了嵌入式Linux內(nèi)核、及其文件系統(tǒng)、應(yīng)用軟件和系統(tǒng)配置文件。壓縮編碼模塊由視頻數(shù)據(jù)采集芯片、MPEG-4壓縮編碼芯片、SDRAM(2)組成,負(fù)責(zé)將視頻流轉(zhuǎn)化為MPEG-4碼流。網(wǎng)絡(luò)接口模塊主要是配合主控芯片傳送MPEG-4碼流。相機(jī)的控制模塊主要由串口芯片組成,其完成轉(zhuǎn)發(fā)控制相機(jī)命令的功能。當(dāng)系統(tǒng)啟動時,微控制器通SPI(Serial Peripheral Interface,串行外設(shè)接口)將Linux內(nèi)核轉(zhuǎn)入SDRAM(1)中,系統(tǒng)從SDRAM(1)中啟動。系統(tǒng)啟動后,微控制器通過HPI(Host Peripherial Interface,主機(jī)接口)控制MPEG-4編碼模塊。統(tǒng)結(jié)構(gòu)如圖1所示。
圖1系統(tǒng)結(jié)構(gòu)框圖
軟件設(shè)計部分主要包括嵌入式Linux移植、MPEG-4壓縮編碼模塊、CGI控制程序和MPEG-4解碼程序四部分。嵌入式Linux系統(tǒng)存放到由AT91RM9200控制的DataFlash里,它負(fù)責(zé)整個系統(tǒng)軟件的調(diào)度工作。MPEG-4壓縮編碼模塊主要負(fù)責(zé)模擬視頻流的采集,并將數(shù)字視頻流壓縮為MPEG-4數(shù)據(jù)流。CGI控制程序主要負(fù)責(zé)對攝像機(jī)的控制和對MPEG-4視頻流的相關(guān)設(shè)置。簡稱CGI.在物理上是一段程序,運(yùn)行在服務(wù)器上,提供同客戶端HTML頁面的接口。這樣說大概還不好理解。那么我們看一個實際例子:現(xiàn)在的個人主頁上大部分都有一個留言本。留言本的工作是這樣的:先由用戶在客戶端輸入一些信息,如名字之類的東西。接著用戶按一下”留言“(到目前為止工作都在客戶端),瀏覽器把這些信息傳送到服務(wù)器的CGI目錄下特定的cgi程序中,于是cgi程序在服務(wù)器上按照預(yù)定的方法進(jìn)行處理。在本例中就是把用戶提交的信息存入指定的文件中。然后cgi程序給客戶端發(fā)送一個信息,表示請求的任務(wù)已經(jīng)結(jié)束。此時用戶在瀏覽器里將看到”留言結(jié)束“的字樣。整個過程結(jié)束。MPEG-4解碼程序主要負(fù)責(zé)對通過網(wǎng)絡(luò)得到的MPEG-4數(shù)據(jù)流的解碼工作。
3.硬件設(shè)計
3.1微控制器模塊
微控制器是本系統(tǒng)的核心部件,選用的是ATMEL公司的AT91RM9200.它是一款基于ARM920T核的32位微控制器。其主頻為180MHz,處理速度快,功能強(qiáng),性價比高,能很好滿足嵌入式Linux系統(tǒng)的需求。它在系統(tǒng)中的主要作用是在系統(tǒng)上電時配置其他芯片的功能寄存器,在正常工作狀態(tài)下調(diào)度控制整個系統(tǒng)工作,通過片內(nèi)以太網(wǎng)控制器控制物理層芯片發(fā)送碼流。
AT91RM9200通過片內(nèi)的SPI總線和SDRAM控制器實現(xiàn)對外圍DataFlash和SDRAM的控制,利用片內(nèi)的USART實現(xiàn)對串口芯片的控制,通過片內(nèi)的以太網(wǎng)控制器對片外網(wǎng)絡(luò)芯片進(jìn)行控制。其控制原理圖如圖2所示。
圖2控制原理圖
3.2壓縮編碼模塊
壓縮編碼模塊包括模擬視頻采集模塊和MPEG-4壓縮模塊。視頻采集芯片采用TI公司的TVP5150,數(shù)據(jù)壓縮芯片采用映佳公司的MPG440.TVP5150輸入端可是兩種混合視頻信號也可是S-Video端子的視頻信號,支持NTSC、PAL、SECAM等3種制式,其輸出的數(shù)據(jù)色彩格式可以為8bit 4:2:2數(shù)字信號或者8bit同步ITU-R BT.656數(shù)字信號。MPG440芯片具有符合工業(yè)標(biāo)準(zhǔn)的16b/32b的雙向主機(jī)接口,分別用來與視頻采集芯片和微控制器芯片通信。同時,具有移動偵測、防偽水印、動態(tài)調(diào)整IP畫格比率、動態(tài)調(diào)整圖像質(zhì)量等特性,支持D1、VGA、CIF、QVGA、QCI等五種分辨率模式。微壓縮編碼模塊的硬件設(shè)計原理如圖3所示。
圖3壓縮編碼電路
TVP5150的AI模擬輸入口與模擬攝像頭輸出端連接,向視頻處理芯片傳送模擬視頻信號。模擬信號經(jīng)過采樣處理之后通過YOUT0~YOUT7引腳送到MPG440,采樣數(shù)據(jù)在PCLK的上升沿有效,MPG440的VIDEO_CLK在收到PCLK的上升沿時獲得YOUT的信號。TVP5150分場同步脈沖和行同步脈沖,分別對應(yīng)其輸出端VSYNC、HSYNC.MPG440正是根據(jù)與之相連的VSYNC和HSYNC信號線來實現(xiàn)圖像的場同步和行同步操作。MPG440的視頻輸入數(shù)據(jù)線DATA_TV0~DATA_TV7與TVP5150的YOUT0~YOUT7相連。MPG440在接收數(shù)據(jù)的同時,將其得到的數(shù)據(jù)流傳送給MPEG-4壓縮編碼單元,編碼后的MPEG-4數(shù)據(jù)流暫存到SDRAM(2)中。MPG440片內(nèi)PDMA控制器根據(jù)配置寄存器的設(shè)置準(zhǔn)確發(fā)起對SDRAM(2)訪問,同時將得到的數(shù)據(jù)流輸送往HPI(主機(jī)總線接口,Host Peripherial Interface),以等待AT91RM9200通過DMA通道將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)。
MPG440通過HPI與AT91RM9200通信,AT91RM9200將MPG440的寄存器、存儲空間等資源作為其本身內(nèi)存尋址訪問。MPG440由AT91RM9200選通線NCS4來選通,其在AT91RM9200尋址空間中的地址段為0X50000000到0X5FFFFFFF.通過對MPG440一系列寄存器的設(shè)置,可以訪問MPG440系統(tǒng)存儲空間。MPG440中斷信號RSC_INT0從通用I/O引腳的PB29輸入,當(dāng)緩沖器填滿時,RSC_INT0引腳置低提示AT91RM9200通過DMA通道提取MPEG-4數(shù)據(jù)流。編碼后視頻數(shù)據(jù)讀取過程和MPG440與主機(jī)通信過程由AT91RM9200讀信號CFRD和寫信號CFWE控制。
3.3網(wǎng)絡(luò)模塊
網(wǎng)絡(luò)模塊硬件設(shè)計原理如圖4所示。
圖4網(wǎng)絡(luò)模塊電路
AT91RM9200的在片以太網(wǎng)卡端口和網(wǎng)絡(luò)物理層芯片DM9161E的MII接口通信。發(fā)送數(shù)據(jù)時,首先置發(fā)送使能信號ETXEN有效。數(shù)據(jù)發(fā)送端ETX0~ETX1與DM9161的ETXO~ETX1引腳對應(yīng)連接,作為數(shù)據(jù)發(fā)送通道,以DM9161E的時鐘信號REF_CLK發(fā)送數(shù)據(jù)。數(shù)據(jù)接收端ERX 0~ERX1與DM9161E的RXDO~RXD1引腳對應(yīng)連接,作為數(shù)據(jù)接收通道。管理時鐘信號EMDC和管理數(shù)據(jù)輸入輸出信號EMDIO用來芯片控制參數(shù)的寫入和讀取。DM9161E的MDINTR端用來產(chǎn)生中斷信號。
片內(nèi)以太網(wǎng)卡通過DMA通道進(jìn)行數(shù)據(jù)的發(fā)送,不影響AT91RM9200的正常運(yùn)行。首先正確設(shè)置傳送控制寄存器和傳送地址寄存器的傳送數(shù)據(jù)塊字節(jié)數(shù)、數(shù)據(jù)塊存儲首地址等參數(shù),隨后依次從指定數(shù)據(jù)存儲區(qū)地址讀取1024b數(shù)據(jù),送入內(nèi)部發(fā)送緩沖器中,由MAC對數(shù)據(jù)進(jìn)行封裝發(fā)送,同時記錄已傳送字節(jié)數(shù),直到數(shù)據(jù)塊發(fā)送完畢。當(dāng)發(fā)送完一組數(shù)據(jù)后,發(fā)出DMA中斷請求,由AT91RM9200進(jìn)行相應(yīng)的處理。整個網(wǎng)絡(luò)子系統(tǒng)電路由AT91RM9200控制和調(diào)度。
4.軟件設(shè)計
嵌入式Linux系統(tǒng)主要由四個部分組成引導(dǎo)內(nèi)核啟動的文件(bootloader)、Linux內(nèi)核文件(kernel)、虛擬磁盤文件(ramdisk)、用戶空間文件(user)。它們分別被放在DataFlash內(nèi)的四個分區(qū)模塊中。根據(jù)不同模塊的具體功能采用不同的文件系統(tǒng):bootloader、kernel、ramdisk,移植完成后不需要動態(tài)改變,使用較節(jié)省空間的ROMFS只讀文件系統(tǒng);user模塊內(nèi)放置一些可以動態(tài)更新的配置文件等,需要進(jìn)行較多的讀寫操作,所以使用支持動態(tài)擦寫保存的JFFS2文件系統(tǒng)。inux做嵌入式的優(yōu)勢,首先,Linux是開放源代碼的,不存在黑箱技術(shù),遍布全球的眾多Linux愛好者又是Linux開發(fā)者的強(qiáng)大技術(shù)支持;其次,Linux的內(nèi)核小、效率高,內(nèi)核的更新速度很快,linux是可以定制的,其系統(tǒng)內(nèi)核最小只有約134KB.第三,Linux是免費(fèi)的OS,在價格上極具競爭力。Linux還有著嵌入式操作系統(tǒng)所需要的很多特色,突出的就是Linux適應(yīng)于多種CPU和多種硬件平臺,是一個跨平臺的系統(tǒng)。到目前為止,它可以支持二三十種CPU.而且性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易。
Linux移植技術(shù)已經(jīng)成熟,本文不作詳細(xì)的闡述。下文主要介紹MPEG-4壓縮編碼模塊和CGI模塊的程序設(shè)計。
4.1 MPEG-4壓縮編碼模塊程序設(shè)計
該模塊主要完成MPG440和TI5150相關(guān)寄存器的配置,并保證MPEG-4碼流的正常輸出。當(dāng)嵌入式Linux系統(tǒng)啟動后,首先配置MPG440的相關(guān)寄存器,其初始化完成后,通過I2C總線對TVP5150進(jìn)行初始化配置。當(dāng)系統(tǒng)開始壓縮編碼時,MPEG-4碼流接收存儲程序由MPEG-440的數(shù)據(jù)流緩沖器標(biāo)志信號控制。
MPEG-4壓縮編碼模塊程序流程如圖4所示。
圖5 MPEG-4壓縮編碼模塊程序流程圖
4.2 CGI程序模塊設(shè)計
CGI(Common Gateway Interface)是外部擴(kuò)展應(yīng)用程序與WWW服務(wù)器交互的一個標(biāo)準(zhǔn)接口。本系統(tǒng)CGI的工作過程:在PC機(jī)端的IE瀏覽器中輸入網(wǎng)絡(luò)攝像機(jī)IP地址,嵌入式網(wǎng)絡(luò)服務(wù)器根據(jù)請求,將相應(yīng)的控制頁面反饋給IE瀏覽器,用戶填寫表單,然后提交,CGI程序提取表單的信息,根據(jù)不同信息來分別處理相應(yīng)的事件,如調(diào)節(jié)MPEG-4相關(guān)屬性、相機(jī)的相關(guān)操作等。CGI控制原理如圖5所示。
圖6 CGI控制原理圖
評論
查看更多