《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 基于SX52的嵌入式Web服務器的快速實現

基于SX52的嵌入式Web服務器的快速實現

2008-09-08
作者:李戰明 方 霆 尹曉霈

??? 摘 要: 介紹了如何利用現有軟件虛擬模塊高效構筑可現場控制的嵌入式Web服務器,一些方法也可用于其他資源有限的小型嵌入式網絡設備中。
??? 關鍵詞: 單片機? 嵌入式系統? Internet? Web服務器

?

??? 隨著互聯網的日益普及,信息共享的程度不斷提高,網絡儀表及網絡控制設備的流行逐漸成為趨勢。如何通過互聯網共享以單片機應用系統為中心的小型嵌入式設備的信息,成為當今電子界的熱門話題。傳統的互聯網應用以PC為中心。如今,互聯網應用正在轉到以嵌入式設備為中心。用單片機實現嵌入式互聯網方案的技術難點是:如何利用單片機本身有限的資源對信息進行TCP/IP" title="TCP/IP">TCP/IP協議處理,使之變成可以在互聯網上傳輸的IP數據包。目前解決這個問題有兩種方案:一種是PC網關+專用網,缺點是要增加布線和第三方協議轉換軟件;另一種是32位MCU+RTOS,弊端是開發難,成本極高。而用軟件方法實現網絡協議" title="網絡協議">網絡協議比采用集成網絡協議的芯片,具有節省空間、降低成本的優點,更重要的是可以隨意配置甚至修改各種協議,且能通過軟件升級方式跟隨未來的發展。八位單片機目前仍占有很大的市場份額,而通過美國Ubicom公司的SX52微控器進行網絡控制更具其獨特優勢,主要體現在:(1)速度快,在100MHz頻率下能達到100MIPS;(2)現成的協議模塊供使用,即使對不熟悉網絡協議的開發人員也能簡單套用。雖然其它八位單片機也能用軟件實現精簡的TCP/IP協議,如PIC16C76[1]等,但上面所說兩大優點是采用SX52MCU的充分理由。套用成熟的現有程序是最具效率的開發辦法,這也是避免目前國內普遍存在的低水平開發的有效途徑。雖然目前還沒有單獨的TCP/IP軟件虛擬模塊提供,但在演示板" title="演示板">演示板程序的基礎上,可以采用其成功的網絡協議模塊和一些適用于小型嵌入系統的做法構筑現場控制Web服務器。
1 SX52控制器簡介
??? SX52 MCU與PIC單片機有很多地方相似,它也采用RISC指令系統,帶可擦寫上萬次的片上Flash程序存儲器,具在系統編程等。SX52的流水線指令操作可1個時鐘周期執行一條指令。沒有中斷嵌套使中斷響應時間固定為3個時鐘周期,適用于一些要求強實時性的系統。5個可驅動30mA電流的I/O口可自由設置為TTL或CMOS輸入電平,262×8bit的SRAM數據空間,4096×12bit的EE/Flash程序空間。內部集成有模擬比較器、定時器、捕捉/PWM比較器、欠壓檢測、看門狗等多種功能部件。具有三個特殊器件配置寄存器,其長度分別為12位,(FUSE、FUSEX、DEVICE),硬件配置靈活多樣,加密性能好,能有效地防止產品被盜版或仿制的可能性。已提供的軟件虛擬模塊有UART、A/D、DTMF、PWM、FSK、IRDA、I2C等眾多常用功能塊。應用微控器用軟件方法替代硬件功能是一大特色,可以避免一些常用功能的重復開發。
2 聯網的實現
??? 對于資源緊缺的小型嵌入系統,一般都要對TCP/IP協議族做一些精簡處理。Wing Poon等提供的演示板程序集合了如下模塊:ARP、DHCP、ICMP的echo響應,精簡的TCP/IP、HTTP、SMTP等;還可以看到應用了I2C以及∑-ΔA/D的軟件虛擬模塊。由于程序空間的限制,當實現DHCP時,只能用SMTP。底層采用8019AS網絡接口芯片。網頁通過I2C存儲于24C256中,中斷程序可用于A/D虛擬模塊的計數及TCP/IP協議族的各個定時器。
??? 系統設計主程序流程如圖1。當IP包頭有選項或存在分片時,此包被簡單丟棄而不處理。TCP能同時打開兩個連接,連接1用于SMTP(套接字" title="套接字">套接字用Bank 3,TCB1_BANK),連接2用于HTTP(套接字用Bank 4,TCB2_BANK)。TCP不使用滑動窗口的流量控制,發送時每發一個分組就停下來等待確認。程序中發送的數據長度放在變量Tcp2UnAckMSB、Tcp2UnAckLSB中。在接收模塊TcpProcPktIn中只有接收到Ack包后才復位這兩個變量;而發送模塊TcpTransmit中只有這兩個變量為零才允許發送下一段數據,否則檢查Tcp2TimeMSB是否超時,如是則重發。TCP接收模塊TcpProcPktIn檢查端口號及32序列號是否與套接字內的相符,如不符則可能是收到重發的包,TCP簡單地發Ack的空包并丟棄本包;否則處理本包數據同時清除上次發送數據長度變量Tcp2UnAckMSB、Tcp2UnAckLSB,以便在TcpTransmit中能發送下一段數據。

?

??? 子模塊TcpAppTxBytes、TcpAppRxData是TCP處理發送及接收數據的模塊。用戶如不變更原TCP/IP的精簡設計,只要修改這兩個模塊就能實現自己特定的應用功能。
??? 16位校驗和Checksum的計算對于很少或沒有數據緩沖的系統來說并不容易,一般有兩種方法處理。一是在TCP頭的檢驗和域放任意一個16位數,數據發送的同時計算Checksum,然后在數據最后附加2個字節以保證之前任意取值的正確。這種方法的缺點是要讓接收的應用程序忽略最后2個字節的數據,可能導致許多程序的運行異常。二是先對產生的數據計算Checksum,但不發送,然后再產生同樣的數據加上正確的校驗和發送。顯然要求系統產生重復的數據有時是不現實的,利用網卡芯片8019的緩沖可以解決這一問題,將數據寫入8019的同時計算Checksum,最后將Checksum寫入8019后調用NicSendTxFrame才真正發送數據。
3 Web服務器實現
??? TCP在Web服務器下采用的狀態轉移見圖2。

?


??? (1)服務器在closed狀態下主動打開端口80進入listen狀態;
??? (2)經過3次常規握手后進入establish的數據傳送狀態;
??? (3)服務器發完數據發fin關閉請求進入fin wait-1狀態;
??? (4)收到對方發來的Ack后進入fin wait-2狀態;
??? (5)收到對方發來的fin關閉請求后回送Ack回到closed狀態。
??? 考慮HTTP常用的abs_path形式的統一資源標識符URI,在資源緊缺的系統中實現完整的文件結構如“imagesledon.gif”的查詢與定位,如果采用一般計算機程序中常用的方法則代價很高。一種簡便有效的方法是計算URI各字符的ASCII碼之和。網頁存放于SX52的外部EEPROM中。假設利用前512字節存放最大256個網頁的地址,絕對路徑“index.htm”的不帶進位ASCII碼之和為#$be,可以到2×#$be=#$17c的地方找到要發送回客戶瀏覽器的數據存放地址。下載網頁到服務器時也用一個程序按上述方法將各網頁排好即可,當然網頁前都加了一段HTTP 1.0的標準響應頭信息。這正是Ubicom公司提供的E2File程序所做的,也可以自己編寫一個這樣的程序以實現HTTP 1.1的除GET、POST方法外的其它方法或擴展功能。
??? 除了用Java Applet實現動態網頁外,利用post方法也可與服務器交互。例如通過IE瀏覽器用復選框按鈕控制并顯示一組燈的開與關的基本Web控制,其HTML網頁的提交表單FORM內應該包含有的類似語句,其中0~n為欲控制燈的編號,name的取值為一位數字或字符,有利于節省SX52的查詢匹配程序空間,E2File程序將網頁中如下顯示燈的狀態的HTML超鏈接語句中的“?”編號為非ASCII字符#$f0~#$fn等下載存儲到服務器的EEPROM中。當IE用POST方法發送數據給服務器時,SX52服務器計算兩個空格間的abs_path形式的URI的ASCII字符之和后到相應EEPROM中,用上述下載網頁的計算方法找到該網頁的地址后,跳過HTTP的請求頭匹配l=0&...l=n表示復選框被選中的數據并對相應編號的燈開關后,返回該網頁給IE時會根據實際燈的狀態將EEPROM中存儲網頁的非ASCII字符#$f0~#$fn退換為ASCII字符“n”或“f”。這樣IE就能正確地通過超鏈接再次與服務器交互(GET方法),下載顯示ledon.gif或ledof.gif顯示實際燈的狀態了。而要在IE上正確顯示現場某個控制變量的值時,同樣可以將n位顯示數值編號為非ASCII字符#$f0#$f1...#$fn的形式存儲到服務器中,SX52服務器端先將實際的數值轉換為BCD碼后再用對應的ASCII字符將#$f0#$f1...#$fn替換返回,從而能在瀏覽器端顯示服務器端控制變量的變化。國內用戶使用的北京革新提供的開發演示板程序較充分地提供了常用的Internet網絡協議軟件虛擬模塊,也提供了一個基本可實際應用的Web演示控制,只要做較少改動就可以用于實際控制中。不過它只能一次控制一個燈的開關,且任何人都可以輕易地更改。現要求一次能控制所有的燈,但需要在IE瀏覽器上輸入密碼123abc方可生效。程序修改如下:
??? (1)在控制燈的網頁econtrol.htm中增加以下語句以輸入密碼:
??? 密碼:

??? (2)當密碼驗證錯誤時,置標志flags.sw_pressed。匹配密碼采用6位密碼的ASCII碼異或值以節省程序空間。POST的數據有l=123abc&l=0...&l=7的形式。
??? (3)在MY_BANK數據塊中增加兩個變量test1、test2。
??? (4)在子模塊TcpAppRxDone2中增加以下初始化語句:
??? ???? _bank MY_BANK
??? ???? clrb flags2.SW_PRESSED;清密碼有/無效標志
??? ???? mov test1,#6???????;6位密碼
??? ???? clr? test2?????????;清異或統計變量
??? (5)在模塊TcpAppRxData的分支:lookforl的開頭增加以下語句:
??? ???? snb flags2.SW_PRESSED ;密碼無效直接返回不再匹配“=”
??? ???? retp
??? (6)修改TcpAppRxData的分支,gotequal如下:
??? ???? cjne httpURIHash,#URI3, :action ;當不是燈的控制網頁返回
??? ???? _bank?MY_BANK?? ???;切換尋址變量區
??? ???? cje test1, #0,?: action? ??;密碼正確轉執行
??? ???? xor? test2, globTemp1? ??;密碼異或值計算
??? ???? decsz test1
??? ???? retp
??? ???? cjne test2, #$50,:void? ;#$50為123abc的密碼異或值
??? ???? clr?httpParseState2? ? ;清狀態轉移值以便匹配下一個“l=value”
??? ???? retp
??? :void
???????? setb? flags2.SW_PRESSED? ;置密碼不正確的標志
???????? _bank?HTTP_BANK
??? ???? mov httpURIHash,#$be ?;返回index.htm首頁
??? ???? clr? httpParseState2
??? ???? jmp :gotURICont??????;找到首頁的地址為發送做準備
??? :action
??? ???? call? @pc2evbpro?????;匹配各燈后進行開關
??? ???? clr?httpParseState2?? ??;重新匹配下一個“l=value”
??? ???? retp
??? 當然以上密碼通過IE仍以明文傳送,不安全,但是它可以通過常用的IE瀏覽器操作,不需要專用的客戶端" title="客戶端">客戶端軟件。這適用于大企業,它們有局域網,電腦上只能用固定的幾種軟件。當然編寫客戶端軟件加入加密解密算法來適應各種應用環境也是容易實現的。用SX52構建各種小型的現場控制Web服務器只要合理利用相應的網絡協議軟件虛擬模塊,參照演示板的做法在應用子模塊TcpAppTxBytes、TcpAppRxData中對發送及接收數據按照自己特定的要求做處理即可。它還可以通過UDP的方式同時與客戶端軟件傳送語音或視頻數據流,只要增加很少的外圍接口電路[1]并改動相應的UDP處理模塊UDPProcPktIn即可。而如果未來協議的更新也只要下載最新的程序替換即可,開發人員單獨修改特定協議模塊的一些實現方式如增加滑動窗口的TCP/IP等也比重新編寫一個完整的協議族遠為輕松。
參考文獻

1 Jeremy Bentham. TCP/IP Lean Web Servers for Embeded Systems,2E 2002:243~331
2 Ubicom Inc. sx-key_manual_v1_1 Version 1.1
3 Ubicom Inc. sx_usermanual Rev.3.1
4 Ubicom Inc. application notes
5 RFCS(requests for comment). http://www.faqs.org/rfcs

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
在线精品国产欧美| 西西人体一区二区| 国产婷婷97碰碰久久人人蜜臀| 欧美激情精品久久久久久蜜臀 | 亚洲高清久久| 激情亚洲成人| 精品成人国产| 亚洲成人在线免费| 136国产福利精品导航网址| 尤物九九久久国产精品的特点| 国产一级揄自揄精品视频| 国产精品视频网| 国产欧美日韩视频在线观看 | 国产免费亚洲高清| 国产欧美在线观看一区| 国产日韩av一区二区| 国产日产欧美精品| 黑丝一区二区| 在线视频国产日韩| 亚洲欧洲精品一区| 亚洲精品女av网站| 999在线观看精品免费不卡网站| 亚洲精品在线视频| 一二三四社区欧美黄| 亚洲视频欧美在线| 亚洲综合欧美日韩| 性色av一区二区三区红粉影视| 午夜精品999| 亚洲第一久久影院| 亚洲精品在线观看视频| 亚洲特色特黄| 欧美一区深夜视频| 玖玖综合伊人| 欧美日韩成人网| 欧美性一区二区| 国产亚洲激情视频在线| 激情一区二区三区| 亚洲精品久久久蜜桃| 亚洲图片激情小说| 久久精品噜噜噜成人av农村| 最新国产成人在线观看| 在线一区免费观看| 欧美中文字幕不卡| 免费成人你懂的| 欧美性大战久久久久久久| 国产伦精品一区二区三区四区免费| 国产一区二区三区久久| 亚洲国产精品成人综合色在线婷婷| 99国产精品久久| 亚洲欧美激情在线视频| 久久精品系列| av成人老司机| 欧美在线视频网站| 欧美黄色一区二区| 国产精品高潮久久| 国内自拍亚洲| 99re66热这里只有精品3直播| 亚洲欧美自拍偷拍| 亚洲精品免费一二三区| 亚洲午夜一区二区三区| 久久精品国产精品亚洲| 欧美精品一区二区三区四区 | 伊人久久大香线蕉av超碰演员| 亚洲国产精品va在线看黑人 | 国产精品稀缺呦系列在线| 在线观看中文字幕不卡| 一区二区三区欧美日韩| 亚洲国产成人av好男人在线观看| 一本久道久久综合狠狠爱| 欧美在线日韩在线| 欧美日本免费| 国产一区高清视频| 一区二区三区四区国产精品| 亚洲福利一区| 香蕉久久精品日日躁夜夜躁| 欧美成人免费小视频| 国产情人节一区| a4yy欧美一区二区三区| 亚洲国产精品一区二区三区| 性18欧美另类| 欧美日韩另类字幕中文| …久久精品99久久香蕉国产| 亚洲女同性videos| 中日韩高清电影网| 欧美电影免费观看高清完整版| 国产欧美韩国高清| 一区二区欧美精品| 日韩视频免费观看高清在线视频| 久久精品视频播放| 国产精品毛片va一区二区三区| 亚洲国产另类久久久精品极度| 午夜免费在线观看精品视频| 亚洲一区二区av电影| 欧美国产丝袜视频| 国产真实乱偷精品视频免| 亚洲一区二区在线| 这里只有精品视频在线| 另类欧美日韩国产在线| 国产午夜亚洲精品不卡| 亚洲午夜高清视频| 亚洲午夜精品一区二区| 欧美高清影院| 亚洲高清免费视频| 亚洲电影av| 久久亚洲私人国产精品va| 国产精品视频久久久| 中文国产成人精品久久一| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲一线二线三线久久久| 一区二区三区欧美在线| 欧美顶级少妇做爰| 在线欧美亚洲| 亚洲欧洲日产国产综合网| 久久免费视频网| 国产午夜精品一区二区三区视频| 亚洲一级高清| 亚洲欧美综合另类中字| 国产精品久久久久999| 在线视频日韩| 亚洲免费影视| 国产精品久久久久一区二区三区共| 一本一本久久a久久精品牛牛影视| 中文国产成人精品| 欧美日韩在线三级| 一区二区三区欧美日韩| 亚洲综合大片69999| 国产精品成人免费精品自在线观看| 一区二区三区高清| 亚洲欧美另类在线| 国产精品久久久久久久久免费桃花| 中文日韩欧美| 性色av一区二区三区| 国产欧美在线观看| 久久精品首页| 欧美黄色影院| 一区二区福利| 欧美一级午夜免费电影| 国产午夜精品美女视频明星a级 | 狠狠色狠狠色综合日日小说| 亚洲高清资源综合久久精品| 免费国产自线拍一欧美视频| 亚洲国产欧美一区二区三区久久| 99re在线精品| 国产精品www994| 午夜宅男欧美| 欧美成人免费全部观看天天性色| 亚洲人成在线观看一区二区| 99在线视频精品| 国产精品视频一区二区高潮| 欧美一区免费视频| 另类成人小视频在线| 亚洲精品少妇网址| 销魂美女一区二区三区视频在线| 国产欧美一区二区三区在线老狼 | 国产伦精品一区二区三区照片91| 欧美亚洲一级| 麻豆久久久9性大片| 亚洲日本视频| 先锋影音一区二区三区| 国产一区二区按摩在线观看| 亚洲精品久久久久久久久久久久久| 欧美日韩另类综合| 亚欧成人在线| 欧美激情精品久久久久久免费印度 | 国产欧美日韩在线观看| 最新成人av网站| 国产精品久久久久久久久免费 | 久久riav二区三区| 欧美日韩高清在线| 亚洲一品av免费观看| 久久婷婷麻豆| 99pao成人国产永久免费视频| 欧美尤物巨大精品爽| 永久免费毛片在线播放不卡| 中国成人黄色视屏| 国内一区二区三区| 在线视频欧美日韩| 国产亚洲人成网站在线观看| 日韩视频一区二区在线观看| 国产精品视频久久久| 最新国产精品拍自在线播放| 国产精品亚洲不卡a| 亚洲欧洲日产国产综合网| 国产精品午夜久久| 亚洲免费成人| 国产伊人精品| 午夜天堂精品久久久久| 亚洲国产精品福利| 欧美一级专区免费大片| 亚洲精品视频中文字幕| 久久久久99精品国产片| 一本色道久久综合亚洲精品婷婷| 久久免费高清视频| 亚洲一区免费看| 欧美精品二区| 亚洲电影av| 国产精品永久免费| 中文国产亚洲喷潮| 亚洲国产成人精品女人久久久| 欧美影视一区|