《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
微計(jì)算機(jī)信息
趙印偉 謝勝利
摘要: 基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機(jī)的設(shè)計(jì)與實(shí)現(xiàn),1. 引言隨著通信技術(shù)和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,,通過(guò)網(wǎng)絡(luò)遠(yuǎn)程實(shí)時(shí)監(jiān)控重要場(chǎng)所已倍受人們關(guān)注,,網(wǎng)絡(luò)攝像機(jī)在此背景下產(chǎn)生,,并成為人們關(guān)注的焦點(diǎn),。網(wǎng)絡(luò)攝像機(jī)要將高清晰度的實(shí)時(shí)視頻信息通過(guò)互聯(lián)網(wǎng)傳送到監(jiān)控終端,,因
Abstract:
Key words :

1. 引言
隨著通信技術(shù)和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,,通過(guò)網(wǎng)絡(luò)遠(yuǎn)程實(shí)時(shí)監(jiān)控重要場(chǎng)所已倍受人們關(guān)注,,網(wǎng)絡(luò)攝像機(jī)在此背景下產(chǎn)生,,并成為人們關(guān)注的焦點(diǎn),。網(wǎng)絡(luò)攝像機(jī)要將高清晰度的實(shí)時(shí)視頻信息通過(guò)互聯(lián)網(wǎng)傳送到監(jiān)控終端,,因其信息量巨大,所以必須壓縮,。通常人們采用DSP與MPEG-4算法相結(jié)合的方案來(lái)實(shí)現(xiàn),,不僅編程工作量大,而且產(chǎn)品的成本高,。本文所介紹的網(wǎng)絡(luò)攝像機(jī)采用專用的MPEG-4壓縮芯片,、以嵌入式Linux作為操作系統(tǒng),不僅開(kāi)發(fā)便捷,、成本低廉,,而且實(shí)時(shí)性好,適用范圍廣,。
2. 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)總體設(shè)計(jì)包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分,。硬件設(shè)計(jì)模塊主要包括微控制器模塊、壓縮編碼模塊,、網(wǎng)絡(luò)接口模塊和相機(jī)控制模塊四部分,。微控制器模塊主要由主控芯片、DataFlash和SDRAM(1)組成,。其中,,主控芯片是整個(gè)控制系統(tǒng)的核心,它負(fù)責(zé)整個(gè)系統(tǒng)的調(diào)度工作,。DataFlash里固化了嵌入式Linux內(nèi)核,、及其文件系統(tǒng)、應(yīng)用軟件和系統(tǒng)配置文件,。SDRAM(1)作為內(nèi)存供系統(tǒng)運(yùn)行使用,。壓縮編碼模塊由視頻數(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)啟動(dòng)時(shí),微控制器通SPI(Serial Peripheral Interface,,串行外設(shè)接口)將Linux內(nèi)核轉(zhuǎn)入SDRAM(1)中,,系統(tǒng)從SDRAM(1)中啟動(dòng)。系統(tǒng)啟動(dòng)后,,微控制器通過(guò)HPI(Host Peripherial Interface, 主機(jī)接口)控制MPEG-4編碼模塊,。統(tǒng)結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)框圖
軟件設(shè)計(jì)部分主要包括嵌入式Linux移植,、MPEG-4壓縮編碼模塊,、CGI控制程序和MPEG-4解碼程序四部分。嵌入式Linux系統(tǒng)存放到由AT91RM9200控制的DataFlash里,它負(fù)責(zé)整個(gè)系統(tǒng)軟件的調(diào)度工作,。MPEG-4壓縮編碼模塊主要負(fù)責(zé)模擬視頻流的采集,,并將數(shù)字視頻流壓縮為MPEG-4數(shù)據(jù)流。CGI控制程序主要負(fù)責(zé)對(duì)攝像機(jī)的控制和對(duì)MPEG-4視頻流的相關(guān)設(shè)置,。MPEG-4解碼程序主要負(fù)責(zé)對(duì)通過(guò)網(wǎng)絡(luò)得到的MPEG-4數(shù)據(jù)流的解碼工作。
3. 硬件設(shè)計(jì)
3.1微控制器模塊
微控制器是本系統(tǒng)的核心部件,,選用的是ATMEL公司的AT91RM9200,。它是一款基于ARM920T核的32位微控制器。其主頻為180MHz,,處理速度快,,功能強(qiáng),性價(jià)比高,,能很好滿足嵌入式Linux系統(tǒng)的需求,。它在系統(tǒng)中的主要作用是在系統(tǒng)上電時(shí)配置其他芯片的功能寄存器,在正常工作狀態(tài)下調(diào)度控制整個(gè)系統(tǒng)工作,,通過(guò)片內(nèi)以太網(wǎng)控制器控制物理層芯片發(fā)送碼流,。
    AT91RM9200通過(guò)片內(nèi)的SPI總線和SDRAM控制器實(shí)現(xiàn)對(duì)外圍DataFlash和SDRAM的控制,利用片內(nèi)的USART實(shí)現(xiàn)對(duì)串口芯片的控制,,通過(guò)片內(nèi)的以太網(wǎng)控制器對(duì)片外網(wǎng)絡(luò)芯片進(jìn)行控制,。其控制原理圖如圖2所示。

