新聞中心

基于Linux的SoPC開發(fā)

作者: 時(shí)間:2011-05-28 來源:網(wǎng)絡(luò) 收藏

3.1 HTTP協(xié)議裁減

嵌入式Web服務(wù)器主要HTTP協(xié)議進(jìn)行設(shè)計(jì),而HTTP協(xié)議的實(shí)現(xiàn)又是TCP/IP協(xié)議棧的。在內(nèi)核中,由于已經(jīng)包含了TCP/IP協(xié)議棧的完整實(shí)現(xiàn),從而為嵌入式Web服務(wù)器的實(shí)現(xiàn)提供了很好的基礎(chǔ)。相對于在無操作系統(tǒng)環(huán)境的上實(shí)現(xiàn)Web服務(wù)器來說,系統(tǒng)的可以節(jié)省大量的工作。

HTTP協(xié)議是一個(gè)屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其采用簡捷、快速的方式,適用于分布式超媒體信息系統(tǒng)[4]。嵌入式Web服務(wù)器根據(jù)不同的需要,實(shí)現(xiàn)的功能也不同。相對于完整的Web服務(wù)器,它需要實(shí)現(xiàn)的功能要簡單得多[5]。本文的嵌入式Web服務(wù)器僅實(shí)現(xiàn)協(xié)議中最常用的部分??紤]到嵌入式系統(tǒng)的存儲(chǔ)空間和處理能力,對HTTP協(xié)議進(jìn)行了裁減。這不僅可以提高Web服務(wù)器的效率,也可以減少占用的空間,具有積極的意義。

當(dāng)客戶機(jī)與Web服務(wù)器進(jìn)行會(huì)話時(shí),客戶機(jī)首先通過SOCKET與服務(wù)器建立連接,連接之后便向服務(wù)器提出請求,請求信息包括希望返回的文件名和客戶機(jī)信息等??蛻魴C(jī)以請求頭(包括HTTP方法和頭字段[6])的形式將信息發(fā)送給服務(wù)器。HTTP方法常用的有GET、HEAD、POST,因此本文即采用GET、HEAD、POST三種方法。

HTTP頭字段包括general-header、request-header、response-header、entity-header四大類,而每一類中又定義了多個(gè)類型[6],其中的大部分都是不常用的,所以應(yīng)根據(jù)需要選定幾種類型。本文設(shè)計(jì)的服務(wù)器支持以下幾種頭類型:Date、Host、Server、Accept、Connection、Content-Type、Content-Length、Accept-Charset、 Accept-Language。

服務(wù)器收到一個(gè)請求,就會(huì)立刻解釋請求中所用到的方法,并開始處理,處理完成之后會(huì)發(fā)送應(yīng)答消息。應(yīng)答消息包含了狀態(tài)碼、一些頭字段以及實(shí)體信息(即客戶請求的服務(wù)器上的資源內(nèi)容),其中HTTP協(xié)議的狀態(tài)碼也有四大類[6]。這些狀態(tài)碼詳細(xì)說明了服務(wù)器的狀態(tài)、出錯(cuò)信息以及對用戶的指示。由于嵌入式Web服務(wù)器只需向用戶提供服務(wù),而無需向用戶反饋具體的狀態(tài),因此,本文實(shí)現(xiàn)中只保留特定的幾種錯(cuò)誤信息,而省略了大部分的狀態(tài)信息。

3.2 支持多進(jìn)程的嵌入式Web服務(wù)器的實(shí)現(xiàn)

本系統(tǒng)的設(shè)計(jì)對HTTP協(xié)議進(jìn)行了裁減,然后利用系統(tǒng)提供的進(jìn)程調(diào)度功能、網(wǎng)絡(luò)通信功能(包括SOCKET、TCP連接等),使用C語言編寫了一個(gè)支持多進(jìn)程的Web服務(wù)器。實(shí)現(xiàn)的Web服務(wù)器接收客戶端的請求,根據(jù)需要選擇發(fā)送文件通過串口和外部設(shè)備通信,并將外部設(shè)備返回的結(jié)果發(fā)送給客戶端。其功能描述如下:在指定的端口監(jiān)聽用戶的HTTP請求,對該請求進(jìn)行分析解釋并執(zhí)行相應(yīng)的操作;將用戶要求的內(nèi)容或者出錯(cuò)信息以HTTP應(yīng)答的方式返回給用戶。其中,用戶的請求分為CGI請求和非CGI請求,如果是CGI請求,則首先檢查用戶的權(quán)限和文件是否存在,然后新創(chuàng)建一個(gè)進(jìn)程,并在該子進(jìn)程中通過串口和外部設(shè)備通信,最后將串口返回的結(jié)果或者出錯(cuò)信息傳送給Web服務(wù)器返回給用戶;如果是非CGI請求,則只進(jìn)行權(quán)限和文件檢查,如果檢查通過則發(fā)送該文件,否則給出出錯(cuò)信息。軟件的工作流程如圖5所示。


本文給出了基于Linux的的方法,并實(shí)現(xiàn)了一個(gè)具體的應(yīng)用設(shè)計(jì)——嵌入式Web服務(wù)器。該設(shè)計(jì)快速、簡單,而且由于基于Linux操作系統(tǒng),從而保證了系統(tǒng)的穩(wěn)定性,同時(shí)因?yàn)槔昧讼到y(tǒng)的進(jìn)程調(diào)度功能,加快了信息的處理速度。和嵌入式Linux操作系統(tǒng)二者的結(jié)合,既滿足了嵌入式應(yīng)用按需定制、量體裁衣的需求,又能出穩(wěn)定而功能強(qiáng)大的嵌入式系統(tǒng)。這在嵌入式應(yīng)用日益復(fù)雜的背景下,具有很大意義和良好的應(yīng)用前景。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 3 下一頁

關(guān)鍵詞: 開發(fā) SoPC Linux 基于

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