當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于SX52的嵌入式Web服務器的快速實現

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

1SX52控制器簡介

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

2聯網的實現

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

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

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

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

3Web服務器實現

TCP在Web服務器下采用的狀態(tài)轉移見圖2。

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

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

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

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

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

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

除了用JavaApplet實現動態(tài)網頁外,利用post方法也可與服務器交互。例如通過IE瀏覽器用復選框按鈕控制并顯示一組燈的開與關的基本Web控制,其HTML網頁的提交表單FORM內應該包含有的類似語句,其中0~n為欲控制燈的編號,name的取值為一位數字或字符,有利于節(jié)省SX52的查詢匹配程序空間,E2File程序將網頁中如下顯示燈的狀態(tài)的HTML超鏈接語句中的"?"編號為非ASCII字符#$f0~#$fn等下載存儲到服務器的EEPROM中。當n用POST方法發(fā)送數據給服務器時,SX52服務器計算兩個空格間的abs_path形式的URI的ASCII字符之和后到相應EEPROM中,用上述下載網頁的計算方法找到該網頁的地址后,跳過HTTP的請求頭匹配l=0&…l=n表示復選框被選中的數據并對相應編號的燈開關后,返回該網頁給IE時會根據實際燈的狀態(tài)將EEPROM中存儲網頁的非ASCII字符#$f0~#$fn退換為ASCII字符"n"或"f"。這樣IE就能正確地通過超鏈接再次與服務器交互(GET方法),下載顯示ledon.gif或ledof.gif顯示實際燈的狀態(tài)了。而要在IE上正確顯示現場某個控制變量的值時,同樣可以將n位顯示數值編號為非ASCII字符#$f0#$fl…#$fn的形式存儲到服務器中,SX52服務器端先將實際的數值轉換為BCD碼后再用對應的ASCII字符將#Sf0#$f1…#$fn替換返回,從而能在瀏覽器端顯示服務器端控制變量的變化。國內用戶使用的北京革新提供的開發(fā)演示板程序較充分地提供了常用的Intemet網絡協議軟件虛擬模塊,也提供了一個基本可實際應用的Web演示控制,只要做較少改動就可以用于實際控制中。不過它只能一次控制一個燈的開關,且任何人都可以輕易地更改。現要求一次能控制所有的燈,但需要在IE瀏覽器上輸入密碼123abc方可生效。程序修改如下:

(5)在模塊TcpAppRxData的分支:lookforl的開頭增加以下語句:

當然以上密碼通過IE仍以明文傳送,不安全,但是它可以通過常用的IE瀏覽器操作,不需要專用的客戶端軟件。這適用于大企業(yè),它們有局域網,電腦上只能用固定的幾種軟件。當然編寫客戶端軟件加入加密解密算法來適應各種應用環(huán)境也是容易實現的。用SX52構建各種小型的現場控制Web服務器只要合理利用相應的網絡協議軟件虛擬模塊,參照演示板的做法在應用子模塊TcpAppTxBytes、TcpAppRxData中對發(fā)送及接收數據按照自己特定的要求做處理即可。它還可以通過UDP的方式同時與客戶端軟件傳送語音或視頻數據流,只要增加很少的外圍接口電路并改動相應的UDP處理模塊UDPProcPktIn即可。而如果未來協議的更新也只要下載最新的程序替換即可,開發(fā)人員單獨修改特定協議模塊的一些實現方式如增加滑動窗口的TCP/IP等也比重新編寫一個完整的協議族遠為輕松。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