圖2 控制原理圖
3.2壓縮編碼模塊
壓縮編碼模塊包括模擬視頻采集模塊和MPEG-4壓縮模塊,。視頻采集芯片采用TI公司的TVP5150,,數(shù)據(jù)壓縮芯片采用映佳公司的MPG440。TVP5150輸入端可是兩種混合視頻信號(hào)也可是S-Video端子的視頻信號(hào),,支持NTSC,、PAL、SECAM等3種制式,,其輸出的數(shù)據(jù)色彩格式可以為8bit 4:2:2數(shù)字信號(hào)或者8bit同步ITU-R BT.656數(shù)字信號(hào),。MPG440芯片具有符合工業(yè)標(biāo)準(zhǔn)的16b/32b的雙向主機(jī)接口,分別用來(lái)與視頻采集芯片和微控制器芯片通信,。同時(shí),具有移動(dòng)偵測(cè),、防偽水印,、動(dòng)態(tài)調(diào)整IP畫格比率、動(dòng)態(tài)調(diào)整圖像質(zhì)量等特性,,支持D1,、VGA、CIF,、QVGA,、QCI等五種分辨率模式。微控制器通過(guò)主機(jī)接口實(shí)現(xiàn)MPG440的初始配置,,也由此接收MPEG-4碼流,。壓縮編碼模塊的硬件設(shè)計(jì)原理如圖3所示。

圖3 壓縮編碼電路
 TVP5150的AI模擬輸入口與模擬攝像頭輸出端連接,,向視頻處理芯片傳送模擬視頻信號(hào),。模擬信號(hào)經(jīng)過(guò)采樣處理之后通過(guò)YOUT0~YOUT7引腳送到MPG440,采樣數(shù)據(jù)在PCLK的上升沿有效,,MPG440的VIDEO_CLK在收到PCLK的上升沿時(shí)獲得YOUT的信號(hào),。TVP5150分場(chǎng)同步脈沖和行同步脈沖,分別對(duì)應(yīng)其輸出端VSYNC,、HSYNC,。MPG440正是根據(jù)與之相連的VSYNC和HSYNC信號(hào)線來(lái)實(shí)現(xiàn)圖像的場(chǎng)同步和行同步操作。MPG440的視頻輸入數(shù)據(jù)線DATA_TV0~DATA_TV7與TVP5150的YOUT0~YOUT7相連,。MPG440在接收數(shù)據(jù)的同時(shí),,將其得到的數(shù)據(jù)流傳送給MPEG-4壓縮編碼單元,編碼后的MPEG-4數(shù)據(jù)流暫存到SDRAM(2)中,。MPG440片內(nèi)PDMA控制器根據(jù)配置寄存器的設(shè)置準(zhǔn)確發(fā)起對(duì)SDRAM(2)訪問(wèn),,同時(shí)將得到的數(shù)據(jù)流輸送往HPI(主機(jī)總線接口,Host Peripherial Interface),以等待AT91RM9200通過(guò)DMA通道將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),。
  MPG440通過(guò)HPI與AT91RM9200通信,,AT91RM9200將MPG440的寄存器、存儲(chǔ)空間等資源作為其本身內(nèi)存尋址訪問(wèn),。MPG440由AT91RM9200選通線NCS4來(lái)選通,,其在AT91RM9200尋址空間中的地址段為0X50000000到0X5FFFFFFF。通過(guò)對(duì)MPG440一系列寄存器的設(shè)置,,可以訪問(wèn)MPG440系統(tǒng)存儲(chǔ)空間,。MPG440中斷信號(hào)RSC_INT0從通用I/O引腳的PB29輸入,當(dāng)緩沖器填滿時(shí),,RSC_INT0引腳置低提示AT91RM9200通過(guò)DMA通道提取MPEG-4數(shù)據(jù)流,。編碼后視頻數(shù)據(jù)讀取過(guò)程和MPG440與主機(jī)通信過(guò)程由AT91RM9200讀信號(hào)CFRD和寫信號(hào)CFWE控制,。
