探析嵌入式Web伺服器的設計與實現

才智咖 人氣:2.16W

一、引言

探析嵌入式Web伺服器的設計與實現

嵌入式Web伺服器(Embedded Web Server,EWS)是指將Web伺服器嵌入到現場測試和控制裝置中,在相應的硬體平臺和軟體系統的支援下,使傳統的測試和控制裝置轉變為具備了以TCP/IP為底層通訊協議,Web技術為核心的基於網際網路的網路測試和控制裝置。嵌入式Web伺服器簡化了傳統伺服器的系統結構,在嵌入式裝置上它同時實現資訊傳輸和網路介面的功能。嵌入式Web伺服器基於HTTP協議運作,有標準的介面形式和通訊協議。它可以向任何接入它所在網路的合法使用者提供統一的基於瀏覽器方式的操作和控制介面。Web技術的開放性和平臺的獨立特效能夠降低開發難度,減少軟體系統和通訊系統的設計維護工作量,提高了現場測試和控制裝置的管理水平。

二、嵌入式WEB伺服器總體設計方案

接入Internet有很多種接入方式:電話撥號接入、ISDN, ADSL、乙太網接入等,其中乙太網作為一種廉價、高效的Internet接入方式,已經得到了非常廣泛的應用,本文的Internet接入採用乙太網方式。

將TCP/IP協議棧嵌入到微控制器中,使用網路控制晶片實現微控制器的上網和資料傳輸。利用網路微控制器(嵌入了TCP/IP協議棧的微控制器)可以實現很多功能,嵌入式Web伺服器就是其中的一種。通過Web伺服器,客戶端瀏覽器可以瀏覽這些裝置的動態資訊,並且還可以實現與系統的互動功能。

(一)嵌入式Web伺服器的一般結構

嵌入式Web伺服器的設計通常以通用Web伺服器系統結構為藍本,根據嵌入式系統的特性進行優化。嵌入式Web伺服器的硬體系統包含了Web通訊功能的微處理器或者微控制器系統,它可以和前端的應用系統直接整合在一起,也可以通過現場匯流排與應用系統相連。

一個完整的硬體系統由微型處理器、FLASH儲存器、DRAM儲存器、網路介面和前端應用系統硬體所組成。微型處理器負責全域性的執行和管理,FLASH儲存器用來儲存實時作業系統的系統核心、TCP/IP協議棧、各種Web文件;DRAM儲存器在系統執行時使用;網路介面實現與Internet的連線;前端應用系統的硬體完成傳統意義上的應用功能。

由於嵌入式系統硬體資源有限,嵌入式Web伺服器的硬體結構不能很複雜,實時作業系統的系統核心、TCP/IP協議棧、各種Web文件都必須儲存在FLASH中,這對軟體系統設計提出了較高的要求。嵌入式Web伺服器應用系統的硬體結構如圖1所示:

網路介面

微處理器

SDRAM

FLASH

前端應用系統硬體

圖1嵌入式W比伺服器應用系統的硬體結構

(二)系統的硬體設計方案

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除錯電路以及其他測試電路等。

(三)系統的軟體設計方案

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語言是一種編譯型程式設計語言,它兼顧了多種高階語言的特點,有豐富的庫函式、運算速度快,而且可以直接實現對系統硬體的控制,較組合語言有更好的可讀性。

三、嵌入式Web伺服器的實現

(一)主程式流程

在主程式流程中,主要設計實現包括兩大部分:第一是對接收到的乙太網資料幀進行解包:第二則是對要傳送的資料進行封裝併發送。

系統初始化模組主要包括了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協議處理程式。

(二)嵌入式Web伺服器的實現

1、網路介面的實現

網路介面是Web伺服器與外界交流的介面。作業系統提供網路協議棧的支援,最主要是TCP/IP以及socket套接字系統函式庫。網路介面使用作業系統提供的socket函式族建立可遠端通訊的套接字。它分兩部分,一部分在系統初始化的時候建立,另一部分在HTTP引擎模組裡面實現。網路介面模組的功能描述為:首先建立socket。socket是BSO Unix提出的程序間通訊(IPC)機制,它是一種雙向的通訊介面,使得可以在兩個不同程序(通常是網路上的不同節點的程序)之間可以直接通訊。

2、中心處理模組

中心處理模組是嵌入式Web伺服器的核心。它進行全域性的控制和管理。它通過accept()接收HTTP請求,呼叫read將請求接收到本地,然後進行請求解析。根據請求的內容,判斷是屬於動態內容還是靜態內容,如果是動態內容則呼叫相應的動態處理函式,如果是靜態內容則訪問VFS獲得相應的內容。然後將獲得的內容包裝成為HTTP響應,返回給客戶端。中心處理模組還實現控制管理資訊和容錯機制。

3、動態檔案前處理器

Web伺服器必須有互動能力才是有實際意義的伺服器程式。目前大多數的Web伺服器都是利用CGI (Common Gateway Interface,通用閘道器介面)來實現應用程式的介面。本論文從嵌入式系統的角度出發,實現了一種內部的應用程式介面。

動態檔案前處理器所實現的功能是將普通的Web動態資源轉變成為可編譯的函式程式碼。設動態文件為,它包含內容{x, f(a)}。其中x為靜態的內容,F()為應用程式,a為通過解析HTTP請求得出的引數。動態檔案前處理器將轉變成為f_dtm.c。它的內容為(f_dtm ( )},它是一個函式,實現功能為輸出{x', f(a)}.其中f(a)是f(a)的實際輸出,而x'是輸出靜態內容的動作。

四、嵌入式Web伺服器的主要應用

嵌入式Web伺服器是應用在嵌入式系統上的Web伺服器架構。它的主要應用是裝置管理和應用程式的網路擴充套件。

嵌入式Web伺服器作為一個後臺程式直接在嵌入式裝置上執行,使用者通過網路對裝置配置、控制、監測,保證裝置安全、有效地運作。

Web介面使得使用者可以在任何一臺有網際網路接入能力的帶有Web瀏覽器的裝置訪問到該嵌入式裝置。Web伺服器提供應用程式介面可以擴充套件Web的應用。這種裝置管理方式不僅起到監測、控制的功能,而且根據裝置的特點可以更加入性化和智慧化。它使對遠端裝置的操作從監控(Monitor)變成為管理(Manage )。其中基於嵌入式WEB伺服器的視訊監控系統現已成為視訊監控系統的主流技術,在嵌入式系統中整合嵌入式 Web視訊伺服器,採用嵌入式實時多工作業系統;內建一個嵌入式Web伺服器。攝像頭送來的視訊訊號數字化後由高效壓縮晶片壓縮,通過內部匯流排送到內建的Web伺服器,網路上使用者可以直接用瀏覽器觀看Web伺服器上的攝像機影象,授權使用者還可以控制攝像機、雲臺、鏡頭的動作或對系統配置進行操作。

另一個應用是應用程式網路擴充套件。Web服務已成為支撐現代應用程式技術和系統核心元件,現今約87%的企業使用者都希望為他們的程式新增上基於Web的使用者介面。嵌入式Web伺服器很好地提供了Internet網路的介面,將應用程式和Web介面結合起來,是應用程式網路擴充套件的解決方案。

參考文獻:

1嵌入式Web伺服器的設計與實現宋凱 計算機工程與設計 2009/04

2嵌入式Linux下WEB伺服器的設計與實現 吳玉成 資料通訊 2008/06

3基於ARM-LINUX的嵌入式Web伺服器設計 樑銀會 成都資訊工程學院學報 2008/05