淺談AT91RM9200的嵌入式網(wǎng)絡(luò )攝像機的設計與實(shí)現
1.引言
本文引用地址:http://dyxdggzs.com/article/263937.htm隨著(zhù)通信技術(shù)和網(wǎng)絡(luò )技術(shù)的迅猛發(fā)展,通過(guò)網(wǎng)絡(luò )遠程實(shí)時(shí)監控重要場(chǎng)所已倍受人們關(guān)注,網(wǎng)絡(luò )攝像機在此背景下產(chǎn)生,并成為人們關(guān)注的焦點(diǎn)。網(wǎng)絡(luò )攝像機是一種結合傳統攝像機與網(wǎng)絡(luò )技術(shù)所產(chǎn)生的新一代攝像機,它可以將影像通過(guò)網(wǎng)絡(luò )傳至地球另一端,且遠端的瀏覽者不需用任何專(zhuān)業(yè)軟件,只要標準的網(wǎng)絡(luò )瀏覽器(如"Microsoft IE或Netscape)即可監視其影像。網(wǎng)絡(luò )攝像機要將高清晰度的實(shí)時(shí)視頻信息通過(guò)互聯(lián)網(wǎng)傳送到監控終端,因其信息量巨大,所以必須壓縮。通常人們采用DSP與MPEG-4算法相結合的方案來(lái)實(shí)現,不僅編程工作量大,而且產(chǎn)品的成本高。本文所介紹的網(wǎng)絡(luò )攝像機采用專(zhuān)用的MPEG-4壓縮芯片、以嵌入式Linux作為操作系統,不僅開(kāi)發(fā)便捷、成本低廉,而且實(shí)時(shí)性好,適用范圍廣。
2.系統總體設計
系統總體設計包括硬件設計和軟件設計兩部分。這兩部分工作是互相聯(lián)系的,需要交叉進(jìn)行,系統設計是開(kāi)發(fā)人員進(jìn)行的工作,他們將系統設計階段得到的目標系統的邏輯模型轉換為目標系統的物理模型,該階段得到工作成果――系統設計說(shuō)明書(shū)是下一個(gè)階段系統實(shí)施的工作依據。硬件設計模塊主要包括微控制器模塊、微控制器是將微型計算機的主要部分集成在一個(gè)芯片上的單芯片微型計算機。
微控制器誕生于20世紀70年代中期,經(jīng)過(guò)20多年的發(fā)展,其成本越來(lái)越低,而性能越來(lái)越強大,這使其應用已經(jīng)無(wú)處不在,遍及各個(gè)領(lǐng)域。例如電機控制、條碼閱讀器/掃描器、消費類(lèi)電子、游戲設備、電話(huà)、HVAC、樓宇安全與門(mén)禁控制、工業(yè)控制與自動(dòng)化和白色家電(洗衣機、微波爐)等。壓縮編碼模塊、網(wǎng)絡(luò )接口模塊和相機控制模塊四部分。
微控制器模塊主要由主控芯片、DataFlash和SDRAM(1)組成。其中,主控芯片是整個(gè)控制系統的核心,它負責整個(gè)系統的調度工作。DataFlash里固化了嵌入式Linux內核、及其文件系統、應用軟件和系統配置文件。壓縮編碼模塊由視頻數據采集芯片、MPEG-4壓縮編碼芯片、SDRAM(2)組成,負責將視頻流轉化為MPEG-4碼流。網(wǎng)絡(luò )接口模塊主要是配合主控芯片傳送MPEG-4碼流。相機的控制模塊主要由串口芯片組成,其完成轉發(fā)控制相機命令的功能。當系統啟動(dòng)時(shí),微控制器通SPI(Serial Peripheral Interface,串行外設接口)將Linux內核轉入SDRAM(1)中,系統從SDRAM(1)中啟動(dòng)。系統啟動(dòng)后,微控制器通過(guò)HPI(Host Peripherial Interface,主機接口)控制MPEG-4編碼模塊。統結構如圖1所示。

