<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機(jī)設(shè)計(jì)

          基于AT91RM9200的嵌入式網(wǎng)絡(luò)攝像機(jī)設(shè)計(jì)

          作者: 時(shí)間:2014-10-23 來源:網(wǎng)絡(luò) 收藏

            網(wǎng)絡(luò)模塊硬件設(shè)計(jì)原理如圖4 所示。

          本文引用地址:http://www.ex-cimer.com/article/264339.htm

            

           

             的在片以太網(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 用來芯片控制參數(shù)的寫入和讀取。DM9161E 的MDINTR 端用來產(chǎn)生中斷信號(hào)。

            片內(nèi)以太網(wǎng)卡通過DMA 通道進(jìn)行數(shù)據(jù)的發(fā)送,不影響 的正常運(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)求, 由 進(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) 、虛擬磁盤文件( 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)。

            Linux 移植技術(shù)已經(jīng)成熟, 本文不作詳細(xì)的闡述。下文主要介紹MPEG- 4 壓縮編碼模塊和CGI 模塊的程序設(shè)計(jì)。

            MPEG- 4 壓縮編碼模塊程序設(shè)計(jì)

            該模塊主要完成 和TI5150 相關(guān)寄存器的配置, 并保證MPEG- 4 碼流的正常輸出。當(dāng)嵌入式Linux系統(tǒng)啟動(dòng)后,首先配置 的相關(guān)寄存器, 其初始化完成后, 通過I2C總線對(duì)TVP5150 進(jìn)行初始化配置。當(dāng)系統(tǒng)開始?jí)嚎s編碼時(shí),MPEG- 4 碼流接收存儲(chǔ)程序由MPEG- 440 的數(shù)據(jù)流緩沖器標(biāo)志信號(hào)控制。當(dāng)1024b 緩沖器滿時(shí), RISC_INT0 置于低電平, 微控制器通過DMA通道從 的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 的工作過程: 在PC 機(jī)端的IE 瀏覽器中輸入網(wǎng)絡(luò)攝像機(jī)IP 地址, 嵌入式網(wǎng)絡(luò)服務(wù)器根據(jù)請(qǐng)求, 將相應(yīng)的控制頁面反饋給IE 瀏覽器, 用戶填寫表單, 然后提交, CGI 程序提取表單的信息, 根據(jù)不同信息來分別處理相應(yīng)的事件, 如調(diào)節(jié)MPEG- 4 相關(guān)屬性、相機(jī)的相關(guān)操作等。CGI 控制原理如圖5 所示。

            CGI 模塊的設(shè)計(jì)主要包括三部分: 嵌入式web 服務(wù)器的配置、html 頁面的編寫、CGI 程序的設(shè)計(jì)。

            

           

            嵌入式web 服務(wù)器采用的是Apache, 其配置是以配置文件的形式提供, 放在Ramdisk 中/etc/httpd/conf/目錄下。其配置主要涉及以下三個(gè)方面:

           ?、倥渲酶募穆窂?“DocumentRoot /home/httpd/html”, html 頁面必須放到此目錄下。

            ②配置CGI 外部程序所放的路徑:“ScriptAlias /cgi- bin/ home/httpd/cgi- bin/”。

           ?、叟渲铆h(huán)境變量:“SetEenv D_LIBRARY_PATH=/lib:/usr/local/lib:/usr/lib”, 該變量將會(huì)被傳送到CGI 腳本和SSI 頁面, 以保證CGI 程序能正確找到所依賴的庫。

            網(wǎng)頁編寫采用html 與shtml 相結(jié)合的方式。html 的解析速度較快, shtml 可以在普通網(wǎng)頁中嵌入外部CGI程序, 通過這種方式將系統(tǒng)的默認(rèn)配置反饋給客戶端。

            CGI 程序采用的是C 語言和shell 腳本相結(jié)合的方式, 具體編寫過程, 與通常的了Linux 下編程相同。限于篇幅, 不再贅述。

            MPEG- 4 解碼程序

            映佳科技已提供供二次開發(fā)的MPEG- 4 解碼插件OCX, OCX 在PC 機(jī)端注冊(cè)后, OCX 函數(shù)可方便地被網(wǎng)頁調(diào)用, 從而實(shí)現(xiàn)在PC 機(jī)端觀看實(shí)時(shí)圖像。

            總結(jié)

            本文介紹了一種利用AT91RM9200、TVP5150,MPG440 和DM9161E 等芯片設(shè)計(jì)的嵌入式網(wǎng)絡(luò)攝像機(jī)。經(jīng)測試, 該系統(tǒng)穩(wěn)定、可靠、實(shí)時(shí)性好、圖像質(zhì)量出色。該產(chǎn)品可廣泛應(yīng)用于交通監(jiān)控和工業(yè)監(jiān)控以及家庭監(jiān)控、視頻會(huì)議話等眾多領(lǐng)域。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();