3.3網(wǎng)絡(luò)模塊
網(wǎng)絡(luò)模塊硬件設(shè)計(jì)原理如圖4所示。

圖4 網(wǎng)絡(luò)模塊電路
AT91RM9200的在片以太網(wǎng)卡端口和網(wǎng)絡(luò)物理層芯片DM9161E的MII接口通信,。發(fā)送數(shù)據(jù)時(shí),,首先置發(fā)送使能信號(hào)ETXEN有效。數(shù)據(jù)發(fā)送端ETX0~ETX1與DM9161的ETXO~ETX1引腳對(duì)應(yīng)連接,,作為數(shù)據(jù)發(fā)送通道,,以DM9161E的時(shí)鐘信號(hào)REF_CLK發(fā)送數(shù)據(jù)。數(shù)據(jù)接收端ERX 0~ERX1與DM9161E的RXDO~RXD1引腳對(duì)應(yīng)連接,,作為數(shù)據(jù)接收通道,。管理時(shí)鐘信號(hào)EMDC和管理數(shù)據(jù)輸入輸出信號(hào)EMDIO用來(lái)芯片控制參數(shù)的寫入和讀取。DM9161E的MDINTR端用來(lái)產(chǎn)生中斷信號(hào),。
片內(nèi)以太網(wǎng)卡通過(guò)DMA通道進(jìn)行數(shù)據(jù)的發(fā)送,,不影響AT91RM9200的正常運(yùn)行。首先正確設(shè)置傳送控制寄存器和傳送地址寄存器的傳送數(shù)據(jù)塊字節(jié)數(shù),、數(shù)據(jù)塊存儲(chǔ)首地址等參數(shù),,隨后依次從指定數(shù)據(jù)存儲(chǔ)區(qū)地址讀取1024b數(shù)據(jù),送入內(nèi)部發(fā)送緩沖器中,,由MAC對(duì)數(shù)據(jù)進(jìn)行封裝發(fā)送,,同時(shí)記錄已傳送字節(jié)數(shù),直到數(shù)據(jù)塊發(fā)送完畢,。當(dāng)發(fā)送完一組數(shù)據(jù)后,發(fā)出DMA中斷請(qǐng)求,,由AT91RM9200進(jìn)行相應(yīng)的處理,。整個(gè)網(wǎng)絡(luò)子系統(tǒng)電路由AT91RM9200控制和調(diào)度。
4.軟件設(shè)計(jì)
嵌入式Linux系統(tǒng)主要由四個(gè)部分組成:引導(dǎo)內(nèi)核啟動(dòng)的文件(bootloader),、Linux內(nèi)核文件(kernel),、虛擬磁盤文件(ramdisk)、用戶空間文件(user),。它們分別被放在DataFlash內(nèi)的四個(gè)分區(qū)模塊中,。根據(jù)不同模塊的具體功能采用不同的文件系統(tǒng):bootloader、kernel,、ramdisk,,移植完成后不需要?jiǎng)討B(tài)改變,使用較節(jié)省空間的ROMFS只讀文件系統(tǒng),;user模塊內(nèi)放置一些可以動(dòng)態(tài)更新的配置文件等,,需要進(jìn)行較多的讀寫操作,所以使用支持動(dòng)態(tài)擦寫保存的JFFS2文件系統(tǒng)[1],。
Linux移植技術(shù)已經(jīng)成熟,,本文不作詳細(xì)的闡述,。下文主要介紹MPEG-4壓縮編碼模塊和CGI模塊的程序設(shè)計(jì)。
4.1 MPEG-4壓縮編碼模塊程序設(shè)計(jì)
該模塊主要完成MPG440和TI5150相關(guān)寄存器的配置,,并保證MPEG-4碼流的正常輸出,。當(dāng)嵌入式Linux系統(tǒng)啟動(dòng)后,首先配置MPG440的相關(guān)寄存器,其初始化完成后,,通過(guò)I2C總線對(duì)TVP5150進(jìn)行初始化配置[2],。當(dāng)系統(tǒng)開(kāi)始?jí)嚎s編碼時(shí),MPEG-4碼流接收存儲(chǔ)程序由MPEG-440的數(shù)據(jù)流緩沖器標(biāo)志信號(hào)控制,。當(dāng)1024b緩沖器滿時(shí),,RISC_INT0置于低電平,微控制器通過(guò)DMA通道從MPG440的HPI口將碼流送到PC機(jī)端,。MPEG-4壓縮編碼模塊程序流程如圖4所示,。

