在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 通用嵌入式Web服務(wù)器模塊的設(shè)計與實現(xiàn)

            通用嵌入式Web服務(wù)器模塊的設(shè)計與實現(xiàn)

            作者: 時間:2010-08-09 來源:網(wǎng)絡(luò) 收藏

            1 引言

            從20世紀(jì)90年代中期開始, Internet以前所未有的驚人速度在全球蔓延,目前,幾乎覆蓋到了地球的每一個角落,成為計算機(jī)技術(shù)中的一個發(fā)展亮點;與此同時,嵌入式技術(shù)在最近十幾年里也得到了飛速發(fā)展,被廣泛應(yīng)用于消費電子、通信網(wǎng)絡(luò)、工業(yè)控制、汽車電子、醫(yī)療儀器、信息家電、航空航天、軍事國防等眾多領(lǐng)域。Internet與嵌入式技術(shù)相結(jié)合的產(chǎn)物———[1],是一個很有發(fā)展前景的研究方向,它將極大拓展嵌入式設(shè)備的應(yīng)用范圍,使嵌入式設(shè)備具有遠(yuǎn)程監(jiān)控功能,而且可以使用通用PC的瀏覽器作為用戶界面,操作簡便,符合用戶的使用習(xí)慣。

            2 系統(tǒng)結(jié)構(gòu)與工作原理

            系統(tǒng)采用當(dāng)前流行的B/S結(jié)構(gòu),這種結(jié)構(gòu)是隨著Internet技術(shù)的發(fā)展,對傳統(tǒng)C/S結(jié)構(gòu)的擴(kuò)展和改造。實質(zhì)上B/S結(jié)構(gòu)是一種特殊的C/S結(jié)構(gòu),所不同的是,在B/S結(jié)構(gòu)中,系統(tǒng)主要功能都在服務(wù)器端實現(xiàn),瀏覽器是客戶端,提供用戶接口,將用戶的請求傳遞到服務(wù)器,并將服務(wù)器的響應(yīng)展現(xiàn)給用戶。系統(tǒng)結(jié)構(gòu)如圖1所示。


            1.jpg

            分析嵌入式系統(tǒng)的具體情況,發(fā)現(xiàn)對于一般的嵌入式系統(tǒng),基本的功能需求大體上分為兩大類,可以用兩個字來概括“監(jiān)控”?!氨O(jiān)”即監(jiān)測,是數(shù)據(jù)采集和查看的過程,數(shù)據(jù)流的方向是從嵌入式系統(tǒng)到瀏覽器或上位機(jī);“控”即控制,如設(shè)定工作參數(shù)、遠(yuǎn)程打開關(guān)閉現(xiàn)場的設(shè)備等,控制流的方向是從上位機(jī)或瀏覽器到嵌入式系統(tǒng)的。總而言之,就是要實現(xiàn)信息(上行的數(shù)據(jù)流和下行的控制流)的雙向流動。

            (1)嵌入式———“監(jiān)”功能的實現(xiàn)。對于上行的數(shù)據(jù)流,通過嵌入式技術(shù)(ESSI)來實現(xiàn)。(SSI)[2]是在普通靜態(tài)HTML語言中嵌入SSI指令,以便將文本、圖形或應(yīng)用程序信息包含到網(wǎng)頁中。例如,可以使用SSI包含時間/日期戳、版權(quán)聲明等。嵌入式服務(wù)器端包含是對服務(wù)器端包含技術(shù)的改造和完善,使其適應(yīng)于嵌入式系統(tǒng)的軟硬件環(huán)境。在本系統(tǒng)中,自定義了一條ESSI指令“DATA”,用來實現(xiàn)動態(tài)信息的實時顯示,該指令的語法如下: DATA var = state func = Get-State>/DATA>,該指令與標(biāo)準(zhǔn)的HTML[3]標(biāo)記兼容,其屬性有兩個,分別為var和func, var表示設(shè)備的狀態(tài)名稱,一個設(shè)備可以定義多個狀態(tài)名; func管理接口函數(shù),
            用來獲得相應(yīng)設(shè)備的狀態(tài)信息,原型為uint8* func( )。嵌入式服務(wù)器端包含技術(shù)的運行過程如圖2所示。

            (2)嵌入式———“控”功能的實現(xiàn)。對于下行的控制流,通過嵌入式(ECGI)[4]來實現(xiàn),如圖2所示。在需要向嵌入式設(shè)備下達(dá)控制命令的情況下,借助表單的POST方法[5, 6]向服務(wù)器傳遞數(shù)據(jù),表單的語法格式如下:

            5.jpg

            FORM =“form”SPATTRIBUTES“>”a setof stand-ardHTML elements>“/form>”
            ATTRIBUTES =* (ATTRIBUTE SP)ATTRIBUTE =ATTRIBUTENAME“=”TOKEN
            ATTRIBUTENAME = name |methodTOKEN = 1* anyCHAR exceptCTLs or separators>
            SP = US-ASCII SP, space (32)>

            CHAR =anyUS-ASCII character (octets 0 - 127)>
            CTL = anyUS-ASCII control character(octets 0 - 31) and DEL (127)>

            表單的name屬性指定了管理接口函數(shù)名,此函數(shù)用來處理表單數(shù)據(jù),原型為void TestForm(uint8*
            content), content是瀏覽器傳送過來的參數(shù);表單的另一個屬性method指定了瀏覽器向服務(wù)器傳送數(shù)據(jù)的方式。為進(jìn)一步闡述ECGI的工作原理,舉例如下:

            form name=“TestForm”method=“POST”>
            p>TestEmbedded Common Gateway Interface /p>
            p>input type=“text”name=“var1”>/p>
            p>input type=“text”name=“var2”>/p>
            p>input type=“text”name=“var3”>/p>
            p>input type=“submit”
            name=“Go”value=“OK”>/p>
            /form>

            包含有上述表單的HTML文件傳送到瀏覽器之后,網(wǎng)頁上出現(xiàn)三個編輯框和一個submit按鈕,用戶在編輯框中輸入?yún)?shù),點擊submit按鈕后,瀏覽器向Web服務(wù)器傳送以下內(nèi)容:

            var1=value1var2=value2var3=value3Go=OK,

            其中, value1、value2、value3為用戶輸入的參數(shù),服務(wù)器接收到以上參數(shù)后,便調(diào)用表單的name屬性指定的管理接口函數(shù),從而實現(xiàn)對嵌入式設(shè)備的控制。

            3 硬件系統(tǒng)設(shè)計

            本系統(tǒng)的主要功能是監(jiān)測現(xiàn)場的設(shè)備狀態(tài),及時將監(jiān)測到的狀態(tài)數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上;同時接收來自用戶的控制信息,利用這些控制信息準(zhǔn)確地控制設(shè)備工作。因此,在硬件上,需包含以下幾個模塊:
            嵌入式處理器、網(wǎng)絡(luò)接口芯片和有關(guān)I/O接口。

            3. 1 硬件原理框圖

            系統(tǒng)的硬件原理框圖如圖3所示,嵌入式處理器LPC2292處于中心位置,設(shè)備的狀態(tài)數(shù)據(jù)經(jīng)過處理器打包后,經(jīng)由RTL8019AS發(fā)布到網(wǎng)絡(luò)上,供用戶瀏覽,用戶的控制命令經(jīng)過RTL8019AS傳遞到處理器LPC2292,再由處理器控制相應(yīng)的設(shè)備執(zhí)行相應(yīng)的控制命令。

            17.jpg

            3. 2 嵌入式處理器

            嵌入式處理器采用了Philips公司的基于ARM7TDMI內(nèi)核的處理器LPC2292,該處理器具有16 kB片內(nèi)靜態(tài)RAM和256 kB片內(nèi)Flash程序存儲器;可以通過片內(nèi)boot裝載程序?qū)崿F(xiàn)在系統(tǒng)編程(ISP)和在應(yīng)用編程(IAP),編程速度快, 512字節(jié)行編程時間為1ms,單扇區(qū)或整片擦除時間為400ms;同時還內(nèi)置豐富的外設(shè)接口,如:A/D轉(zhuǎn)換器、CAN控制器、UART接口、I2C接口、SPI接口、定時器、RTC實時時鐘和看門狗等,極大的簡化和方便了應(yīng)用系統(tǒng)的設(shè)計,提高了系統(tǒng)的可靠性[7]。

            3. 3 網(wǎng)絡(luò)接口芯片

            網(wǎng)絡(luò)接口芯片采用Realtek公司的RTL8019AS,它是一種高度集成的以太網(wǎng)控制芯片,能簡單的實現(xiàn)Plug and Play并兼容NE2000、掉電等特性。同時還支持全雙工模式,能夠?qū)崿F(xiàn)網(wǎng)絡(luò)數(shù)據(jù)的同時發(fā)送和接收。RTL8019AS芯片內(nèi)部集成了DMA控制器、ISA總線控制器和16K SRAM、網(wǎng)絡(luò)PHY收發(fā)器。用戶可以通過DMA方式把需要發(fā)送的數(shù)據(jù)寫入SRAM中,讓芯片自動將數(shù)據(jù)發(fā)送出去;而芯片在接收到數(shù)據(jù)后,用戶也可以通過DMA方式將其讀出。

            3. 4 其它模塊

            RS232電路有兩個作用,首先可以用作在系統(tǒng)編程(ISP),方便了LPC2292中軟件的升級和調(diào)試,提高了效率;其次,在系統(tǒng)運行時,充當(dāng)與外界通訊的一個通道。I2C和CAN電路可以用于擴(kuò)展外圍設(shè)備,完成系統(tǒng)在工業(yè)現(xiàn)場的控制任務(wù)和數(shù)據(jù)采集任務(wù)等。

            4 軟件系統(tǒng)設(shè)計

            該系統(tǒng)的軟件主要由以下幾個部分組成:嵌入式操作系統(tǒng)、嵌入式TCP/IP協(xié)議棧、。嵌入式操作系統(tǒng)是整個系統(tǒng)的基礎(chǔ),對整個系統(tǒng)軟硬件資源進(jìn)行統(tǒng)一協(xié)調(diào)、指揮和控制[8]。嵌入式TCP/IP協(xié)議棧是網(wǎng)絡(luò)通訊的基礎(chǔ),負(fù)責(zé)收發(fā)網(wǎng)絡(luò)上的數(shù)據(jù)包,對于從網(wǎng)絡(luò)上接收到的數(shù)據(jù)包,協(xié)議棧對其解析,分離出有效載荷交由應(yīng)用層處理;對應(yīng)用層向網(wǎng)絡(luò)上發(fā)送的數(shù)據(jù)包,協(xié)議棧按照相關(guān)協(xié)議的要求加上相應(yīng)的協(xié)議頭,然后發(fā)送到網(wǎng)絡(luò)上。是本系統(tǒng)的核心,實現(xiàn)了HTTP協(xié)議中的基本功能,能夠與通用的Web瀏覽器通信,并且提供開放的應(yīng)用程序編程接口API,方便的系統(tǒng)軟件資源的重用。

            4. 1 嵌入式操作系統(tǒng)

            為了滿足多任務(wù)和實時性的要求,本系統(tǒng)移植了嵌入式多任務(wù)實時操作系統(tǒng)μC/OS-II,并針對系統(tǒng)的具體情況和相應(yīng)軟硬件資源的情況,做了適當(dāng)?shù)牟眉艉托薷?。μC/OS-II是由Jean J. Labrosse在1999年推出的,在2000年得到了美國聯(lián)邦航空管理局對于商用飛機(jī)的、符合RTCA DO-178B標(biāo)準(zhǔn)的認(rèn)證,從而證明μC/OS-II具有足夠的穩(wěn)定性和安全性。μC/OS-II是開放源代碼的,本系統(tǒng)在設(shè)計時使用的是μC/OS-IIV2. 52版本,為了將其移植到ARM7TDMI平臺上,主要在以下方面作了修改:進(jìn)出臨界段的宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()、堆棧增長方式、任務(wù)切換等[9]。

            4. 2 嵌入式TCP/IP協(xié)議棧

            為了搭建一個Web服務(wù)器平臺,網(wǎng)絡(luò)協(xié)議棧是必不可少的。TCP/IP協(xié)議是目前廣泛應(yīng)用的網(wǎng)絡(luò)協(xié)議棧,并且成了事實上的國際標(biāo)準(zhǔn)。本系統(tǒng)設(shè)計并實現(xiàn)了針對嵌入式系統(tǒng)的簡易TCP/IP協(xié)議棧,該協(xié)議棧利用μC/OS-II實時操作系統(tǒng)的信號機(jī)制來實現(xiàn)多任務(wù)和可重入的特性,并且完全使用ANSIC進(jìn)行編寫,在設(shè)計實現(xiàn)時充分考慮了重用性和可移植性,可以像μC/OS-II那樣支持多種CPU。

            4. 3 嵌入式W eb服務(wù)器

            在整個軟件體系中,嵌入式Web服務(wù)器處于最上層,在它之下的是上述的嵌入式操作系統(tǒng)和嵌入式TCP/IP協(xié)議棧。嵌入式Web服務(wù)器除了實現(xiàn)靜態(tài)文檔以外,還利用嵌入式服務(wù)器端包含(ESSI)技術(shù)實現(xiàn)了動態(tài)文檔,從而支持實時顯示系統(tǒng)的工作狀態(tài);此外,通過嵌入式(ECGI)[4]技術(shù)實現(xiàn)了瀏覽器端數(shù)據(jù)向服務(wù)器的傳遞,從而為對系統(tǒng)的控制提供了數(shù)據(jù)通道。

            4. 3. 1 嵌入式Web服務(wù)器層次模型

            如圖4所示,嵌入式Web服務(wù)器包含四個層次,分別為套接字層、協(xié)議解析層、功能模塊層和用戶定義層。套接字層負(fù)責(zé)本系統(tǒng)與網(wǎng)絡(luò)上的數(shù)據(jù)收發(fā);協(xié)議解析層負(fù)責(zé)解析HTTP協(xié)議,從中獲取有效數(shù)據(jù)或按照HTTP協(xié)議要求,生成HTTP協(xié)議報文;功能模塊層有三個部分,分別是嵌入式文件系統(tǒng)(EFS)、嵌入式服務(wù)器端包含(ESSI)、嵌入式通用網(wǎng)關(guān)接口(ECGI);用戶定義層的三個部分由用戶(開發(fā)人員)自定義,從而在不改變其他模塊的情況下,增加、減少或修改系統(tǒng)的功能,使得系統(tǒng)具有二次開發(fā)功能。

            19.jpg

            4. 3. 2 嵌入式文件系統(tǒng)

            為了方便Web服務(wù)器的實現(xiàn),設(shè)計并實現(xiàn)了一個嵌入式文件系統(tǒng)[10-12]用來存儲網(wǎng)頁。此文件系統(tǒng)結(jié)構(gòu)簡潔、效率高,所有文件被集合成一個順序結(jié)構(gòu),文件系統(tǒng)中每個文件包含一下幾個域:HEAD,文件報頭,兩個字節(jié),標(biāo)記一個文件的開始(0xFA, 0xF3);NAME,文件名,長度不定,以NULL結(jié)尾; SIZE,文件長度,四個字節(jié),指示文件長度(以字節(jié)為單位);FILE,文件內(nèi)容,長度由SIZE指定。

            為了將多個文件(包括網(wǎng)頁文件、圖片文件等)轉(zhuǎn)化為嵌入式文件系統(tǒng)所需要的可編譯格式,在PC上開發(fā)了一個工具軟件ConvertFile,其功能是把一個指定目錄下的所有文件轉(zhuǎn)換成一個filedata. c文件,從而加快了后續(xù)程序的開發(fā)。

            4. 3. 3 用戶定義層

            為了方便更改系統(tǒng)功能,提供二次開發(fā)能力,系統(tǒng)引入了用戶定義層。該層為用戶開放了系統(tǒng)的編程接口,主要有三個方面:

            (1)文件系統(tǒng)構(gòu)造。當(dāng)用戶需要更改Web服務(wù)器的網(wǎng)頁時,只需在PC上用任何一種網(wǎng)頁設(shè)計工具設(shè)計好網(wǎng)頁,然后用ConverFile工具轉(zhuǎn)化稱filedata. c,即完成了文件系統(tǒng)的設(shè)計。

            (2)ESSI變量定義。如需在瀏覽器上顯示設(shè)備的工作狀態(tài)等信息,可為每個狀態(tài)定義一個變量,并綁定一個能夠返回該狀態(tài)值的函數(shù)即可。

            (3)ECGI句柄定義。為了在服務(wù)器端獲得用戶的命令信息,需要為每一個命令定義一個虛擬網(wǎng)址(此網(wǎng)址并不對應(yīng)一個網(wǎng)頁文件),并綁定該網(wǎng)址到一個服務(wù)器端的函數(shù),該函數(shù)獲得瀏覽器端發(fā)送過來的參數(shù),執(zhí)行相應(yīng)的命令。

            21.jpg

            23.jpg

            5 實驗結(jié)果分析

            為了驗證方案的可行性和實用性,在上述的軟硬件平臺的基礎(chǔ)上,搭建了一個測試環(huán)境:在ARM處理器上外接八個LED指示燈,通過嵌入式Web服務(wù)器顯示并控制每一個LED指示燈的亮和滅。系統(tǒng)測試的網(wǎng)絡(luò)環(huán)境如圖5所示,該網(wǎng)絡(luò)由兩個網(wǎng)段組成,用一臺路由器連接,網(wǎng)段一的地址為172. 18. 136. 0/24,段內(nèi)連接終端1和嵌入式設(shè)備,網(wǎng)段二的地址為172.18. 135. 0/24,段內(nèi)連接終端2和終端3,具體的地址分配如圖5所示。嵌入式Web服務(wù)器運行在IP地址為172. 18. 136. 8的嵌入式設(shè)備上,測試結(jié)果如圖6。結(jié)果表明,無論是在同一網(wǎng)段內(nèi)的終端1上訪問嵌入式Web服務(wù)器,還是在不同網(wǎng)段的終端2和終端3上訪問嵌入式We服務(wù)器,系統(tǒng)都可以正常、穩(wěn)定地運行,并實現(xiàn)對嵌入式設(shè)備的監(jiān)控功能。

            6 結(jié)束語

            引入嵌入式Web服務(wù)器,采用B/S方式對嵌入式設(shè)備進(jìn)行遠(yuǎn)程監(jiān)控,已逐漸成為一種趨勢,極大的方便了系統(tǒng)的使用和維護(hù),此方式以友好的用戶界面和簡單的操作方法贏得了越來越多的用戶的支持。以上設(shè)計并實現(xiàn)的通用嵌入式Web服務(wù)器模塊,可移植到多種ARM7系列的處理器上,采用此模塊可簡化系統(tǒng)的設(shè)計,加快開發(fā)速度,具有一定的應(yīng)用前景。



            評論


            相關(guān)推薦

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

            關(guān)閉