<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于SX52的嵌入式Web服務(wù)器的快速實(shí)現

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

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

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

本文引用地址:http://dyxdggzs.com/article/149200.htm

1控制器簡(jiǎn)介

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

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

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

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

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

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

3實(shí)現

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

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

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

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

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

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>