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