基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機(jī)設(shè)計(jì)
網(wǎng)絡(luò)模塊硬件設(shè)計(jì)原理如圖4 所示。
本文引用地址:http://m.butianyuan.cn/article/264339.htm
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ù)的寫(xiě)入和讀取。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)度。
軟件設(shè)計(jì)
嵌入式Linux 系統(tǒng)主要由四個(gè)部分組成: 引導(dǎo)內(nèi)核啟動(dòng)的文件( bootloader) 、Linux 內(nèi)核文件( kernel) 、虛擬磁盤(pán)文件( ramdisk) 、用戶(hù)空間文件( 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)行較多的讀寫(xiě)操作, 所以使用支持動(dòng)態(tài)擦寫(xiě)保存的JFFS2 文件系統(tǒng)。
Linux 移植技術(shù)已經(jīng)成熟, 本文不作詳細(xì)的闡述。下文主要介紹MPEG- 4 壓縮編碼模塊和CGI 模塊的程序設(shè)計(jì)。
MPEG- 4 壓縮編碼模塊程序設(shè)計(jì)
該模塊主要完成MPG440 和TI5150 相關(guān)寄存器的配置, 并保證MPEG- 4 碼流的正常輸出。當(dāng)嵌入式Linux系統(tǒng)啟動(dòng)后,首先配置MPG440 的相關(guān)寄存器, 其初始化完成后, 通過(guò)I2C總線(xiàn)對(duì)TVP5150 進(jìn)行初始化配置。當(dāng)系統(tǒng)開(kāi)始?jí)嚎s編碼時(shí),MPEG- 4 碼流接收存儲(chǔ)程序由MPEG- 440 的數(shù)據(jù)流緩沖器標(biāo)志信號(hào)控制。當(dāng)1024b 緩沖器滿(mǎn)時(shí), RISC_INT0 置于低電平, 微控制器通過(guò)DMA通道從MPG440 的HPI 口將碼流送到PC 機(jī)端。MPEG-4 壓縮編碼模塊程序流程如圖4 所示。
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 瀏覽器, 用戶(hù)填寫(xiě)表單, 然后提交, CGI 程序提取表單的信息, 根據(jù)不同信息來(lái)分別處理相應(yīng)的事件, 如調(diào)節(jié)MPEG- 4 相關(guān)屬性、相機(jī)的相關(guān)操作等。CGI 控制原理如圖5 所示。
CGI 模塊的設(shè)計(jì)主要包括三部分: 嵌入式web 服務(wù)器的配置、html 頁(yè)面的編寫(xiě)、CGI 程序的設(shè)計(jì)。
嵌入式web 服務(wù)器采用的是Apache, 其配置是以配置文件的形式提供, 放在Ramdisk 中/etc/httpd/conf/目錄下。其配置主要涉及以下三個(gè)方面:
①配置根文件的路徑:“DocumentRoot /home/httpd/html”, html 頁(yè)面必須放到此目錄下。
②配置CGI 外部程序所放的路徑:“ScriptAlias /cgi- bin/ home/httpd/cgi- bin/”。
?、叟渲铆h(huán)境變量:“SetEenv D_LIBRARY_PATH=/lib:/usr/local/lib:/usr/lib”, 該變量將會(huì)被傳送到CGI 腳本和SSI 頁(yè)面, 以保證CGI 程序能正確找到所依賴(lài)的庫(kù)。
網(wǎng)頁(yè)編寫(xiě)采用html 與shtml 相結(jié)合的方式。html 的解析速度較快, shtml 可以在普通網(wǎng)頁(yè)中嵌入外部CGI程序, 通過(guò)這種方式將系統(tǒng)的默認(rèn)配置反饋給客戶(hù)端。
CGI 程序采用的是C 語(yǔ)言和shell 腳本相結(jié)合的方式, 具體編寫(xiě)過(guò)程, 與通常的了Linux 下編程相同。限于篇幅, 不再贅述。
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í)圖像。
總結(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ì)議話(huà)等眾多領(lǐng)域。
評(píng)論