圖1系統結構框圖
軟件設計部分主要包括嵌入式Linux移植、MPEG-4壓縮編碼模塊、CGI控制程序和MPEG-4解碼程序四部分。嵌入式Linux系統存放到由AT91RM9200控制的DataFlash里,它負責整個(gè)系統軟件的調度工作。MPEG-4壓縮編碼模塊主要負責模擬視頻流的采集,并將數字視頻流壓縮為MPEG-4數據流。CGI控制程序主要負責對攝像機的控制和對MPEG-4視頻流的相關(guān)設置。簡(jiǎn)稱(chēng)CGI.在物理上是一段程序,運行在服務(wù)器上,提供同客戶(hù)端HTML頁(yè)面的接口。這樣說(shuō)大概還不好理解。那么我們看一個(gè)實(shí)際例子:現在的個(gè)人主頁(yè)上大部分都有一個(gè)留言本。留言本的工作是這樣的:先由用戶(hù)在客戶(hù)端輸入一些信息,如名字之類(lèi)的東西。接著(zhù)用戶(hù)按一下"留言"(到目前為止工作都在客戶(hù)端),瀏覽器把這些信息傳送到服務(wù)器的CGI目錄下特定的cgi程序中,于是cgi程序在服務(wù)器上按照預定的方法進(jìn)行處理。在本例中就是把用戶(hù)提交的信息存入指定的文件中。然后cgi程序給客戶(hù)端發(fā)送一個(gè)信息,表示請求的任務(wù)已經(jīng)結束。此時(shí)用戶(hù)在瀏覽器里將看到"留言結束"的字樣。整個(gè)過(guò)程結束。MPEG-4解碼程序主要負責對通過(guò)網(wǎng)絡(luò )得到的MPEG-4數據流的解碼工作。
3.硬件設計
3.1微控制器模塊
微控制器是本系統的核心部件,選用的是ATMEL公司的AT91RM9200.它是一款基于A(yíng)RM920T核的32位微控制器。其主頻為180MHz,處理速度快,功能強,性?xún)r(jià)比高,能很好滿(mǎn)足嵌入式Linux系統的需求。它在系統中的主要作用是在系統上電時(shí)配置其他芯片的功能寄存器,在正常工作狀態(tài)下調度控制整個(gè)系統工作,通過(guò)片內以太網(wǎng)控制器控制物理層芯片發(fā)送碼流。
AT91RM9200通過(guò)片內的SPI總線(xiàn)和SDRAM控制器實(shí)現對外圍DataFlash和SDRAM的控制,利用片內的USART實(shí)現對串口芯片的控制,通過(guò)片內的以太網(wǎng)控制器對片外網(wǎng)絡(luò )芯片進(jìn)行控制。其控制原理圖如圖2所示。

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

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

圖4網(wǎng)絡(luò )模塊電路
AT91RM9200的在片以太網(wǎng)卡端口和網(wǎng)絡(luò )物理層芯片DM9161E的MII接口通信。發(fā)送數據時(shí),首先置發(fā)送使能信號ETXEN有效。數據發(fā)送端ETX0~ETX1與DM9161的ETXO~ETX1引腳對應連接,作為數據發(fā)送通道,以DM9161E的時(shí)鐘信號REF_CLK發(fā)送數據。數據接收端ERX 0~ERX1與DM9161E的RXDO~RXD1引腳對應連接,作為數據接收通道。管理時(shí)鐘信號EMDC和管理數據輸入輸出信號EMDIO用來(lái)芯片控制參數的寫(xiě)入和讀取。DM9161E的MDINTR端用來(lái)產(chǎn)生中斷信號。
片內以太網(wǎng)卡通過(guò)DMA通道進(jìn)行數據的發(fā)送,不影響AT91RM9200的正常運行。首先正確設置傳送控制寄存器和傳送地址寄存器的傳送數據塊字節數、數據塊存儲首地址等參數,隨后依次從指定數據存儲區地址讀取1024b數據,送入內部發(fā)送緩沖器中,由MAC對數據進(jìn)行封裝發(fā)送,同時(shí)記錄已傳送字節數,直到數據塊發(fā)送完畢。當發(fā)送完一組數據后,發(fā)出DMA中斷請求,由AT91RM9200進(jìn)行相應的處理。整個(gè)網(wǎng)絡(luò )子系統電路由AT91RM9200控制和調度。
4.軟件設計
嵌入式Linux系統主要由四個(gè)部分組成引導內核啟動(dòng)的文件(bootloader)、Linux內核文件(kernel)、虛擬磁盤(pán)文件(ramdisk)、用戶(hù)空間文件(user)。它們分別被放在DataFlash內的四個(gè)分區模塊中。根據不同模塊的具體功能采用不同的文件系統:bootloader、kernel、ramdisk,移植完成后不需要動(dòng)態(tài)改變,使用較節省空間的ROMFS只讀文件系統;user模塊內放置一些可以動(dòng)態(tài)更新的配置文件等,需要進(jìn)行較多的讀寫(xiě)操作,所以使用支持動(dòng)態(tài)擦寫(xiě)保存的JFFS2文件系統。inux做嵌入式的優(yōu)勢,首先,Linux是開(kāi)放源代碼的,不存在黑箱技術(shù),遍布全球的眾多Linux愛(ài)好者又是Linux開(kāi)發(fā)者的強大技術(shù)支持;其次,Linux的內核小、效率高,內核的更新速度很快,linux是可以定制的,其系統內核最小只有約134KB.第三,Linux是免費的OS,在價(jià)格上極具競爭力。Linux還有著(zhù)嵌入式操作系統所需要的很多特色,突出的就是Linux適應于多種CPU和多種硬件平臺,是一個(gè)跨平臺的系統。到目前為止,它可以支持二三十種CPU.而且性能穩定,裁剪性很好,開(kāi)發(fā)和使用都很容易。
Linux移植技術(shù)已經(jīng)成熟,本文不作詳細的闡述。下文主要介紹MPEG-4壓縮編碼模塊和CGI模塊的程序設計。
4.1 MPEG-4壓縮編碼模塊程序設計
該模塊主要完成MPG440和TI5150相關(guān)寄存器的配置,并保證MPEG-4碼流的正常輸出。當嵌入式Linux系統啟動(dòng)后,首先配置MPG440的相關(guān)寄存器,其初始化完成后,通過(guò)I2C總線(xiàn)對TVP5150進(jìn)行初始化配置。當系統開(kāi)始壓縮編碼時(shí),MPEG-4碼流接收存儲程序由MPEG-440的數據流緩沖器標志信號控制。
MPEG-4壓縮編碼模塊程序流程如圖4所示。

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

