新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 可移植的嵌入式WEB服務器軟件設計

        可移植的嵌入式WEB服務器軟件設計

        作者: 時間:2012-03-26 來源:網絡 收藏

        這種結構下操作系統服務函數一般不會被直接調用,而是將其包裝到一個“操作系統適配層”的庫中,把核心功能模塊與操作系統隔離開來,無論是更改底層的操作系統,還是上層的應用界面,核心功能模塊都可以做到最大限度的源代碼級兼容,當整個軟件需要移植到其他操作系統時,只要簡單地移植操作系統適配層,即可保證核心模塊能夠正確的在新環境下運行,實現項目之間核心模塊的代碼共享,并共同享有測試、升級和維護工作的結果。這種基于中間件的設計技術可以廣泛的應用在協議和事務軟件的編寫過程中,歸納起來作為操作系統適配層的中間件應該包括以下幾個方面的功能:

        1)任務管理,任務管理是操作系統的基本功能,包括創建任務、讀取和設置任務的優先級、修改和檢查任務的狀態;

        2)內存管理,嵌入式軟件由于硬件的特殊性,使得內存的使用不能象Windows程序那樣隨意申請,同時也很難申請到大塊連續內存,中間件內存管理實現的功能就是將一些小的內存塊預先分配下來,作為一個內存池供應用程序使用,這些小的內存塊可以進行拼接,最終形成應用程序需要的緩沖區;

        3)消息管理,主要作用是為不同操作系統的消息處理提供統一的外部接口,應用程序只需要按照中間件規定的模式進行消息收發即可;

        4)任務間同步,中間件應為多任務環境提供同步機制,可以采用底層操作系統的互斥量、信號量等;

        5)定時管理,通過操作系統提供的單一定時器,實現應用程序的一些定時需求;

        6)中斷管理,屏蔽不同硬件平臺對中斷處理上的差異;

        7)網絡接口管理,屏蔽不同系統之間網絡操作的差異;

        8)其他功能: 包括總線數據讀寫、錯誤處理和可利用資源管理等;

        2、基于中間件的嵌入式軟件

        在工業監控應用領域,選擇構架的監控系統是非適合的,因為它不僅可以實現監控的目的,而且可以統一操作維護界面。在這種系統中,需要使用運行在現場的設備作為,在控制室則通過瀏覽器來查看現場的情況,還可以通過WEB服務器的CGI等接口,對現場設備進行人為的控制。

        WEB服務器采用HTTP協議與客戶端瀏覽器進行信息交互,通過服務器應用程序可以實現對遠程設備的訪問和控制。HTTP是應用層的協議,它于1990年提出,經過多年的使用與發展,得到了不斷地完善和發展。

        HTTP協議是基于請求/響應模式的,客戶機與服務器建立連接后,發送一個請求給服務器,請求的格式為:統一資源標識符、協議版本號,后邊是 MIME信息(包括請求修飾符、客戶機信息和可能的內容)。服務器接收到請求后,會給予相應的響應信息,其格式為一個狀態行(包括信息的協議版本號、一個成功或錯誤的代碼),后邊是MIME信息(包括服務器信息、實體信息和可能的內容)。

        在WEB服務器中,客戶與服務器是一個相對的概念,只存在于一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為服務器。WEB服務器運行時,一直在TCP80端口(WEB服務器的缺省端口)監聽,等待連接的出現。下面是WEB服務器通過HTTP協議進行信息交換的步驟:

        1)建立連接:連接的建立是通過申請套接字實現的??蛻舸蜷_一個套接字并把它綁定在一個端口上,如果成功,就可以通過這個套接字進行數據收發了。

        2)發送請求:打開一個連接后,客戶機把請求消息送到服務器的監聽端口上,服務器讀取數據,并從接收數據中識別請求動作。HTTP/1.0 請求消息的典型格式為:

        請求消息 = 請求行(通用信息|請求頭|實體頭) CRLF[實體內容]

        請 求 行 = 方法 請求URL HTTP版本號 CRLF

        方 法 = GET|HEAD|POST|擴展方法

        URL = 協議名稱+宿主名+目錄與文件名

        如: GET http://192.168.1.1/index.htm HTTP/1.0

        3)發送響應:服務器在處理完客戶的請求之后,要向客戶機發送響應消息。HTTP/1.0的響應消息格式如下:

        響應消息 = 狀態行(通用信息頭|響應頭|實體頭) CRLF [實體內容]

        狀 態 行 = HTTP版本號 狀態碼 原因敘述

        狀態碼表示響應類型

        1××   保留

        2××   表示請求成功地接收

        3××   為完成請求,客戶需進一步細化請求

        4××   客戶錯誤

        5××   服務器錯誤

        4)關閉連接:通訊結束后,客戶和服務器雙方都可以通過關閉套接字來結束TCP/IP對話。

        在具體的嵌入式WEB服務器軟件中,除了受制于目標硬件有限的資源外,還有一個限制就是對文件系統的支持上,因為并不是所有的目標設備都會采用文件系統,唯一可以肯定的就是中一定會有非遺失性存儲器,如FLASH,這樣在設計嵌入式WEB服務器時,需要提供一種工具,將多個WEB網頁文件轉換成一個數組,并在WEB服務器中建立索引,當請求某個網頁文件時,通過這個索引來查找對應的文件數據,并發送出去。嵌入式WEB服務器軟件大致可以分為四個部分:通訊模塊、HTTP請求處理模塊、ROM文件系統、CGI接口模塊。下面是嵌入式WEB服務器軟件的模塊結構圖:



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 浮山县| 禄丰县| 白河县| 海口市| 兰考县| 屯昌县| 来凤县| 宁安市| 新余市| 乌兰浩特市| 惠东县| 长岛县| 高邮市| 四子王旗| 南川市| 长春市| 随州市| 曲阜市| 固阳县| 扎囊县| 灌南县| 武汉市| 巨鹿县| 义乌市| 长沙市| 泾阳县| 宁陕县| 襄垣县| 黄浦区| 淳安县| 南昌县| 廉江市| 申扎县| 万源市| 常德市| 长岛县| 和龙市| 孟连| 汝南县| 集贤县| 宜宾市|