本文引用地址:http://www.eepw.com.cn/article/256975.htm
隨著計算機技術和通訊技術的不斷發展,網際網路和嵌入式智能儀器得到越來越廣泛的應用,人類社會進入後PC時代。本文主要介紹了嵌入式Web伺服器設計方案,以及實現和主要應用。
1.引言
嵌入式Web伺服器(Embedded Web Server,EWS)是指將Web伺服器嵌入到現場測試和控制設備中,在相應的硬體平臺和軟體系統的支持下,使傳統的測試和控制設備轉變為具備了以TCP/IP為底層通信協議,Web技術為核心的基於網際網路的網絡測試和控制設備。
嵌入式Web伺服器簡化了傳統伺服器的系統結構,在嵌入式設備上它同時實現信息傳輸和網絡接口的功能。嵌入式Web伺服器基於HTTP協議運作,有標準的接口形式和通信協議。它可以向任何接入它所在網絡的合法用戶提供統一的基於瀏覽器方式的操作和控制界面。Web技術的開放性和平臺獨立特性能夠降低開發難度,減少軟體系統和通信系統的設計維護工作量,提高了現場測試和控制設備的管理水平。
2.嵌入式WEB伺服器總體設計方案
接入Internet有很多種接入方式:電話撥號接入、ISDN,ADSL、乙太網接入等,其中乙太網作為一種廉價、高效的Internet接入方式,已經得到了非常廣泛的應用,本文的Internet接入採用乙太網方式。
將TCP/IP協議棧嵌入到單片機中,使用網絡控制晶片實現單片機的上網和數據傳輸。利用網絡單片機(嵌入了TCP/IP協議棧的單片機)可以實現很多功能,嵌入式Web伺服器就是其中的一種。通過Web伺服器,客戶端瀏覽器可以瀏覽這些設備的動態信息,並且還可以實現與系統的交互功能。
(1)嵌入式Web伺服器的一般結構
嵌入式Web伺服器的設計通常以通用Web伺服器系統結構為藍本,根據嵌入式系統的特性進行優化。嵌入式Web伺服器的硬體系統包含了Web通信功能的微處理器或者微控制器系統,它可以和前端的應用系統直接集成在一起,也可以通過現場總線與應用系統相連。
一個完整的硬體系統由微型處理器、FLASH存儲器、DRAM存儲器、網絡接口和前端應用系統硬體所組成。微型處理器負責全局的運行和管理,FLASH存儲器用來存儲實時作業系統的系統內核、TCP/IP協議棧、各種Web文檔;DRAM存儲器在系統運行時使用;網絡接口實現與Internet的連接;前端應用系統的硬體完成傳統意義上的應用功能。
由於嵌入式系統硬體資源有限,嵌入式Web伺服器的硬體結構不能很複雜,實時作業系統的系統內核、TCP/IP協議棧、各種Web文檔都必須存儲在FLASH中,這對軟體系統設計提出了較高的要求。嵌入式Web伺服器應用系統的硬體結構如圖1所示。
(2)系統的硬體設計方案
LPC2132微控制器是所設計的嵌入式Web伺服器的核心,一方面LPC2132微控制器內部要實現TCP/IP協議棧,並驅動網絡接口控制器ENC28J60,經耦合隔離變壓器H1102和乙太網以實現Internet接入;另一方面,LPC2132微控制器又是相應控制系統的控制單元。
由於乙太網的廣泛使用,本文選擇了最為常用的Internet接入方式,即通過乙太網接入Internet.由美國Microchip公司生產的乙太網控制晶片ENC28J60是本設計所選擇的網絡接口控制器,它集成了介質訪問控制子層和物理層的功能,主要完成網絡接口層中數據幀的發送和接收。
H1102是一款耦合隔離變壓器,用來對網絡上的脈衝進行轉換和濾波。H1102聯接RJ45接頭,可以直接接入乙太網。
串行電平轉換模塊選用了Maxim公司出品的MAXSP3232E晶片。該晶片內部含有倍增電路和轉換電路,只需+5V電源供電即可實現TTL電平到RS232C電平的轉換。RS232串口一方面是作為開發調試用的,一方面可以作為相應的通信應用。
I/O口擴展包括系統的LED顯示電路、JTAG調試電路以及其他測試電路等。
(3)系統的軟體設計方案
Web伺服器是在嵌入式TCP/IP協議棧的基礎上實現的一種應用程式。從系統軟體工作過程來看,可將系統分三部分:第一部分,乙太網控制器驅動程序的實現;第二部分:嵌入式TCP/IP協議的實現,這部分內容在第一部分的基礎上,結合系統具體環境,對標準TCP/IP協議進行簡化並在ARM7單片機上進行移植;第三部分:應用層部分,通過嵌入式TCP/IP協議對用戶數據進行收發處理。這裡是在應用層實現HTTP協議來完成Web伺服器功能的。
所以系統軟體設計部分主要包括了乙太網控制器的驅動程序、嵌入式TCP/IP協議棧以及動態web網頁的實現等幾個模塊:
1)乙太網控制器驅動程序是指LPC2132微控制器對ENC28J60晶片的驅動、控制過程。
2)在LPC2132微控制器內部嵌入TCP/IP協議棧是系統實現的關鍵,它主要包括了ARP,ICMP,IP,TCP和HTTP協議的設計與實現。
3)動態網頁的實現。使用CGI技術,可以實現動態信息的交換,從而達到遠程監視、控制的目的。
軟體設計中的另一任務是確定開發語言。對於嵌入式系統來說,掌握彙編語言的編程是至關重要的,即使使用高級語言來進行編程,通過閱讀編譯出來的彙編代碼,也可以發現高級語言編程時需要優化的地方,從而提高高級語言所編寫代碼的執行效率。
同時嵌入式系統的資源緊張,要合理利用資源,提高運行效率,關鍵部分、時間要求嚴格的部分還是需要使用彙編語言來完成。但彙編語言在代碼編寫和維護上效率較低,通用性不強,在複雜的項目上還是選用高級語言比較合理。在本設計中,採用彙編語言編寫ARM7內核的啟動代碼(boot loader),其它的程序採用C語言作為設計語言。它有很明顯的優勢:C語言是一種編譯型程序設計語言,它兼顧了多種高級語言的特點,有豐富的庫函數、運算速度快,而且可以直接實現對系統硬體的控制,較彙編語言有更好的可讀性。
3.嵌入式Web伺服器設計的實現
(1)主程序流程
在主程序流程中,主要設計實現包括兩大部分:第一是對接收到的乙太網數據幀進行解包:第二則是對要發送的數據進行封裝並發送。
系統初始化模塊主要包括了LPC2I32微控制器的初始化、網絡接口晶片ENC28J60的初始化、TCP/IP協議棧中各標誌的初始化等:
ARP處理模塊主要完成接收ARP請求並發送ARP響應;ICMP處理模塊主要完成接收ICMP回顯請求並發送ICMP回顯響應;TCP數據處理模塊主要完成對TCP數據報及HTTP數據的處理。
當程序運行時,首先對系統初始化,這時系統處於等待狀態,直到有數據幀到達。ENC28J60接收完數據幀以後,首先去除幀頭,然後判斷該數據幀的報文是否為ARP包,若是,則進行ARP數據包處理,若不是,則檢查數據報頭,看IP數據包的報文是否為ICMP數據包,若是ICMP數據包,則轉到ICMP數據處理子程序。若不是ICMP數據包,就繼續進行判斷,看是否為TCP數據包,若為TCP數據包則轉入TCP數據處理子程序,若此時即不是ICMP數據包也不是TCP數據包,則將該包丟棄。
子程序的設計是為了完成TCP/IP協議體系的每一層的功能的,TCP/IP協議的每一層都是相互聯繫的,但也是相對獨立的,具體由下面7個部分實現:乙太網驅動程序、乙太網層程序、ARP協議處理程序、IP協議處理程序、ICMP協議處理程序、TCP協議處理程序、HTTP協議處理程序。