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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種新型嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)開發(fā)

          一種新型嵌入式遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)開發(fā)

          作者: 時(shí)間:2009-04-22 來源:網(wǎng)絡(luò) 收藏

          1 引言

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

          是當(dāng)前工業(yè)自動(dòng)化監(jiān)控應(yīng)用領(lǐng)域研究的熱點(diǎn)之一。微電子技術(shù)和微處理器制造工藝的提高以及網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,使得構(gòu)建基于Web的得以實(shí)現(xiàn)。這樣的可以直接通過TCP/IP網(wǎng)絡(luò)協(xié)議接入Internet實(shí)現(xiàn)監(jiān)控,成為真正不受時(shí)間和空間限制的系統(tǒng)。

          由于近年來一些半導(dǎo)體廠家新推出的MCU的存儲(chǔ)能力都有了很大的提高,以及用C語言編寫的程序具有移植性強(qiáng)、可讀性好等優(yōu)點(diǎn),因此本文監(jiān)控軟件采用標(biāo)準(zhǔn)C語言編寫,并在m6811-elf-gcc中編譯通過。本文將從Web監(jiān)控系統(tǒng)的通信基礎(chǔ)--接口模塊著手,分別講述各個(gè)功能模塊的設(shè)計(jì)與實(shí)現(xiàn)。

          2 接口程序設(shè)計(jì)

          接口程序是與硬件設(shè)計(jì)中的網(wǎng)絡(luò)控制芯片密切相關(guān)的,不同的網(wǎng)絡(luò)控制芯片具有不同的以太網(wǎng)接口程序,但是一個(gè)完整的以太網(wǎng)接口程序通常包括三個(gè)部分:硬件模塊初始化、以太幀的發(fā)送和以太幀的接收。

          1、硬件模塊初始化

          本文使用的Freescale公司的MC9S12NE64 MCU集成了EPHY和EMAC兩個(gè)硬件子模塊,它們的初始化必須嚴(yán)格按照技術(shù)手冊(cè)進(jìn)行,避免忽略一些細(xì)節(jié)。

          2、以太幀的發(fā)送

          在NE64中發(fā)送一個(gè)以太幀,必須將該幀內(nèi)容寫入至EMAC模塊的發(fā)送緩沖區(qū)(TX緩沖區(qū)),然后再通過發(fā)送命令將其發(fā)送出去,接下來的工作由下層硬件完成。與以太幀的發(fā)送相關(guān)的寄存器包括發(fā)送緩沖區(qū)幀結(jié)束指針寄存器(TXEFP)、發(fā)送控制和狀態(tài)寄存器(TXCTS)。

          3、以太幀的接收

          判斷以太幀的接收有兩種方法:查詢法和中斷法。由于中斷法有更好的執(zhí)行效率,本文使用了中斷法接收以太幀。由于NE64有兩個(gè)接收緩沖區(qū)A和B,因此到達(dá)的幀可能存儲(chǔ)在A緩沖區(qū)也可能存儲(chǔ)在B緩沖區(qū),所以中斷矢量也有兩個(gè):A緩沖區(qū)接收完成中斷和B緩沖區(qū)接收完成中斷,其矢量地址分別是$FFB2和$FFB4。無論是A緩沖區(qū)還是B緩沖區(qū)接收到數(shù)據(jù),處理方法是一樣的,都是將接收到的數(shù)據(jù)幀讀出來,再進(jìn)行相應(yīng)的處理。

          3 uIP協(xié)議實(shí)現(xiàn)的程序設(shè)計(jì)

          3.1 TCP協(xié)議的實(shí)現(xiàn)

          TCP協(xié)議是嵌入式Web的核心,它提供一種基于連接的帶確認(rèn)的可靠的數(shù)據(jù)流傳輸方式,可增強(qiáng)網(wǎng)絡(luò)的服務(wù)質(zhì)量。TCP協(xié)議的機(jī)制很復(fù)雜,它的完整實(shí)現(xiàn)對(duì)處理器的存儲(chǔ)能力和運(yùn)算能力要求較高。這對(duì)于來說是比較奢侈的,因此必須對(duì)其進(jìn)行簡化。本文要實(shí)現(xiàn)的是一個(gè)基于嵌入式Web服務(wù)器的監(jiān)控系統(tǒng),經(jīng)過仔細(xì)分析,本文得到如圖1所示的簡化的TCP狀態(tài)機(jī)。其中連接的斷開由服務(wù)器主動(dòng)執(zhí)行,通過多次實(shí)驗(yàn)總結(jié)出來該方式在本文系統(tǒng)中,比標(biāo)準(zhǔn)的TCP協(xié)議主動(dòng)斷開連接的狀態(tài)機(jī)簡單且穩(wěn)定。

          圖1 服務(wù)端簡化的TCP狀態(tài)圖

          另外本系統(tǒng)可以根據(jù)不同的應(yīng)用要求調(diào)整TCP所支持的連接數(shù)量,但是通常在同一時(shí)刻僅支持單個(gè)TCP連接。同時(shí)為了避免因?yàn)閿?shù)據(jù)報(bào)的丟失而造成狀態(tài)機(jī)的死鎖,本文使用簡單定時(shí)機(jī)制,使TCP狀態(tài)機(jī)在超時(shí)后復(fù)位。

          TCP協(xié)議連接建立的過程被稱為“三次握手”。首先,客戶端向服務(wù)端提出連接請(qǐng)求。此時(shí)客戶端在TCP報(bào)頭中插入自己的ISN,并置SYN標(biāo)志為1,表示序列號(hào)字段合法,需要檢查。其次,服務(wù)端收到該TCP分段后,以自己的ISN回應(yīng),同時(shí)確認(rèn)收到客戶端的TCP分段,置ACK標(biāo)志為1。最后,客戶端確認(rèn)收到服務(wù)端的ISN,置ACK標(biāo)志為1。至此完整的TCP連接建立,開始全雙工模式的數(shù)據(jù)傳輸過程。

          3.2 其他協(xié)議的實(shí)現(xiàn)

          在實(shí)現(xiàn)以太網(wǎng)底層驅(qū)動(dòng)的基礎(chǔ)上,接下來實(shí)現(xiàn)用于以太網(wǎng)通信的上層協(xié)議。ARP協(xié)議是為了通信雙方獲取對(duì)方MAC地址的通信協(xié)議,是網(wǎng)絡(luò)通信的基礎(chǔ),本文實(shí)現(xiàn)了ARP請(qǐng)求報(bào)文的發(fā)送和接收以及ARP響應(yīng)報(bào)文的接收和處理功能。為方便網(wǎng)絡(luò)調(diào)試,在uIP中實(shí)現(xiàn)了Ping命令,當(dāng)監(jiān)控設(shè)備正常工作后可省略該部分內(nèi)容。SD12-MCS是實(shí)現(xiàn)一個(gè)基于嵌入式Web的應(yīng)用設(shè)備,并非嵌入式網(wǎng)關(guān)或路由器,因此為了節(jié)約資源,本文裁減了IP協(xié)議的路由功能,有關(guān)路由問題都由默認(rèn)網(wǎng)關(guān)完成。盡管基于Web方式的SD12-MCS使用了TCP協(xié)議,但是目前也有一些應(yīng)用是基于UDP協(xié)議的,為了系統(tǒng)具有更好的擴(kuò)展性,本文也實(shí)現(xiàn)了UDP協(xié)議。

          4 Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

          該監(jiān)控系統(tǒng)的工作模式為嵌入式Web服務(wù)器方式,因此本文在實(shí)現(xiàn)uIP協(xié)議的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了應(yīng)用層的HTTP協(xié)議以及CGI處理程序。

          4.1 HTTP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 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); })();