圖6 CGI控制原理圖
CGI模塊的設計主要包括三部分:嵌入式web服務(wù)器的配置、html頁(yè)面的編寫(xiě)、CGI程序的設計。
嵌入式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程序能正確找到所依賴(lài)的庫。
網(wǎng)頁(yè)編寫(xiě)采用html與shtml相結合的方式。html的解析速度較快,shtml可以在普通網(wǎng)頁(yè)中嵌入外部CGI程序,通過(guò)這種方式將系統的默認配置反饋給客戶(hù)端。
CGI程序采用的是C語(yǔ)言和shell腳本相結合的方式,C語(yǔ)言是一種計算機程序設計語(yǔ)言。它既具有高級語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統設計語(yǔ)言,編寫(xiě)系統應用程序,也可以作為應用程序設計語(yǔ)言,編寫(xiě)不依賴(lài)計算機硬件的應用程序。因此,它的應用范圍廣泛,不僅僅是在軟件開(kāi)發(fā)上,而且各類(lèi)科研都需要用到C語(yǔ)言,具體應用比如單片機以及嵌入式系統開(kāi)發(fā)。具體編寫(xiě)過(guò)程,與通常的了Linux下編程相同。
4.3 MPEG-4解碼程序
MPEG4于1998年11月公布,原預計1999年1月投入使用的國際標準MPEG4不僅是針對一定比特率下的視頻、音頻編碼,更加注重多媒體系統的交互性和靈活性。MPEG專(zhuān)家組的專(zhuān)家們正在為MPEG-4的制定努力工作。MPEG-4標準主要應用于視像電話(huà)(Video Phone),視像電子郵件(Video Email)和電子新聞(Electronic News)等,其傳輸速率要求較低,在4800-64000bits/sec之間,分辨率為176X144.MPEG-4利用很窄的帶寬,通過(guò)幀重建技術(shù),壓縮和傳輸數據,以求以最少的數據獲得最佳的圖像質(zhì)量。與MPEG-1和MPEG-2相比,MPEG-4的特點(diǎn)是其更適于交互AV服務(wù)以及遠程監控。MPEG-4是第一個(gè)使你由被動(dòng)變?yōu)橹鲃?dòng)(不再只是觀(guān)看,允許你加入其中,即有交互性)的動(dòng)態(tài)圖像標準,它的另一個(gè)特點(diǎn)是其綜合性。從根源上說(shuō),MPEG-4試圖將自然物體與人造物體相溶合(視覺(jué)效果意義上的)。MPEG-4的設計目標還有更廣的適應性和更靈活的可擴展性。映佳科技已提供供二次開(kāi)發(fā)的MPEG-4解碼插件OCX,OCX在PC機端注冊后,OCX函數可方便地被網(wǎng)頁(yè)調用,從而實(shí)現在PC機端觀(guān)看實(shí)時(shí)圖像。
5總結
本文介紹了一種利用AT91RM9200、TVP5150,MPG440和DM9161E等芯片設計的嵌入式網(wǎng)絡(luò )攝像機。經(jīng)測試,該系統穩定、可靠、實(shí)時(shí)性好、圖像質(zhì)量出色。該產(chǎn)品可廣泛應用于交通監控和工業(yè)監控以及家庭監控、視頻會(huì )議話(huà)等眾多領(lǐng)域。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
linux相關(guān)文章:linux教程
攝像頭相關(guān)文章:攝像頭原理
評論