基于MicroBlaze嵌入式Web服務(wù)器設(shè)計(jì)
5 軟件設(shè)計(jì)
本文引用地址:http://www.antipu.com.cn/article/267947.htm軟件設(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地址。

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_wrire()函數(shù)打開和創(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)求;斷開連接。
服務(wù)器程序開始運(yùn)行時(shí),主進(jìn)程就創(chuàng)建一個(gè)套接字,并與主機(jī)地址綁定到一起,隨后置為被動(dòng)監(jiān)聽狀態(tài),等待客戶端連接請(qǐng)求的到來(lái),分別有xilsock_socket()創(chuàng)建一個(gè)套接字,xilsock_bind()綁定,xilsock_listen()監(jiān)聽,xilsock_accept()接收來(lái)完成。一旦接收一個(gè)連接,xilsock_acept()會(huì)返回一個(gè)新的套接字描述符,主程序則開辟一個(gè)新的子程序來(lái)處理這個(gè)新的連接。這樣系統(tǒng)可以同時(shí)接收多個(gè)客戶端的請(qǐng)求。
如圖2所示,首先創(chuàng)建套接字,將套接字與本地地址和端口綁定,并設(shè)置套接字處于監(jiān)聽狀態(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)求解析器調(diào)用命令執(zhí)行模塊分析命令并控制監(jiān)控前端。
這里并沒有采用通常的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提供的集成開發(fā)環(huán)境使得軟件開發(fā)更加便利。采用這種方式的控制系統(tǒng)具有控制分散、開放性好、使用簡(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ì)。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
評(píng)論