1 引言
由于Internet技術的滲透,嵌入式系統(tǒng)正變得越來越智能化并具有越來越多的網絡友好特性,。Web技術的飛速發(fā)展,,給嵌入式系統(tǒng)進入Internet提供絕佳的途徑。在現場儀表和企業(yè)設備層應用嵌入式技術是企業(yè)監(jiān)控系統(tǒng)的發(fā)展趨勢,。與現場總線技術相比,,嵌入式技術不僅為開發(fā)者提供了大量的工具和函數庫,而且減少了傳統(tǒng)的客戶端,,減少了二次開發(fā)的工作量,;而把嵌入式技術和Internet技術結合起來,使得整個工控網絡易于和Internet實現無縫連接,;現在多數企業(yè)控制網絡是通過專用線路進行數據通信,,其通信介質、通信協(xié)議都是專用的,,而Internet技術的滲透使嵌入式設備的遠程控制和管理方式都有了改變,,不再需要專用的通信線路,傳輸的信息也不再局限于數據信息,。Web技術的發(fā)展,、通信協(xié)議的公開、HTML語言的標準統(tǒng)一性,,使得只要在嵌入式設備中有一個微型服務器,,通過用任意一種Web瀏覽器,用戶就可以監(jiān)控現場數據和設備,。
2 嵌入式軟核處理器MicroBlaze
MicroBlaze是基于Xilinx公司FPGA的微處理器IP核,,和其他外設IP核一起,可以完成可編程系統(tǒng)芯片(SoPc)的設計,。MicroBlaze 32位軟處理芯核運行速度為150 MHz,,性能達100 D-MIPS。采用RISC架構和哈佛結構的獨立32位指令和數據總線,,可以全速度執(zhí)行存儲在片上存儲器和外部存儲器中的程序并訪問其中的數據,。支持CoreConnect總線的標準外設集合為MicroBlaze設計人員提供了兼容性和重利用能力。MicroBlaze內部有32個32位通用寄存器和2個32位特殊寄存器PC指針和MSR狀態(tài)標志寄存器,。為了提高性能,,MicroBlaze還具有指令和數據緩存,。所有的指令字長都是32位,有3個操作數和2種尋址模式,。指令按功能劃分有邏輯運算,、算術運算、分支,、存儲器讀/寫和特殊指令等,。指令執(zhí)行的流水線是并行流水線,他分為3級流水:取指,、譯碼和執(zhí)行,。
MicroBlaze軟處理器可為您提供不同方法的靈活性。首先可以從處理器內核開始,,構建能夠準確滿足設計需要的外設集合,。由于只需要實現自己所需要的部分,因此避免了芯片資源浪費,。因為不需要編寫代碼關閉/禁止不需要的處理器功能,,因此降低了軟件設計復雜性。創(chuàng)建專用處理器配置的工作也成為一項簡單的任務,,而為了滿足技術規(guī)格的變化專用處理器配置隨時可能需要改變,。即使在實際應用5~6年后,連FPGA硬件本身可能也已經接近其生命期的終點時,,只需要簡單的利用同樣的C代碼將軟處理器內核移植到新的FPGA硬件中就可以,。硬件平臺或許需要一定的PCB修改,但遺留下的代碼仍然是可用的,,不需要修改,。
3 系統(tǒng)結構
在系統(tǒng)結構設計上,考慮現有的各種嵌入式網絡實現方案,,絕大多數嵌入式Internet都使用微控制器和相應的軟件來實現,。本文介紹的嵌入式Web服務器的設計則是采用基于FPGA的MicroBlaze軟核處理器,其靈活性大大提高,,而成本則可以大大降低,,充分體現了可編程片上系統(tǒng)(SoPc)的優(yōu)勢。系統(tǒng)主要支持CoreConnect總線的標準外設集合,,DDR SDRAM主要用來存放軟件代碼以及一些需要保存的參數,,BRAM用來在系統(tǒng)運行時的代碼和數據存儲;網絡接口芯片采用SMSC公司的IAN91C111芯片作為網絡接口,。該器件是一個以太網控制器,,實現了網絡7層協(xié)議棧中的物理層和MAC層的功能。他具有10 M/100 M自適應,、雙工/半工自適應等功能,,非常適合嵌入式網絡開發(fā),。LCD用來指示系統(tǒng)運行狀態(tài)。整個系統(tǒng)的結構如圖1所示,。
4 硬件設計
本文在進行硬件設計的時候采用基于IP核的設計方法,,并將大部分功能在單個FPGA芯片上予以實現。設計電路原理圖之前,,必須根據系統(tǒng)需求選擇合適的IP核,。所謂IP核,是指那些以硬件形式(硅片版圖)或者軟件形式(用Verilog,、VHDL描述的RTL或者門級模型)存在的,、具有特定功能的硬件電路。IP核通常分為硬核,、固核與軟核3種。根據系統(tǒng)的硬件開發(fā)環(huán)境以及性能需求,,本文選擇Xilinx公司開發(fā)的一系列軟核產品,,他們是用VHDL語言所描述的硬件模塊,允許用戶根據需要對各種參數進行配置,,如數據通路帶寬,、優(yōu)先進行速度優(yōu)化還是資源優(yōu)化等,因而應用非常靈活,。系統(tǒng)所用到的軟IP核產品有MicroBlaze,,BRAM、定時器,、通用異步收發(fā)器UART,,以及用于外部功能擴展的OPB總線模塊。
硬件設計使用的是ISE可編程邏輯器件集成開發(fā)環(huán)境,。提供從設計輸入到器件編程的全部功能,。采用Xilinx公司的EDK開發(fā)工具可大大提高系統(tǒng)設計效率,他能夠在圖形化界面內定制一個從硬件到軟件的完整系統(tǒng),。在EDK中包含了外設與MicroBlaze的接口,,所以只需定義CPU與外設的接口即可。設計采用的CPU為MicroBlaze僅占用900個邏輯單元,。在EDK下添加對應接口模塊,。然后生成對應的VHDL文件。同時,,EDK還根據定制的結果,,自動的生成針對特定硬件環(huán)境的C語言的頭文件以及函數庫,這在軟件設計中會極大地減少軟件開發(fā)人員的工作量,。
本文采用的是Xilinx公司Virtex4系列FPGA芯片,,最多能提供200 000個邏輯單元和多達64 kB的BRAM存儲空間,。由于FPGA芯片具有可反復更改的特性,因此有助于硬件系統(tǒng)的改進和不斷升級,。
由于在FPGA芯片上構造以太網物理層,、MAC層電路較困難,本文將這些功能放到FPGA芯片的外面,,使用LAN91C111芯片來實現以太網硬件接口功能,。SMSC公司的LAN91C111是為了方便嵌入式應用系統(tǒng)連接到快速以太網而專門設計的,他實現CSMA/CD協(xié)議的物理層和媒體訪問控制層(MAC)兩個部分,,并可以很方便地與許多嵌入式處理器進行數據交換,。
5 軟件設計
軟件設計包括:操作系統(tǒng)移植、網絡協(xié)議棧設計,、文件系統(tǒng)生成,、應用級代碼編寫等部分。
5.1 操作系統(tǒng)
為了簡化設計,,本文中的Web服務器采用單一線程,,無需RTOS(實時操作系統(tǒng))的支持。故采用EDK提供的僅支持單進程的standalone板支持包即可,。
5.2 協(xié)議棧
系統(tǒng)采用的是EDK中包含針對MicroBlaze的網絡協(xié)議棧,,隱藏了低層硬件細節(jié),以類似于Unix套接字的方式實現一個精簡的網絡協(xié)議棧Xilnet,。他支持以下一些網絡協(xié)議:IP,,ARP,ICMP,,UDP,,TCP。調用如下函數初始化棧以及MAC地址和IP地址,。
5.3 文件系統(tǒng)
為了支持HTTP協(xié)議,,一個文件系統(tǒng)是必不可少的。本設計使用EDK提供的xilmfs文件系統(tǒng)對網頁的靜態(tài)頁面和圖片進行組織和存儲,。
調用mfs_file_open()和mfs_file_wrire()函數打開和創(chuàng)建文件系統(tǒng),。考慮到有限的系統(tǒng)資源,,文件存放在DDR SDRAM中,。
5.4 HTTP協(xié)議及其實現
嵌入式Web服務器技術的核心是HTTP(超文本傳送協(xié)議)引擎。HTTP是WWW上的協(xié)議,。HTTP協(xié)議使Web服務器和瀏覽器可以通過Web交換數據,。他是一種請求/響應協(xié)議,即服務器等待并響應客戶方請求。當用戶要瀏覽服務器上的一個網頁時,,一個HTTP請求就會從用戶的瀏覽器發(fā)到HTTP服務器,。服務器響應這個請求,把指定的網頁傳送回來,,用戶才看到了網頁,。HTTP協(xié)議不維護與客戶方的連接,他使用可靠的TCP連接,,通常采用TCP的80端口,。客戶/服務器傳輸過程可分為4個基本步驟:瀏覽器與服務器建立連接,;瀏覽器向服務器請求文檔,;服務器響應瀏覽器請求;斷開連接,。
服務器程序開始運行時,,主進程就創(chuàng)建一個套接字,并與主機地址綁定到一起,,隨后置為被動監(jiān)聽狀態(tài),,等待客戶端連接請求的到來,分別有xilsock_socket()創(chuàng)建一個套接字,,xilsock_bind()綁定,,xilsock_listen()監(jiān)聽,,xilsock_accept()接收來完成,。一旦接收一個連接,xilsock_acept()會返回一個新的套接字描述符,,主程序則開辟一個新的子程序來處理這個新的連接,。這樣系統(tǒng)可以同時接收多個客戶端的請求。
如圖2所示,,首先創(chuàng)建套接字,,將套接字與本地地址和端口綁定,并設置套接字處于監(jiān)聽狀態(tài),。Web服務器在接收一個連接請求后,,讀取用戶的請求,根據用戶的請求進行相應的處理,。
當請求位靜態(tài)文本時,,文檔直接提交輸出,當請求位動態(tài)文本時,,請求模塊自動調用腳本引擎,,將腳本替換位現場數據,再提交輸出,當請求為帶參數的執(zhí)行命令時,,請求解析器調用命令執(zhí)行模塊分析命令并控制監(jiān)控前端,。
這里并沒有采用通常的CGI(Common Gateway Interface)技術對請求信息進行處理,而是將活動頁面由加載進Web服務器的模塊處理,,因此處理速度比CGI程序更快,、更高效?;顒禹撁孢€可以處理表單,、HTTP會話和方便的訪問數據庫。因此,,活動頁面對動態(tài)Web頁面提供完整的服務器端支持,。
6 結 語
本文介紹的基于MicroBlaze的嵌入式Web服務器可以實現預期功能,用戶可以通過IE瀏覽器瀏覽存儲到FLASH芯片中的網頁,。
CPU本身是以軟核的方式實現,,其功能可根據需要進行定制,非常靈活,。EDK不但在硬件設計上提供了支持,,在軟件上也為設計者提供了較好的支持,提供了現成的網絡協(xié)議棧,。加上EDK提供的集成開發(fā)環(huán)境使得軟件開發(fā)更加便利,。采用這種方式的控制系統(tǒng)具有控制分散、開放性好,、使用簡單,、穩(wěn)定性好等優(yōu)點,而且可以通過瀏覽器進行遠程多點監(jiān)控和遠程支持,,是未來控制系統(tǒng)發(fā)展的一個趨勢,。