新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MicroBlaze嵌入式Web服務器設計

        基于MicroBlaze嵌入式Web服務器設計

        作者: 時間:2015-01-09 來源:網絡 收藏

          5 軟件設計

        本文引用地址:http://www.104case.com/article/267947.htm

          軟件設計包括:操作系統移植、網絡協議棧設計、文件系統生成、應用級代碼編寫等部分。

          5.1 操作系統

          為了簡化設計,本文中的Web服務器采用單一線程,無需RTOS(實時操作系統)的支持。故采用EDK提供的僅支持單進程的standalone板支持包即可。

          5.2 協議棧

          系統采用的是EDK中包含針對的網絡協議棧,隱藏了低層硬件細節,以類似于Unix套接字的方式實現一個精簡的網絡協議棧Xilnet。他支持以下一些網絡協議:IP,ARP,ICMP,UDP,TCP。調用如下函數初始化棧以及MAC地址和IP地址。

          

         

          5.3 文件系統

          為了支持HTTP協議,一個文件系統是必不可少的。本設計使用EDK提供的xilmfs文件系統對網頁的靜態頁面和圖片進行組織和存儲。

          調用mfs_file_open()和mfs_file_wrire()函數打開和創建文件系統。考慮到有限的系統資源,文件存放在DDR SDRAM中。

          5.4 HTTP協議及其實現

          嵌入式Web服務器技術的核心是HTTP(超文本傳送協議)引擎。HTTP是WWW上的協議。HTTP協議使Web服務器和瀏覽器可以通過Web交換數據。他是一種請求/響應協議,即服務器等待并響應客戶方請求。當用戶要瀏覽服務器上的一個網頁時,一個HTTP請求就會從用戶的瀏覽器發到HTTP服務器。服務器響應這個請求,把指定的網頁傳送回來,用戶才看到了網頁。HTTP協議不維護與客戶方的連接,他使用可靠的TCP連接,通常采用TCP的80端口。客戶/服務器傳輸過程可分為4個基本步驟:瀏覽器與服務器建立連接;瀏覽器向服務器請求文檔;服務器響應瀏覽器請求;斷開連接。

          服務器程序開始運行時,主進程就創建一個套接字,并與主機地址綁定到一起,隨后置為被動監聽狀態,等待客戶端連接請求的到來,分別有xilsock_socket()創建一個套接字,xilsock_bind()綁定,xilsock_listen()監聽,xilsock_accept()接收來完成。一旦接收一個連接,xilsock_acept()會返回一個新的套接字描述符,主程序則開辟一個新的子程序來處理這個新的連接。這樣系統可以同時接收多個客戶端的請求。

          如圖2所示,首先創建套接字,將套接字與本地地址和端口綁定,并設置套接字處于監聽狀態。Web服務器在接收一個連接請求后,讀取用戶的請求,根據用戶的請求進行相應的處理。

          當請求位靜態文本時,文檔直接提交輸出,當請求位動態文本時,請求模塊自動調用腳本引擎,將腳本替換位現場數據,再提交輸出,當請求為帶參數的執行命令時,請求解析器調用命令執行模塊分析命令并控制監控前端。

          這里并沒有采用通常的CGI(Common Gateway Interface)技術對請求信息進行處理,而是將活動頁面由加載進Web服務器的模塊處理,因此處理速度比CGI程序更快、更高效。活動頁面還可以處理表單、HTTP會話和方便的訪問數據庫。因此,活動頁面對動態Web頁面提供完整的服務器端支持。

          

         

          6 結 語

          本文介紹的基于的嵌入式Web服務器可以實現預期功能,用戶可以通過IE瀏覽器瀏覽存儲到FLASH芯片中的網頁。

          CPU本身是以軟核的方式實現,其功能可根據需要進行定制,非常靈活。EDK不但在硬件設計上提供了支持,在軟件上也為設計者提供了較好的支持,提供了現成的網絡協議棧。加上EDK提供的集成開發環境使得軟件開發更加便利。采用這種方式的控制系統具有控制分散、開放性好、使用簡單、穩定性好等優點,而且可以通過瀏覽器進行遠程多點監控和遠程支持,是未來控制系統發展的一個趨勢。

        c語言相關文章:c語言教程



        上一頁 1 2 下一頁

        關鍵詞: MicroBlaze Xilinx FPGA

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 政和县| 兴宁市| 托克逊县| 同江市| 陈巴尔虎旗| 伽师县| 潼南县| 寻甸| 河曲县| 大丰市| 沭阳县| 贵溪市| 四会市| 兴宁市| 夏津县| 罗田县| 洞口县| 余干县| 辽宁省| 金溪县| 河南省| 游戏| 视频| 巴楚县| 阿克苏市| 宜兴市| 阿合奇县| 从江县| 贵溪市| 屯门区| 巩义市| 青海省| 沙洋县| 乃东县| 抚顺县| 仁化县| 荔浦县| 子洲县| 离岛区| 湘西| 博野县|