1 引言
嵌入式系統(tǒng)是以應(yīng)用為中心、以計算機技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機系統(tǒng),是計算機技術(shù)、通信技術(shù)、半導(dǎo)體技術(shù)、微電子技術(shù)、語音圖像數(shù)據(jù)傳輸技術(shù)等先進技術(shù)和具體應(yīng)用對象相結(jié)合后的更新?lián)Q代產(chǎn)品,具有可靠性高,成本低,體積小,功耗少的特點,可廣泛應(yīng)用于家電、工業(yè)、通信、國防等領(lǐng)域。FPGA(Field Programmable Gate Array,現(xiàn)場可編程門陣列)是電子設(shè)計領(lǐng)域中最具活力和發(fā)展前途的一項技術(shù),F(xiàn)PGA能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡單的74電路,都可以用它來實現(xiàn),F(xiàn)PGA在嵌入式系統(tǒng)中的應(yīng)用越來越廣泛。隨著Internet技術(shù)應(yīng)用到各種嵌入式系統(tǒng)中的不斷發(fā)展,網(wǎng)絡(luò)化的嵌入式系統(tǒng)的研究和應(yīng)用也倍受關(guān)注。B/S(Brower/Server)模式現(xiàn)在已經(jīng)成為流行的開發(fā)模式,B/S訪問模式是WEB Server和Browser之間的直接訪問,客戶和服務(wù)器間的中間節(jié)點不對HTTP請求及響應(yīng)做任何操作,只需在客戶端采用如IE這樣的瀏覽器對服務(wù)器上的數(shù)據(jù)進行瀏覽,不用開發(fā)客戶端程序。采用B/S結(jié)構(gòu)具有分布性特點,可以隨時隨地進行業(yè)務(wù)處理;系統(tǒng)維護或升級只在服務(wù)器端,對客戶端無須進行改動,只需要改變服務(wù)器端網(wǎng)頁,即可實現(xiàn)所有用戶的同步更新,易于維護和升級;開發(fā)簡單,共享性強。因此,研究在FPGA上實現(xiàn)嵌入式Web服務(wù)器(Embedded Web Server, EWS)很有必要。
2 WEB相關(guān)技術(shù)
Web全稱為World Wide Web,縮寫為WWW,它通過HTTP協(xié)議以及超文本(Hypertext)技術(shù)將各種各樣的信息資源組織在一起形成一個巨大的多媒體信息網(wǎng)。Web系統(tǒng)的工作過程大致可以歸納為以下幾個步驟:
① 用戶啟動瀏覽器,并在瀏覽器中指定一個 URL,瀏覽器向該URL所指向的Web服務(wù)器發(fā)出請求。
② Web服務(wù)器接到請求后,解析請求,如果URL所指向的是普通的HTML文檔,Web服務(wù)器直接將它送給瀏覽器。HTML文檔中可能包含有java、javaScript、ActiveX、VBS等編寫的小應(yīng)用程序,服務(wù)器也將其隨HTML一起傳送到瀏覽器,并在瀏覽器所在的機器上運行。
③ 如果HTML文檔中嵌有CGI程序,Web服務(wù)器就運行CGI,并將結(jié)果以HTML格式傳送至瀏覽器。
2.1 HTTP
HTTP(超文本傳輸協(xié)議)是Web服務(wù)器用來與瀏覽器通信的協(xié)議,HTTP規(guī)定了發(fā)送和處理請求的標(biāo)準(zhǔn)方式,規(guī)定了瀏覽器和服務(wù)器之間傳輸?shù)南⒏袷郊案鞣N控制信息,從而定義了所有Web通信的基本框架。它工作于網(wǎng)絡(luò)應(yīng)用層,HTTP協(xié)議的詳細說明可以在網(wǎng)上查閱RFC2518、RFC2616等文檔。HTTP 協(xié)議老的標(biāo)準(zhǔn)是HTTP/1.0,目前最通用的標(biāo)準(zhǔn)是HTTP/1.1。HTTP/1.1是在HTTP/1.0基礎(chǔ)上的升級,增加了一些功能,全面兼容HTTP/1.0,目前的Web服務(wù)器絕大多數(shù)都采用了HTTP/1.1。基于HTTP協(xié)議的B/S模式的信息交換分四個過程,建立連接、發(fā)送請求信息、發(fā)送響應(yīng)信息和關(guān)閉連接。HTTP請求消息的格式為:請求消息=請求行(通用信息|請求頭|實體頭)CRLF[實體內(nèi)容]。HTTP的響應(yīng)消息格式為:響應(yīng)消息=狀態(tài)行(通用信息頭|響應(yīng)頭|實體頭)CRLF〔實體內(nèi)容〕。
2.2 超文本標(biāo)記語言HTML
HTML是一種超文本標(biāo)識語言,是構(gòu)成Web頁面的主要工具,它是一種用于因特網(wǎng)文檔的標(biāo)準(zhǔn)標(biāo)記語言,是由歐洲原子核研究委員會(CERN)創(chuàng)造出的一種新的計算機語言。HTML是用來格式化WWW頁面的一組規(guī)則,HTML文本是由HTML命令組成的描述型文本,HTML命令可以說明文字、圖形、動畫、聲音、表格、鏈接等等,HTML的連接能力可以使文本中的每一個詞或圖形連接到Internet中相同或不同位置的另一個文本或另一種媒體信息,用戶通過瀏覽器讀取HTML文本并得到相應(yīng)媒體表達的效果。
2.3 CGI原理
CGI(通用網(wǎng)關(guān)接口)是Web服務(wù)器與CGI腳本之間的接口標(biāo)準(zhǔn)。其主要功能是在Web環(huán)境下,從客戶端傳送一些信息給Web服務(wù)器,Web服務(wù)器把接收到的有關(guān)信息放入環(huán)境變量,然后再去啟動所指定的CGI腳本以完成特定的工作,CGI腳本從環(huán)境變量中獲取相關(guān)信息來運行,最后以HTML格式輸出相應(yīng)的執(zhí)行結(jié)果返回給瀏覽器端。由于用戶能傳遞不同的參數(shù)給CGI腳本,所以CGI技術(shù)使得瀏覽器和服務(wù)器之間具有交互性。
2.4嵌入式Web服務(wù)器
嵌入式Web服務(wù)器是指將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è)備[2,3]。
NIOS II嵌入式處理器是Altera公司于2004年6月推出的第二代用于可編程邏輯器件的可配置的軟核處理器,性能超過200 DMIPS。NIOS II采用了基于RISC架構(gòu)的32位指令集,能與用戶邏輯相結(jié)合,使用Altera 公司的Quartus Ⅱ軟件以及SOPC Builder 工具,可以將NIOS Ⅱ處理器嵌入到系統(tǒng)中,編程至Altera的FPGA中。處理器具有32位指令集,32位數(shù)據(jù)通道和可配置的指令以及數(shù)據(jù)緩沖。它特別為可編程邏輯進行了優(yōu)化設(shè)計,也為可編程單芯片系統(tǒng)(SoPC)設(shè)計了一套綜合解決方案。NIOS II處理器系列包括三種內(nèi)核:一種是高性能的內(nèi)核(NIOS II/f);一種是低成本內(nèi)核(NIOS II/e);一種是性能/成本折中的標(biāo)準(zhǔn)內(nèi)核(NIOS II/s),是前兩種的平衡。
NIOS II 處理器支持256 個具有固定或可變時鐘周期操作的定制指令;允許NIOS II設(shè)計人員利用擴展CPU指令集,最多達256 個用戶定義的CPU 指令,通過提升那些對時間敏感的應(yīng)用軟件的運行速度,來提高系統(tǒng)性能;基于JTAG邊界掃描測試的調(diào)試邏輯,支持硬件斷點,數(shù)據(jù)觸發(fā),以及片外和片內(nèi)的調(diào)試跟蹤;可配置外設(shè)達60 多個,提供種類繁多的配置選擇,包括以太網(wǎng)、USB、存儲控制器等;提供了Berkeley socket API支持IP、ICMP、UDP 和帶擁塞控制的TCP、RTT 固件及快速恢復(fù)/ 快速重傳;支持MicroC/OSⅡ RTOS提供源碼的操作系統(tǒng),支持航空設(shè)備RTCA DO2178B 標(biāo)準(zhǔn)的強制要求。
3 嵌入式WEB服務(wù)器的設(shè)計
3.1 硬件設(shè)計
系統(tǒng)的硬件結(jié)構(gòu)如圖1 所示。硬件系統(tǒng)的核心是構(gòu)建于Altera Cyclone中的NIOS II嵌入式軟核處理器。NIOS II采用標(biāo)準(zhǔn)內(nèi)核。通過以太網(wǎng)接口,建立與Internet的聯(lián)系。以太網(wǎng)接口采用DM9000A。
SOPC Builder組合設(shè)置如圖2所示。
3.2 軟件設(shè)計
嵌入式Web服務(wù)器和瀏覽器之間遵循HTTP協(xié)議,因此系統(tǒng)的軟件結(jié)構(gòu)如圖3所示。
HTTP協(xié)議的實現(xiàn)是關(guān)鍵。當(dāng)系統(tǒng)啟動后,WEB服務(wù)器監(jiān)聽80端口,接受瀏覽器的請求消息。得到請求消息后,系統(tǒng)根據(jù)HTTP的格式進行解碼。如果請求得到靜止的網(wǎng)頁文件,就到保存在FLASH中的文件系統(tǒng)中查找并處理相應(yīng)的請求。如果請求得到動態(tài)的網(wǎng)頁信息,執(zhí)行動態(tài)網(wǎng)頁生成程序,并把執(zhí)行的結(jié)果返回到瀏覽器端。由于FPGA上的資源有限,也因為嵌入式WEB的應(yīng)用系統(tǒng)不像PC機上的WEB服務(wù)器的要求那么高,所以動態(tài)網(wǎng)頁生成程序只需要完成必需的功能就可以了。為了方便系統(tǒng)對瀏覽器請求的解析,我們采用如下方式:靜態(tài)的網(wǎng)頁文件我們統(tǒng)一采用后綴為HTML的文件保存在Flash中,文件系統(tǒng)采用只讀的ZIP文件系統(tǒng);動態(tài)的網(wǎng)頁文件的請求我們采用后綴為JSP的格式。因此,當(dāng)解析請求為請求得到HTML格式的文件時,我們返回靜態(tài)的網(wǎng)頁文件;當(dāng)解析請求為請求得到JPS格式的文件時,我們把它請求的參數(shù)生成網(wǎng)頁文件,返回到瀏覽器端;如果不是請求以上兩種類型的文件,系統(tǒng)返回靜態(tài)的錯誤提示網(wǎng)頁文件。系統(tǒng)的流程如圖4所示。在系統(tǒng)的實現(xiàn)上,應(yīng)注意配置文件系統(tǒng),把靜態(tài)的網(wǎng)頁文件壓縮到ZIP文件包中,注意壓縮時壓縮模式選擇Store模式,否則會出錯。編譯后的程序下載到FPGA上,連接好網(wǎng)線,就可以測試了。實驗證明達到了預(yù)期的要求。
4 結(jié)束語
本文分析和介紹了嵌入式Web服務(wù)器技術(shù)的主要內(nèi)容,描述了NIOS II嵌入式軟核處理器技術(shù),提出了基于FPGA的嵌入式WEB服務(wù)器的實現(xiàn)方案。本系統(tǒng)在NIOS II嵌入式軟核處理器的基礎(chǔ)上,采用MicroC/OS-II實時操作系統(tǒng),移植LWIP協(xié)議棧,在TCP/IP協(xié)議的基礎(chǔ)上實現(xiàn)了HTTP協(xié)議,從而實現(xiàn)了FPGA芯片上的提供靜態(tài)和動態(tài)網(wǎng)頁功能的嵌入式WEB服務(wù)器,為基于嵌入式WEB的智能儀表、網(wǎng)絡(luò)測控和遠程監(jiān)控系統(tǒng)提供一個優(yōu)秀的通信平臺。
責(zé)任編輯:gt
評論