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