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