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