摘 要: 分析了基于ARM的嵌入式Web服務器,介紹了其設計和實現(xiàn)的主要技術,并且通過模擬應用來驗證設計的可用性。
關鍵詞: 嵌入式系統(tǒng);ARM;Web服務器
隨著嵌入式技術的快速發(fā)展,嵌入式系統(tǒng)的應用越來越廣泛。嵌入式Web服務器EWS(Embedded Web Server)是指將Web服務器引入到現(xiàn)場測試和控制設備中,在相應的硬件平臺和軟件系統(tǒng)的支持下,使傳統(tǒng)的測試和控制設備轉變?yōu)榫邆淞艘訲CP/IP為底層通信協(xié)議、Web技術為核心的基于互聯(lián)網(wǎng)的網(wǎng)絡測試和控制設備。嵌入式Web服務器簡化了傳統(tǒng)服務器的系統(tǒng)結構,它在嵌入式設備上同時實現(xiàn)信息傳輸和網(wǎng)絡接口的功能。嵌入式Web服務器基于HTTP協(xié)議運作,有標準的接口形式和通信協(xié)議。它可以向任何接入它所在網(wǎng)絡的合法用戶提供統(tǒng)一的基于瀏覽器方式的操作和控制界面。Web技術的開放性和平臺獨立特性能夠降低開發(fā)難度,減少軟件系統(tǒng)和通信系統(tǒng)的設計維護工作量,提高了現(xiàn)場測試和控制設備的管理水平。
1 嵌入式Web服務器的主要特點
在工業(yè)設備上嵌入Web服務器,使得設備能與現(xiàn)今最大的網(wǎng)絡Internet無縫連接,無需專用的線路。通信介質是以太網(wǎng)為基礎,能有最大的普及范圍;傳輸內容不僅限于數(shù)據(jù),還有圖像、聲音等多媒體信息;通信協(xié)議(HTTP)是標準的而且是公開的,其獨立于系統(tǒng)平臺;所使用的超文本標記語言(HTML)具有統(tǒng)一性,標準化界面獨立于客戶端的軟件硬件平臺,極大地節(jié)省了客戶端的開發(fā)工作;所使用的Web架構具有開放性和平臺獨立性,能夠大大降低系統(tǒng)的設計工作量。同時,還能提供大量工具和函數(shù)庫減少開發(fā)的工作量。在客戶端使用任意與Internet互連的標準PC(標準瀏覽器)就可以實現(xiàn)隨時隨地訪問。嵌入式Web服務器具有通用性,這使得它能夠嵌入到任何設備中。通過應用程序接口,服務器可以運行程序去實現(xiàn)高級功能,這是普通的監(jiān)控方式不能相比的。它具有可擴展的特性,通過應用程序接口實現(xiàn)各種具體的應用。此外,它還具備升級簡單、維護容易等優(yōu)點。
2 嵌入式Web服務器的應用
嵌入式Web服務器是應用在嵌入式系統(tǒng)上的Web服務器機構。目前的主要應用是設備管理和企業(yè)應用程序網(wǎng)絡擴展。嵌入式Web服務器作為一個后臺程序直接在嵌入式設備上運行,用戶通過網(wǎng)絡對設備進行配置、控制和監(jiān)測,保證設備有效、高效地運作。Web接口使得用戶可以在任何一臺有互聯(lián)網(wǎng)接入能力的帶有Web瀏覽器的設備訪問到該嵌入式設備。Web服務器提供應用程序接口可以擴展Web的應用。這種設備管理方式不僅起到監(jiān)測和控制的功能,而且根據(jù)設備的特點可以更加人性化和智能化。它使對遠程設備的操作從監(jiān)控變?yōu)楣芾?。另外一個應用是企業(yè)應用程序網(wǎng)絡擴展。Web服務已成為支撐現(xiàn)代應用程序的技術和系統(tǒng)的核心組件,現(xiàn)今約87%的企業(yè)用戶都希望為他們的程序添加上基于Web的用戶接口。嵌入式Web服務器很好地提供了Internet網(wǎng)絡的接口,將應用程序和Web接口結合起來,是應用程序網(wǎng)絡擴展良好的解決方案。
3 嵌入式WEB服務器的構造
3.1 硬件系統(tǒng)組成
本文設計的嵌入式Web服務器采用低價格、高性能的基于ARM7的LPC2210微控制器為主控芯片,通過SPI接口控制以太網(wǎng)控制器芯片ENC28J60實現(xiàn)TCP/IP通信。采用基于μC/OS-Ⅱ操作系統(tǒng)的軟件設計,以提高整個設計的穩(wěn)定性與擴展能力。圖1為嵌入式Web服務器的硬件系統(tǒng)組成。
3.2 最小系統(tǒng)
主控芯片采用LPC2210,內部僅有16 KB的RAM,沒有片內Flash。由于μC/OS-Ⅱ和TCP/IP協(xié)議的移植,同時要進行簡單的網(wǎng)頁存儲,因此在LPC2210外分別開展了512 KB的SDRAM以及2 MB的Flash。LPC2210含有SPI接口,滿足操作以太網(wǎng)控制器ENC28J60的要求。同時,LPC2210含有SCI、I2C等外部資源,方便系統(tǒng)功能擴展。由于LPC2210工作在+3.3 V,但是其內核的工作電壓是+1.8 V,因此設計電源時要考慮+3.3 V供電以及+1.8 V供電。此外,本設計中還使用了帶“看門狗”的專用復位芯片以提高系統(tǒng)抗干擾能力。
3.3 TCP/IP通信模塊
本文采用Microchip公司推出的SPI接口的以太網(wǎng)控制器ENC28J60,其最大通信速率為10 Mb/s。ENC28J60引腳簡單,通過SPI接口和LPC2210相連接,網(wǎng)絡的4個引腳通過網(wǎng)絡變壓器后連接到RJ45接口,2個中斷引腳接單片機的外部中斷或者連接到通用I/O口,2個指示燈引腳外接發(fā)光管連接到地或者電源,其余引腳是電源和地,簡化了硬件設計難度。圖2為ENC28J60接口電路。網(wǎng)口插座采用內置網(wǎng)絡變壓器、狀態(tài)顯示燈和電阻網(wǎng)絡的RJ45接座HR911105A,具有信號耦合、電氣隔離、阻抗匹配和抑制干擾等優(yōu)點。
4 TCP/IP通信協(xié)議的實現(xiàn)
4.1 ENC28J60硬件驅動設計
ENC28J60所執(zhí)行的操作完全依據(jù)外部主控制器通過SPI接口發(fā)出的命令,這些命令為一個或多個字節(jié)的指令,用于訪問控制存儲器和以太網(wǎng)緩沖區(qū)。指令至少包含一個3 bit操作碼和一個用于指定寄存器地址或數(shù)據(jù)常量的5 bit參數(shù),指令后還會有一個或多個字節(jié)的數(shù)據(jù)。ENC28J60共有7條指令,表1顯示了所有操作的命令代碼。通過SPI接口對ENC28J60相應寄存器進行讀寫操作即可完成ENC28J60硬件驅動設計。
4.2 使用MCHPStack實現(xiàn)TCP/IP通信
由于本設計選擇用Microchip公司的以太網(wǎng)控制芯片ENC28J60實現(xiàn)TCP/IP通信,因此同時選擇該公司提供的協(xié)議棧MCHPStack作為參考。MCHPStack是Microchip公司為其生產(chǎn)的微處理器進行以太網(wǎng)應用而開發(fā)的一個協(xié)議棧,整個框架結構清晰地體現(xiàn)出了OSI參考模型的分層思想。通過該協(xié)議棧所提供的一個狀態(tài)機函數(shù),可以方便地實現(xiàn)ARP、IP、ICMP、UDP以及TCP通信。TCP作為運輸層協(xié)議,是應用層協(xié)議HTTP的基礎,要實現(xiàn)HTTP協(xié)議只需要在TCP基礎上進行應用程序設計即可完成。
在移植協(xié)議棧的過程中需要注意數(shù)據(jù)的大小端格式以及結構體字節(jié)對齊兩點。TCP/IP各層協(xié)議所使用的字節(jié)序均為big-endian字節(jié)順序,而LPC2210為little-endian字節(jié)順序。本文使用的編譯環(huán)境ADS支持4字節(jié)結構體對齊,而協(xié)議棧中結構體是單字節(jié)對齊的。因此,LPC2210在對以太網(wǎng)控制器進行數(shù)據(jù)讀寫時,既要進行字節(jié)順序轉換,又要使用#Pragma_packed定義結構體按單字節(jié)對齊,否則無法正確地進行數(shù)據(jù)報的解析,以致無法正確實現(xiàn)TCP/IP通信。
5 嵌入式Web服務器應用程序的實現(xiàn)
Brower/Server(B/S)模式已經(jīng)成為流行的開發(fā)模式,課題中的嵌入式Web服務器要實現(xiàn)的功能主要是現(xiàn)場實時數(shù)據(jù)發(fā)布功能。B/S訪問模式是Web Server和Browser之間的直接訪問??蛻艉头掌鏖g的中間節(jié)點不對HTTP請求及響應做任何操作,只需在客戶端采用如IE這樣的瀏覽器對服務器上的數(shù)據(jù)進行瀏覽,不用開發(fā)客戶端程序。采用B/S結構具有如下優(yōu)勢:
?。?)具有分布性特點,可以隨時隨地進行業(yè)務處理;
?。?)系統(tǒng)維護或升級只在服務器端,無需對客戶端進行改動,只需要改變服務器端網(wǎng)頁,即可實現(xiàn)所有用戶的同步更新,易于維護和升級;
(3)開發(fā)簡單,共享性強。
B/S訪問模式只需對服務器端程序進行開發(fā)。在服務器端形成動態(tài)網(wǎng)頁最常用的工具有ASP和JSP。由于采用的嵌入式芯片SX52只有4 KB存儲容量,在SX52中既實現(xiàn)TCP/IP協(xié)議棧,又實現(xiàn)ASP和JSP的功能是很困難的。所以可以采用字節(jié)傳輸方式針對SX52用匯編語言編程實現(xiàn)動態(tài)網(wǎng)頁。
Java applet能夠被傳送到瀏覽器并且在瀏覽器所在的本地機上運行。本設計正是利用這一特性改進了傳統(tǒng)的B/S模式設計出的應用程序,Java applet對于管理和處理動態(tài)數(shù)據(jù)也是一種行之有效的技術。Java applet能實時表示從輪詢得到的更新信息,利用這個特性顯示實時數(shù)據(jù)。所以程序客戶端采用Java applet設計實現(xiàn)。
嵌入式Web服務器接入以太網(wǎng)時,在程序中設置了自身的IP地址和MAC地址,可以與局域網(wǎng)上任一臺微機通信。服務器端主要實現(xiàn)兩部分功能:利用HTTP協(xié)議實現(xiàn)網(wǎng)頁瀏覽功能和利用套接字編程實現(xiàn)與客戶端applet通信的功能。服務器程序用SX52的匯編語言實現(xiàn)。
在Web服務器中實現(xiàn)HTTP協(xié)議才能實現(xiàn)網(wǎng)頁文件的瀏覽。方案將Web服務器上擴展的EEPROM與SX52相連,用來存儲要瀏覽的Web文件,EEPROM里的Web內容采用原始數(shù)據(jù)的形式存儲,沒有進行封裝和編碼。文本內容以ASCⅡ碼形式存儲,圖像內容以二進制數(shù)據(jù)形式存儲。
嵌入式Web服務器是嵌入式技術與網(wǎng)絡通信技術相結合的產(chǎn)物。隨著嵌入式技術以及網(wǎng)絡通信技術的發(fā)展,嵌入式Web服務器具有廣闊的應用前景。本文提出了簡化的嵌入式Web服務器的實現(xiàn)方案,采用高性能的ARM微處理器,通過SPI接口控制以太網(wǎng)控制器芯片ENC28J60,并移植了源代碼完全公開的μC/OS-Ⅱ操作系統(tǒng)以及TCP/IP協(xié)議棧,不僅成本低廉、設計簡單,而且運行穩(wěn)定,將其應用在遠程監(jiān)控等場合取得了理想的效果。
參考文獻
[1] 徐春艷.嵌入式WEB服務器的研究與實現(xiàn)[D].南京:南京理工大學,2008.
[2] 李志平,劉大茂.基于ARM7處理器LPC2210的數(shù)據(jù)采集系統(tǒng)設計[J].福建電腦,2006,10:135-136.
[3] 于浩洋,邵國平,秦杰.基于ENC28J60以太網(wǎng)控制器的SPI接口設計[J].黑龍江工程學院學報(自然科學版),2009,6.
[4] 謝希仁.計算機網(wǎng)絡(第5版)[M].北京:電子工業(yè)出版社,2008.
[5] 孟慶洪,侯寶穩(wěn).ARM嵌入式系統(tǒng)開發(fā)與編程[M].北京:清華大學出版社,2011.