摘 要:隨著網(wǎng)絡(luò)的日益普及,將嵌入式系統(tǒng)接入網(wǎng)絡(luò)的想法也變得更加現(xiàn)實(shí)。介紹一種基于MicroBlaze處理器的嵌入式Web服務(wù)器的設(shè)計(jì)方法。系統(tǒng)在Virtex4 系列LX25芯片上,采用軟核處理器MicroBlaze配置核心處理器。MicroBlaze軟內(nèi)核是一種針對(duì)Xilinx的FPGA器件而優(yōu)化的功能強(qiáng)大的標(biāo)準(zhǔn)32位RISC處理器。網(wǎng)絡(luò)協(xié)議采用Xilnet,這是Xilinx公司專門針對(duì)Xilinx嵌入式系統(tǒng)應(yīng)用而設(shè)計(jì)的網(wǎng)絡(luò)通信協(xié)議,接口芯片使用LAN91C111?;贛icroBlaze的嵌入式Web 服務(wù)器能夠達(dá)到預(yù)期的效果,用戶可以通過(guò)IE瀏覽器瀏覽存儲(chǔ)在DDR SDRAM芯片中的網(wǎng)頁(yè),由于CPU本身是以軟核的方式實(shí)現(xiàn),其功能可根據(jù)需要進(jìn)行定制,非常靈活。該Web服務(wù)器基于HTTP協(xié)議,采用TCP/IP套接字編程技術(shù)實(shí)現(xiàn),能夠?qū)崿F(xiàn)對(duì)工業(yè)現(xiàn)場(chǎng)的數(shù)據(jù)采集、遠(yuǎn)程監(jiān)控以及信息的交互。
關(guān)鍵詞:MicroBlaze;嵌入式Web;Xilnet;超文本傳輸協(xié)議
中圖分類號(hào):TP393.11文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1004-373X(2008)08-027-03
Design and Implementation of Embedded Web Server Based on MicroBlaze
QI Ming,YAO Ming
(Information Science Technology College,Xiamen University,Xiamen,361005,China)
Abstract:With the development of Internet,the idea of merging embedded system into the network becomes more reliable.This paper introduces a design way of embedded Web server that based on the MicroBlaze.The system used soft core MicroBlaze to configure it on the LX25 chip.MicroBlaze is a standard RISC processor which has stronger optimized function and is specific towards Xilinx FPGA devices.Net protocol adopted Xilnet which is designed for Xilinx embedded system′s application.Interface chip is LAN91C111.The system described in this article can reach the expected affect and users can browse the net in the SDRAM through IE.Due to the soft core implement way,it can be customized according to your own need and very flexible.The web server is implemented by TCP/IP socket program technology and based on HTTP protocol.It can complete data acquisition,remote surveillance and imformation interaction.
Keywords:MicroBlaze;embedded Web;Xilnet;HTTP
1 引 言
由于Internet技術(shù)的滲透,嵌入式系統(tǒng)正變得越來(lái)越智能化并具有越來(lái)越多的網(wǎng)絡(luò)友好特性。Web技術(shù)的飛速發(fā)展,給嵌入式系統(tǒng)進(jìn)入Internet提供絕佳的途徑。在現(xiàn)場(chǎng)儀表和企業(yè)設(shè)備層應(yīng)用嵌入式技術(shù)是企業(yè)監(jiān)控系統(tǒng)的發(fā)展趨勢(shì)。與現(xiàn)場(chǎng)總線技術(shù)相比,嵌入式技術(shù)不僅為開(kāi)發(fā)者提供了大量的工具和函數(shù)庫(kù),而且減少了傳統(tǒng)的客戶端,減少了二次開(kāi)發(fā)的工作量;而把嵌入式技術(shù)和Internet技術(shù)結(jié)合起來(lái),使得整個(gè)工控網(wǎng)絡(luò)易于和Internet實(shí)現(xiàn)無(wú)縫連接;現(xiàn)在多數(shù)企業(yè)控制網(wǎng)絡(luò)是通過(guò)專用線路進(jìn)行數(shù)據(jù)通信,其通信介質(zhì)、通信協(xié)議都是專用的,而Internet技術(shù)的滲透使嵌入式設(shè)備的遠(yuǎn)程控制和管理方式都有了改變,不再需要專用的通信線路,傳輸?shù)男畔⒁膊辉倬窒抻跀?shù)據(jù)信息。Web技術(shù)的發(fā)展、通信協(xié)議的公開(kāi)、HTML語(yǔ)言的標(biāo)準(zhǔn)統(tǒng)一性,使得只要在嵌入式設(shè)備中有一個(gè)微型服務(wù)器,通過(guò)用任意一種Web瀏覽器,用戶就可以監(jiān)控現(xiàn)場(chǎng)數(shù)據(jù)和設(shè)備。
2 嵌入式軟核處理器MicroBlaze
MicroBlaze是基于Xilinx公司FPGA的微處理器IP核,和其他外設(shè)IP核一起,可以完成可編程系統(tǒng)芯片(SoPc)的設(shè)計(jì)。MicroBlaze 32位軟處理芯核運(yùn)行速度為150 MHz,性能達(dá)100 DMIPS。采用RISC架構(gòu)和哈佛結(jié)構(gòu)的獨(dú)立32位指令和數(shù)據(jù)總線,可以全速度執(zhí)行存儲(chǔ)在片上存儲(chǔ)器和外部存儲(chǔ)器中的程序并訪問(wèn)其中的數(shù)據(jù)。支持CoreConnect總線的標(biāo)準(zhǔn)外設(shè)集合為MicroBlaze設(shè)計(jì)人員提供了兼容性和重利用能力。MicroBlaze內(nèi)部有32個(gè)32位通用寄存器和2個(gè)32位特殊寄存器PC指針和MSR狀態(tài)標(biāo)志寄存器。為了提高性能,MicroBlaze還具有指令和數(shù)據(jù)緩存。所有的指令字長(zhǎng)都是32位,有3個(gè)操作數(shù)和2種尋址模式。指令按功能劃分有邏輯運(yùn)算、算術(shù)運(yùn)算、分支、存儲(chǔ)器讀/寫和特殊指令等。指令執(zhí)行的流水線是并行流水線,他分為3級(jí)流水:取指、譯碼和執(zhí)行。
MicroBlaze軟處理器可為您提供不同方法的靈活性。首先可以從處理器內(nèi)核開(kāi)始,構(gòu)建能夠準(zhǔn)確滿足設(shè)計(jì)需要的外設(shè)集合。由于只需要實(shí)現(xiàn)自己所需要的部分,因此避免了芯片資源浪費(fèi)。因?yàn)椴恍枰帉懘a關(guān)閉/禁止不需要的處理器功能,因此降低了軟件設(shè)計(jì)復(fù)雜性。創(chuàng)建專用處理器配置的工作也成為一項(xiàng)簡(jiǎn)單的任務(wù),而為了滿足技術(shù)規(guī)格的變化專用處理器配置隨時(shí)可能需要改變。即使在實(shí)際應(yīng)用5~6年后,連FPGA硬件本身可能也已經(jīng)接近其生命期的終點(diǎn)時(shí),只需要簡(jiǎn)單的利用同樣的C代碼將軟處理器內(nèi)核移植到新的FPGA硬件中就可以。硬件平臺(tái)或許需要一定的PCB修改,但遺留下的代碼仍然是可用的,不需要修改。
3 系統(tǒng)結(jié)構(gòu)
在系統(tǒng)結(jié)構(gòu)設(shè)計(jì)上,考慮現(xiàn)有的各種嵌入式網(wǎng)絡(luò)實(shí)現(xiàn)方案,絕大多數(shù)嵌入式Internet都使用微控制器和相應(yīng)的軟件來(lái)實(shí)現(xiàn)。本文介紹的嵌入式Web服務(wù)器的設(shè)計(jì)則是采用基于FPGA的MicroBlaze軟核處理器,其靈活性大大提高,而成本則可以大大降低,充分體現(xiàn)了可編程片上系統(tǒng)(SoPc)的優(yōu)勢(shì)。系統(tǒng)主要支持CoreConnect總線的標(biāo)準(zhǔn)外設(shè)集合,DDR SDRAM主要用來(lái)存放軟件代碼以及一些需要保存的參數(shù),BRAM用來(lái)在系統(tǒng)運(yùn)行時(shí)的代碼和數(shù)據(jù)存儲(chǔ);網(wǎng)絡(luò)接口芯片采用SMSC公司的LAN91C111芯片作為網(wǎng)絡(luò)接口。該器件是一個(gè)以太網(wǎng)控制器,實(shí)現(xiàn)了網(wǎng)絡(luò)7層協(xié)議棧中的物理層和MAC層的功能。他具有10 M/100 M自適應(yīng)、雙工/半工自適應(yīng)等功能,非常適合嵌入式網(wǎng)絡(luò)開(kāi)發(fā)。LCD用來(lái)指示系統(tǒng)運(yùn)行狀態(tài)。整個(gè)系統(tǒng)的結(jié)構(gòu)如圖1所示。
4 硬件設(shè)計(jì)
本文在進(jìn)行硬件設(shè)計(jì)的時(shí)候采用基于IP核的設(shè)計(jì)方法,并將大部分功能在單個(gè)FPGA芯片上予以實(shí)現(xiàn)。設(shè)計(jì)電路原理圖之前,必須根據(jù)系統(tǒng)需求選擇合適的IP核。所謂IP核,是指那些以硬件形式(硅片版圖)或者軟件形式(用Verilog、VHDL描述的RTL或者門級(jí)模型)存在的、具有特定功能的硬件電路。IP核通常分為硬核、固核與軟核3種。根據(jù)系統(tǒng)的硬件開(kāi)發(fā)環(huán)境以及性能需求,本文選擇Xilinx公司開(kāi)發(fā)的一系列軟核產(chǎn)品,他們是用VHDL語(yǔ)言所描述的硬件模塊,允許用戶根據(jù)需要對(duì)各種參數(shù)進(jìn)行配置,如數(shù)據(jù)通路帶寬、優(yōu)先進(jìn)行速度優(yōu)化還是資源優(yōu)化等,因而應(yīng)用非常靈活。系統(tǒng)所用到的軟IP核產(chǎn)品有MicroBlaze,BRAM、定時(shí)器、通用異步收發(fā)器UART,以及用于外部功能擴(kuò)展的OPB總線模塊。
硬件設(shè)計(jì)使用的是ISE可編程邏輯器件集成開(kāi)發(fā)環(huán)境。提供從設(shè)計(jì)輸入到器件編程的全部功能。采用Xilinx公司的EDK開(kāi)發(fā)工具可大大提高系統(tǒng)設(shè)計(jì)效率,他能夠在圖形化界面內(nèi)定制一個(gè)從硬件到軟件的完整系統(tǒng)。在EDK中包含了外設(shè)與MicroBlaze的接口,所以只需定義CPU與外設(shè)的接口即可。設(shè)計(jì)采用的CPU為Micro[CD*4]Blaze僅占用900個(gè)邏輯單元。在EDK下添加對(duì)應(yīng)接口模塊。然后生成對(duì)應(yīng)的VHDL文件。同時(shí),EDK還根據(jù)定制的結(jié)果,自動(dòng)的生成針對(duì)特定硬件環(huán)境的C語(yǔ)言的頭文件以及函數(shù)庫(kù),這在軟件設(shè)計(jì)中會(huì)極大地減少軟件開(kāi)發(fā)人員的工作量。
本文采用的是Xilinx公司Virtex4系列FPGA芯片,最多能提供200 000個(gè)邏輯單元和多達(dá)64 kB的BRAM存儲(chǔ)空間。由于FPGA芯片具有可反復(fù)更改的特性,因此有助于硬件系統(tǒng)的改進(jìn)和不斷升級(jí)。
由于在FPGA芯片上構(gòu)造以太網(wǎng)物理層、MAC層電路較困難,本文將這些功能放到FPGA芯片的外面,使用LAN91C111芯片來(lái)實(shí)現(xiàn)以太網(wǎng)硬件接口功能。SMSC公司的LAN91C111是為了方便嵌入式應(yīng)用系統(tǒng)連接到快速以太網(wǎng)而專門設(shè)計(jì)的,他實(shí)現(xiàn)CSMA/CD協(xié)議的物理層和媒體訪問(wèn)控制層(MAC) 兩個(gè)部分,并可以很方便地與許多嵌入式處理器進(jìn)行數(shù)據(jù)交換。
5 軟件設(shè)計(jì)
軟件設(shè)計(jì)包括:操作系統(tǒng)移植、網(wǎng)絡(luò)協(xié)議棧設(shè)計(jì)、文件系統(tǒng)生成、應(yīng)用級(jí)代碼編寫等部分。
5.1 操作系統(tǒng)
為了簡(jiǎn)化設(shè)計(jì),本文中的Web服務(wù)器采用單一線程,無(wú)需RTOS(實(shí)時(shí)操作系統(tǒng))的支持。故采用EDK提供的僅支持單進(jìn)程的standalone板支持包即可。
5.2 協(xié)議棧
系統(tǒng)采用的是EDK中包含針對(duì)MicroBlaze的網(wǎng)絡(luò)協(xié)議棧,隱藏了低層硬件細(xì)節(jié),以類似于Unix套接字的方式實(shí)現(xiàn)一個(gè)精簡(jiǎn)的網(wǎng)絡(luò)協(xié)議棧Xilnet。他支持以下一些網(wǎng)絡(luò)協(xié)議:IP,ARP,ICMP,UDP,TCP。調(diào)用如下函數(shù)初始化棧以及MAC地址和IP地址。
xilnet_eth_init_hw_addr(\"00:00:00:00:22:38\");
xilnet_eth_init_hw_addr_tbl();
xilnet_ip_init(\"192.168.2.13\");
5.3 文件系統(tǒng)
為了支持HTTP協(xié)議,一個(gè)文件系統(tǒng)是必不可少的。本設(shè)計(jì)使用EDK提供的xilmfs文件系統(tǒng)對(duì)網(wǎng)頁(yè)的靜態(tài)頁(yè)面和圖片進(jìn)行組織和存儲(chǔ)。
調(diào)用mfs_file_open()和mfs_file_write()函數(shù)打開(kāi)和創(chuàng)建文件系統(tǒng)??紤]到有限的系統(tǒng)資源,文件存放在DDR SDRAM中。
5.4 HTTP協(xié)議及其實(shí)現(xiàn)
嵌入式Web服務(wù)器技術(shù)的核心是HTTP(超文本傳送協(xié)議)引擎。HTTP是WWW上的協(xié)議。HTTP協(xié)議使Web服務(wù)器和瀏覽器可以通過(guò)Web交換數(shù)據(jù)。他是一種請(qǐng)求/響應(yīng)協(xié)議,即服務(wù)器等待并響應(yīng)客戶方請(qǐng)求。當(dāng)用戶要瀏覽服務(wù)器上的一個(gè)網(wǎng)頁(yè)時(shí),一個(gè)HTTP請(qǐng)求就會(huì)從用戶的瀏覽器發(fā)到HTTP服務(wù)器。服務(wù)器響應(yīng)這個(gè)請(qǐng)求,把指定的網(wǎng)頁(yè)傳送回來(lái),用戶才看到了網(wǎng)頁(yè)。HTTP協(xié)議不維護(hù)與客戶方的連接,他使用可靠的TCP連接,通常采用TCP的80端口。客戶/服務(wù)器傳輸過(guò)程可分為4個(gè)基本步驟:瀏覽器與服務(wù)器建立連接;瀏覽器向服務(wù)器請(qǐng)求文檔;服務(wù)器響應(yīng)瀏覽器請(qǐng)求;斷開(kāi)連接。
服務(wù)器程序開(kāi)始運(yùn)行時(shí),主進(jìn)程就創(chuàng)建一個(gè)套接字,并與主機(jī)地址綁定到一起,隨后置為被動(dòng)監(jiān)聽(tīng)狀態(tài),等待客戶端連接請(qǐng)求的到來(lái),分別有xilsock_socket()創(chuàng)建一個(gè)套接字,xilsock_bind()綁定,xilsock_listen()監(jiān)聽(tīng),xilsock_accept()接收來(lái)完成。一旦接收一個(gè)連接,xilsock_accept()會(huì)返回一個(gè)新的套接字描述符,主程序則開(kāi)辟一個(gè)新的子程序來(lái)處理這個(gè)新的連接。這樣系統(tǒng)可以同時(shí)接收多個(gè)客戶端的請(qǐng)求。
如圖2所示,首先創(chuàng)建套接字,將套接字與本地地址和端口綁定,并設(shè)置套接字處于監(jiān)聽(tīng)狀態(tài)。Web服務(wù)器在接收一個(gè)連接請(qǐng)求后,讀取用戶的請(qǐng)求,根據(jù)用戶的請(qǐng)求進(jìn)行相應(yīng)的處理。
當(dāng)請(qǐng)求位靜態(tài)文本時(shí),文檔直接提交輸出,當(dāng)請(qǐng)求位動(dòng)態(tài)文本時(shí),請(qǐng)求模塊自動(dòng)調(diào)用腳本引擎,將腳本替換位現(xiàn)場(chǎng)數(shù)據(jù),再提交輸出,當(dāng)請(qǐng)求為帶參數(shù)的執(zhí)行命令時(shí),請(qǐng)[LL]求解析器調(diào)用命令執(zhí)行模塊分析命令并控制監(jiān)控前端。
這里并沒(méi)有采用通常的CGI(Common Gateway Interface)技術(shù)對(duì)請(qǐng)求信息進(jìn)行處理,而是將活動(dòng)頁(yè)面由加載進(jìn)Web服務(wù)器的模塊處理,因此處理速度比CGI程序更快、更高效?;顒?dòng)頁(yè)面還可以處理表單、HTTP會(huì)話和方便的訪問(wèn)數(shù)據(jù)庫(kù)。因此,活動(dòng)頁(yè)面對(duì)動(dòng)態(tài)Web頁(yè)面提供完整的服務(wù)器端支持。
6 結(jié) 語(yǔ)
本文介紹的基于MicroBlaze的嵌入式Web服務(wù)器可以實(shí)現(xiàn)預(yù)期功能,用戶可以通過(guò)IE瀏覽器瀏覽存儲(chǔ)到FLASH芯片中的網(wǎng)頁(yè)。
CPU本身是以軟核的方式實(shí)現(xiàn),其功能可根據(jù)需要進(jìn)行定制,非常靈活。EDK不但在硬件設(shè)計(jì)上提供了支持,在軟件上也為設(shè)計(jì)者提供了較好的支持,提供了現(xiàn)成的網(wǎng)絡(luò)協(xié)議棧。加上EDK提供的集成開(kāi)發(fā)環(huán)境使得軟件開(kāi)發(fā)更加便利。采用這種方式的控制系統(tǒng)具有控制分散、開(kāi)放性好、使用簡(jiǎn)單、穩(wěn)定性好等優(yōu)點(diǎn),而且可以通過(guò)瀏覽器進(jìn)行遠(yuǎn)程多點(diǎn)監(jiān)控和遠(yuǎn)程支持,是未來(lái)控制系統(tǒng)發(fā)展的一個(gè)趨勢(shì)。
參 考 文 獻(xiàn)
[1]Xilinx.MicroBlaze Processor Reference Guide (Revision 5.1).Xilinx,2005.
[2]Xilinx.LibXil Net(v2.00.a).Xilinx,2005.
[3]Paul S Wang,Sanda S Katila.Web設(shè)計(jì)與編程導(dǎo)論[M].邱仲潘,譯.北京:高等教育出版社,2005.
[4]高一沅,黃春暉.基于MicroBlaze的以太網(wǎng)通信系統(tǒng)平臺(tái)設(shè)計(jì)的研究\\[J\\].現(xiàn)代電子技術(shù),2007,30(17):2931.
作者簡(jiǎn)介 祁 明 男,廈門大學(xué)信息科學(xué)與技術(shù)學(xué)院自動(dòng)化系檢測(cè)與自動(dòng)化裝置專業(yè),碩士研究生。研究方向?yàn)榛贔PGA的嵌入式控制系統(tǒng)。
姚 銘 男,廈門大學(xué)信息科學(xué)與技術(shù)學(xué)院自動(dòng)化系檢測(cè)與自動(dòng)化裝置專業(yè),碩士生導(dǎo)師、高級(jí)工程師。研究方向?yàn)榍度胧娇刂葡到y(tǒng)。