圖5 MPEG-4壓縮編碼模塊程序流程圖
4.2 CGI程序模塊設(shè)計(jì)
CGI(Common Gateway Interface)是外部擴(kuò)展應(yīng)用程序與WWW服務(wù)器交互的一個(gè)標(biāo)準(zhǔn)接口。本系統(tǒng)CGI的工作過(guò)程:在PC機(jī)端的IE瀏覽器中輸入網(wǎng)絡(luò)攝像機(jī)IP地址,,嵌入式網(wǎng)絡(luò)服務(wù)器根據(jù)請(qǐng)求,,將相應(yīng)的控制頁(yè)面反饋給IE瀏覽器,用戶填寫表單,,然后提交,,CGI程序提取表單的信息,根據(jù)不同信息來(lái)分別處理相應(yīng)的事件,,如調(diào)節(jié)MPEG-4相關(guān)屬性,、相機(jī)的相關(guān)操作等。CGI控制原理如圖5所示,。

圖6 CGI控制原理圖
CGI模塊的設(shè)計(jì)主要包括三部分:嵌入式web服務(wù)器的配置,、html頁(yè)面的編寫、CGI程序的設(shè)計(jì),。
嵌入式web服務(wù)器采用的是Apache,,其配置是以配置文件的形式提供,放在Ramdisk中/etc/httpd/conf/目錄下,。其配置主要涉及以下三個(gè)方面:
○1配置根文件的路徑:“DocumentRoot  /home/httpd/html”,,html頁(yè)面必須放到此目錄下。
○2配置CGI外部程序所放的路徑:“ScriptAlias /cgi-bin/ home/httpd/cgi-bin/”,。
○3配置環(huán)境變量:“SetEenv D_LIBRARY_PATH=/lib:/usr/local/lib:/usr/lib”,,該變量將會(huì)被傳送到 CGI 腳本和SSI頁(yè)面,以保證CGI程序能正確找到所依賴的庫(kù),。
網(wǎng)頁(yè)編寫采用html與shtml相結(jié)合的方式,。html的解析速度較快,shtml可以在普通網(wǎng)頁(yè)中嵌入外部CGI程序,通過(guò)這種方式將系統(tǒng)的默認(rèn)配置反饋給客戶端,。
CGI程序采用的是C語(yǔ)言和shell腳本相結(jié)合的方式,, 具體編寫過(guò)程,與通常的了Linux下編程相同,。限于篇幅,,不再贅述。
4.3 MPEG-4解碼程序
映佳科技已提供供二次開(kāi)發(fā)的MPEG-4解碼插件OCX,,OCX在PC機(jī)端注冊(cè)后,,OCX函數(shù)可方便地被網(wǎng)頁(yè)調(diào)用,從而實(shí)現(xiàn)在PC機(jī)端觀看實(shí)時(shí)圖像,。
5 總結(jié)
 本文介紹了一種利用AT91RM9200,、TVP5150,MPG440和DM9161E等芯片設(shè)計(jì)的嵌入式網(wǎng)絡(luò)攝像機(jī),。經(jīng)測(cè)試,,該系統(tǒng)穩(wěn)定、可靠,、實(shí)時(shí)性好,、圖像質(zhì)量出色。該產(chǎn)品可廣泛應(yīng)用于交通監(jiān)控和工業(yè)監(jiān)控以及家庭監(jiān)控,、視頻會(huì)議話等眾多領(lǐng)域,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。