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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于SX52的嵌入式Web服務(wù)器的快速實(shí)現(xiàn)

          基于SX52的嵌入式Web服務(wù)器的快速實(shí)現(xiàn)

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

          隨著互聯(lián)網(wǎng)的日益普及,信息共享的程度不斷提高,網(wǎng)絡(luò)儀表及網(wǎng)絡(luò)控制設(shè)備的流行逐漸成為趨勢。如何通過互聯(lián)網(wǎng)共享以單片機(jī)應(yīng)用系統(tǒng)為中心的小型設(shè)備的信息,成為當(dāng)今電子界的熱門話題。傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用以PC為中心。如今,互聯(lián)網(wǎng)應(yīng)用正在轉(zhuǎn)到以設(shè)備為中心。用單片機(jī)互聯(lián)網(wǎng)方案的技術(shù)難點(diǎn)是:如何利用單片機(jī)本身有限的資源對信息進(jìn)行TCP/IP協(xié)議處理,使之變成可以在互聯(lián)網(wǎng)上傳輸?shù)腎P數(shù)據(jù)包。目前解決這個問題有兩種方案:一種是PC網(wǎng)關(guān)+專用網(wǎng),缺點(diǎn)是要增加布線和第三方協(xié)議轉(zhuǎn)換軟件;另一種是32位MCU+RTOS,弊端是開發(fā)難,成本極高。而用軟件方法網(wǎng)絡(luò)協(xié)議比采用集成網(wǎng)絡(luò)協(xié)議的芯片,具有節(jié)省空間、降低成本的優(yōu)點(diǎn),更重要的是可以隨意配置甚至修改各種協(xié)議,且能通過軟件升級方式跟隨未來的發(fā)展。八位單片機(jī)目前仍占有很大的市場份額,而通過美國Ubicom公司的微控器進(jìn)行網(wǎng)絡(luò)控制更具其獨(dú)特優(yōu)勢,主要體現(xiàn)在:(1)速度快,在100MHz頻率下能達(dá)到100MIPS;(2)現(xiàn)成的協(xié)議模塊供使用,即使對不熟悉網(wǎng)絡(luò)協(xié)議的開發(fā)人員也能簡單套用。雖然其它八位單片機(jī)也能用軟件精簡的TCP/IP協(xié)議,如PICl6C76等,但上面所說兩大優(yōu)點(diǎn)是采用MCU的充分理由。套用成熟的現(xiàn)有程序是最具效率的開發(fā)辦法,這也是避免目前國內(nèi)普遍存在的低水平開發(fā)的有效途徑。雖然目前還沒有單獨(dú)的TCP/IP軟件虛擬模塊提供,但在演示板程序的基礎(chǔ)上,可以采用其成功的網(wǎng)絡(luò)協(xié)議模塊和一些適用于小型嵌入系統(tǒng)的做法構(gòu)筑現(xiàn)場控制。

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

          1控制器簡介

          SX52MCU與PIC單片機(jī)有很多地方相似,它也采用RISC指令系統(tǒng),帶可擦寫上萬次的片上Flash程序存儲器,具在系統(tǒng)編程等。SX52的流水線指令操作可1個時(shí)鐘周期執(zhí)行一條指令。沒有中斷嵌套使中斷響應(yīng)時(shí)間固定為3個時(shí)鐘周期,適用于一些要求強(qiáng)實(shí)時(shí)性的系統(tǒng)。5個可驅(qū)動30mA電流的I/O口可自由設(shè)置為TI'L或CMOS輸入電子,262×8bit的SRAM數(shù)據(jù)空間,4096×12bit的EE/Flash程序空間。內(nèi)部集成有模擬比較器、定時(shí)器、捕捉/PWM比較器、欠壓檢測、看門狗等多種功能部件。具有三個特殊器件配置寄存器,其長度分別為12位,(FUSE、FUSEX、DEVICE),硬件配置靈活多樣,加密性能好,能有效地防止產(chǎn)品被盜版或仿制的可能性。已提供的軟件虛擬模塊有UART、A/D、DTMF、PWM、FSK、IRDA、VC等眾多常用功能塊。應(yīng)用微控器用軟件方法替代硬件功能是一大特色,可以避免一些常用功能的重復(fù)開發(fā)。

          2聯(lián)網(wǎng)的實(shí)現(xiàn)

          對于資源緊缺的小型嵌入系統(tǒng),一般都要對TCP/IP協(xié)議族做一些精簡處理。WingPoon等提供的演示板程序集合了如下模塊:ARP、DHCP、ICMP的echo響應(yīng),精簡的TCP/IP、HTYP、SMTP等;還可以看到應(yīng)用了I2C以及∑-△A/D的軟件虛擬模塊。由于程序空間的限制,當(dāng)實(shí)現(xiàn)DHCP時(shí),只能用SMTP。底層采用8019AS網(wǎng)絡(luò)接口芯片。網(wǎng)頁通過12C存儲于24C256中,中斷程序可用于A/D虛擬模塊的計(jì)數(shù)及TCP/IP協(xié)議族的各個定時(shí)器。

          系統(tǒng)設(shè)計(jì)主程序流程如圖1。當(dāng)IP包頭有選項(xiàng)或存在分片時(shí),此包被簡單丟棄而不處理。TCP能同時(shí)打開兩個連接,連接1用于SMTP(套接字用Bank3,TCBI_BANK),連接2用于HTTP(套接字用Bank4,TCB2_BANK)。TCP不使用滑動窗口的流量控制,發(fā)送時(shí)每發(fā)一個分組就停下來等待確認(rèn)。程序中發(fā)送的數(shù)據(jù)長度放在變量Tcp2Un-AckMSB、Tcp2UnAckLSB中。在接收模塊TcpProcPktln中只有接收到Ack包后才復(fù)位這兩個變量;而發(fā)送模塊Tcp·Transmit中只有這兩個變量為零才允許發(fā)送下一段數(shù)據(jù),否則檢查Tcp2TimeMSB是否超時(shí);如是則重發(fā)。TCP接收模塊TcpProcPktln檢查端口號及32序列號是否與套接字內(nèi)的相符,如不符則可能是收到重發(fā)的包,TCP簡單地發(fā)Ack的空包并丟棄本包;否則處理本包數(shù)據(jù)同時(shí)清除上次發(fā)送數(shù)據(jù)長度變量Tcp2UnAckMSB、Tcp2UnAckLSB,以便在TcpTransmit中能發(fā)送下一段數(shù)據(jù)。

          子模塊TcpAppTxBytes、TcpAppRxData是TCP處理發(fā)送及接收數(shù)據(jù)的模塊。用戶如不變更原TCP/IP的精簡設(shè)計(jì),只要修改這兩個模塊就能實(shí)現(xiàn)自己特定的應(yīng)用功能。

          16位校驗(yàn)和Checksum的計(jì)算對于很少或沒有數(shù)據(jù)緩沖的系統(tǒng)來說并不容易,一般有兩種方法處理。一是在TCP頭的檢驗(yàn)和域放任意一個16位數(shù),數(shù)據(jù)發(fā)送的同時(shí)計(jì)算Checksum,然后在數(shù)據(jù)最后附加2個字節(jié)以保證之前任意取值的正確。這種方法的缺點(diǎn)是要讓接收的應(yīng)用程序忽略最后2個字節(jié)的數(shù)據(jù),可能導(dǎo)致許多程序的運(yùn)行異常。二是先對產(chǎn)生的數(shù)據(jù)計(jì)算Checksum,但不發(fā)送,然后再產(chǎn)生同樣的數(shù)據(jù)加上正確的校驗(yàn)和發(fā)送。顯然要求系統(tǒng)產(chǎn)生重復(fù)的數(shù)據(jù)有時(shí)是不現(xiàn)實(shí)的,利用網(wǎng)卡芯片8019的緩沖可以解決這一問題,將數(shù)據(jù)寫入8019的同時(shí)計(jì)算Checksum,最后將Checksum寫入8019后調(diào)用NicSendTxFrame才真正發(fā)送數(shù)據(jù)。

          3實(shí)現(xiàn)

          TCP在下采用的狀態(tài)轉(zhuǎn)移見圖2。

          (1)服務(wù)器在closed狀態(tài)下主動打開端口80進(jìn)入listen狀態(tài);

          (2)經(jīng)過3次常規(guī)握手后進(jìn)人establish的數(shù)據(jù)傳送狀態(tài);

          (3)服務(wù)器發(fā)完數(shù)據(jù)發(fā)fin關(guān)閉請求進(jìn)入finwait-1狀態(tài);

          (4)收到對方發(fā)來的Ack后進(jìn)入finwait-2狀態(tài);

          (5)收到對方發(fā)來的fin關(guān)閉請求后回送Ack回到closed狀態(tài)。

          考慮HTYP常用的abs_path形式的統(tǒng)一資源標(biāo)識符URI,在資源緊缺的系統(tǒng)中實(shí)現(xiàn)完整的文件結(jié)構(gòu)如imagesledon.gif''的查詢與定位,如果采用一般計(jì)算機(jī)程序中常用的方法則代價(jià)很高。一種簡便有效的方法是計(jì)算URI各字符的ASCII碼之和。網(wǎng)頁存放于SX52的外部EEPROM中。假設(shè)利用前512字節(jié)存放最大256個網(wǎng)頁的地址,絕對路徑index.btm的不帶進(jìn)位ASCII碼之和為#$be,可以到2x#$be+#$17c的地方找到要發(fā)送回客戶瀏覽器的數(shù)據(jù)存放地址;下載網(wǎng)頁到服務(wù)器時(shí)也用一個程序按上述方法將各網(wǎng)頁排好即可,當(dāng)然網(wǎng)頁前都加了一段HTYP1.0的標(biāo)準(zhǔn)響應(yīng)頭信息。這正是Ubicom公司提供的E2File程序所做的,也可以自己編寫一個這樣的程序以實(shí)現(xiàn)HTFP1.1的除GET、POST方法外的其它方法或擴(kuò)展功能。

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

          上一頁 1 2 下一頁

          評論


          相關(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); })();