国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

無文件系統(tǒng)的嵌入式Web服務(wù)器設(shè)計

2012-03-14 06:12:36張鋒輝王祥清蘇守寶
關(guān)鍵詞:瀏覽器以太網(wǎng)嵌入式

張鋒輝,王祥清,蘇守寶

?

無文件系統(tǒng)的嵌入式Web服務(wù)器設(shè)計

*張鋒輝,王祥清,蘇守寶

(皖西學(xué)院信息工程學(xué)院,安徽,六安 237012)

針對嵌入式設(shè)備資源有限及嵌入式Web應(yīng)用于具體領(lǐng)域時工作流程固定的特點,提出了一種無文件系統(tǒng)的嵌入式Web服務(wù)器。在實時操作系統(tǒng)UC/OS-II的基礎(chǔ)上裁剪并移植了Lwip協(xié)議棧,在研究標準CGI程序的基礎(chǔ)上設(shè)計并實現(xiàn)了嵌入式CGI程序,成功的設(shè)計了無文件系統(tǒng)的Web服務(wù)器并實現(xiàn)了其監(jiān)測功能。

嵌入式網(wǎng)關(guān)(CGI);Web服務(wù)器;Lwip;UC/OS-II;文件系統(tǒng);ARM

隨著信息技術(shù)的迅猛發(fā)展,嵌入式設(shè)備與Internet技術(shù)的結(jié)合將成為信息時代的必然趨勢,將智能家電,工控節(jié)點等連接到網(wǎng)絡(luò)中已成為研究熱點[1]。網(wǎng)絡(luò)專家也預(yù)測將來在Internet傳輸中將有70%的信息來自嵌入式系統(tǒng)。

嵌入式設(shè)備的資源相對有限,很多都用于專用的地方,其工作流程較為固定,如在智能家居,一些工業(yè)控制等。目前在一些嵌入式Web服務(wù)器大多都建立在Linux操作系統(tǒng)之上,并且都使用了文件系統(tǒng)[2-4],但Linux需要的硬件配置較高,文件系統(tǒng)也需要Nand Flash作為硬件基礎(chǔ),這樣會增加服務(wù)器的成本。一些無操作系統(tǒng)的嵌入式Web服務(wù)器[5]雖然降低了硬件配置但在使用時可擴展性不高。

基于以上考慮在流程較為固定的地方使用嵌入式Web服務(wù)器,可以不通過文件系統(tǒng)而直接對設(shè)備進行監(jiān)控。本文提出了一種無文件系統(tǒng)的嵌入式Web服務(wù)器的設(shè)計方法并將其實現(xiàn)。用B/S架構(gòu)的Web服務(wù)器取代傳統(tǒng)的C/S架構(gòu),用戶只需要輸入檢測設(shè)備的Ip地址即可訪問與監(jiān)測設(shè)備的信息。

1 嵌入式web服務(wù)器系統(tǒng)的硬件軟件組成

系統(tǒng)采用NXP公司的LPC2294作為服務(wù)器的主控芯片,它集成了ARM7TDMI-S內(nèi)核,最高主頻可達60M,內(nèi)部有16K的靜態(tài)RAM和256K的Flash的程序存儲器,是一款使用于中低端用戶的工業(yè)控制級的微處理器。網(wǎng)絡(luò)芯片采用10/100M的以太網(wǎng)控制芯片DM9000E。調(diào)試接口采用標準的JATG接口,檢測設(shè)備與服務(wù)器通過RS232總線來連接。

本系統(tǒng)采用操作系統(tǒng)加以太網(wǎng)協(xié)議棧的方法進行設(shè)計。操作系統(tǒng)使用UCOS- II,它是一個源代碼公開,移植性較強的,占先式的多任務(wù)管理的實時性操作系統(tǒng)內(nèi)核,其實時性高可以和一些商業(yè)性操作系統(tǒng)相媲美,并且已經(jīng)在實際中得到了成功了運用[6]。UCOS- II只是一個操作系統(tǒng)內(nèi)核,可根據(jù)具體的芯片進行適當?shù)牟眉?,它已?jīng)被成功移植到多種架構(gòu)的處理器上,如流行的ARM,MIPS,PowerPc等。其他相關(guān)的外圍軟件如:網(wǎng)絡(luò)傳輸協(xié)議棧,文件系統(tǒng),圖形用戶界面,用戶可根據(jù)實際的需要進行適當?shù)倪x取,移植,編寫底層的驅(qū)動,將它們?nèi)诤统蓪嵱玫南到y(tǒng)。

該設(shè)計采用UC/OS-II2.76版本內(nèi)核,并針對平臺經(jīng)行了移植,移植了以太網(wǎng)協(xié)議棧Lwip,并編寫芯片DM9000E的驅(qū)動程序。在沒有移植文件系統(tǒng)的條件下成功運用HTTP協(xié)議設(shè)計了一個實用的嵌入式CGI程序,在此基礎(chǔ)上建立了Web服務(wù)器。在UC/OS-II系統(tǒng)下設(shè)計了串口程序?qū)囟葌鞲衅鞯倪M行測試并以網(wǎng)頁的形式傳送給瀏覽器。其系統(tǒng)的軟硬件結(jié)構(gòu)示意圖見圖1:

圖1 嵌入式Web服務(wù)器結(jié)構(gòu)示意圖

2 嵌入式以太網(wǎng)協(xié)議棧Lwip的裁剪,移植及驅(qū)動編寫

以太網(wǎng)協(xié)議棧采用的是Lwip。它是瑞士計算機科學(xué)院(Swedish Institute of Computer Science)的Adam Dunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。

Lwip除了實現(xiàn)TCP/IP協(xié)議的各個模塊(IP、ICMP、UDP、和 TCP),同時設(shè)計了許多支持模塊。這些支持模塊組成了操作系統(tǒng)模擬層、緩沖和存儲管理子系統(tǒng)、網(wǎng)絡(luò)接口函數(shù)和一些處理因特網(wǎng)校驗和的函數(shù)。Lwip使用的過程模型是:它把所有協(xié)議封裝到一個單一的過程中,從而與操作系統(tǒng)內(nèi)核分開。應(yīng)用程序可能也駐留在lwip處理過程中或者在單獨的過程中。 TCP/IP棧和應(yīng)用程序之間的通信可以通過函數(shù)調(diào)用實現(xiàn),也可以通過更為抽象的API。Lwip既可以移植到操作系統(tǒng)上,又可以在無操作系統(tǒng)的情況下獨立運行,Lwip的實現(xiàn)的重點是保持tcp/ip主要功能上減少對內(nèi)存的占用,其分層明確它運行時一般只需要幾十kb的RAM和40多kb的ROM,因此特別適合在低端的嵌入式設(shè)備中使用。

2.1 Lwip的裁剪和移植

在進行Lwip移植時,需要對操作系統(tǒng)的模擬層添加一定的代碼,操作系統(tǒng)模擬層(sys_arch)存在的主要目的是為了方便lwip的移植,它在底層操作系統(tǒng)和Lwip之間提供了一個接口,移植時候只需要改動這個接口即可。我們?yōu)椴僮飨到y(tǒng)模擬層提供了信號量和郵箱兩種進程間通訊方式,只保留了Lwip以太網(wǎng)通信的基本功能,去掉其中的ipv6部分及telnet,ppp服務(wù)等,所以給操作系統(tǒng)模擬層只提供了一個線程即可滿足設(shè)計需要。

Lwip和操作系統(tǒng)的接口主要是建立文件數(shù)據(jù)類型、編寫信號量操作函數(shù)、郵箱操作函數(shù)、建立一個新線程函數(shù)、實現(xiàn)sys_arch_timeouts()函數(shù)、實現(xiàn)臨界保護函數(shù)等。由于UC/OS-II為我們提供了大量的信號量的操作函數(shù),故只做少量的修改即可完成Lwip要求的信號量操作,在UC/OS-II中建立一個新任務(wù)也就是建立一個新線程,同時運用UCOS-II的開關(guān)中斷的方式實現(xiàn)了操作系統(tǒng)模擬層要求的臨界保護函數(shù),為了讓Lwip更有效的工作,我們利用UCOS-II提供給的消息隊列,可以讓多條消息投遞到這個消息隊列,我們建立了一個郵箱的單向鏈表,一個郵箱是一個消息隊列,可以允許多個消息投遞到此郵箱。提供了一個具有靜態(tài)存儲期的數(shù)組,為每一個線程提供一個固定的sys_timeouts結(jié)構(gòu),從而實現(xiàn)sys_arch_timeouts()函數(shù),從而完成與操作系統(tǒng)的通信工作。

Lwip和下層驅(qū)動程序的接口主要是建立初始化函數(shù)、入口函數(shù)以及初始化底層接口函數(shù)。建立LwipEntry.C程序,添加一些代碼建立入口函數(shù)的基本結(jié)構(gòu),添加__ilvInitLwIP()這個函數(shù)負責完成 LwIP對使用的內(nèi)存區(qū)、PBUF、PCB以及 OS 模擬層等各個方面最基本的初始化化工作。添加__ilvSetLwIP(),這個函數(shù)完成 LwIP 的初始配置工作,實現(xiàn)網(wǎng)絡(luò)驅(qū)動與 LwIP 的接口它會告訴 LwIP網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送出口,建立網(wǎng)絡(luò)數(shù)據(jù)的接收入口并實現(xiàn)接收入口與 LwIP 處理入口的對接。在原有的的ethernetif_init()添加一些初始化網(wǎng)絡(luò)驅(qū)動的函數(shù),從而完成與底層驅(qū)動程序的通信工作,至此我們已經(jīng)完成lwip的移植工作。

2.2 Lwip驅(qū)動程序的編寫

Lwip已經(jīng)寫好了與驅(qū)動程序接口的大體框架,只需要在框架上完成與底層硬件相關(guān)的部分即可,按照如圖三方式逐個添加與編寫底層驅(qū)動:

圖2 以太網(wǎng)驅(qū)動函數(shù)框架

圖3 接收函數(shù)框圖

按照框架需要完成三個函數(shù)的編寫網(wǎng)絡(luò)芯片的初始化函數(shù)、發(fā)送數(shù)據(jù)函數(shù)和接收數(shù)據(jù)函數(shù)。在網(wǎng)卡初始化函數(shù)low_level_init()里添加DM9000E_Init()。完成對LPC2294ARM芯片的IO屬性的設(shè)置,對DM9000E進行了復(fù)位,對內(nèi)部的寄存器進程設(shè)置包括MAC地址的寫入等完成了初始化工作。在鏈路層發(fā)送函數(shù)low_level_output()中編寫Send_Pact()它負責把數(shù)據(jù)從Lwip提供的數(shù)據(jù)結(jié)構(gòu) pbuf 中搬運到 DM9000E 發(fā)送緩沖區(qū)中完成向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的功能。在鏈路層接收函數(shù)low_level_iutput()中編寫Re_Pact()函數(shù)負責把數(shù)據(jù)從接收緩沖區(qū)轉(zhuǎn)移到pbuf中完成接受數(shù)據(jù)包向上傳遞的功能。三個函數(shù)的主要功能的流成圖如下:

圖4 送函數(shù)框圖

3 Web服務(wù)器的建立

隨著 Web技術(shù)的迅速發(fā)展 Brower/Serve(B/S)已成為流行的開發(fā)模式,這種方式基本上不用開發(fā)客戶端程序,只需對服務(wù)器端程序進行開發(fā)程序,在客戶端采用諸如IE 這樣的瀏覽器對服務(wù)器上的數(shù)據(jù)進行瀏覽或控制。(即可對工業(yè)現(xiàn)場或智能家具等進行遠程監(jiān)控??扇サ簦┚哂蟹奖阋子诓僮鞯葍?yōu)點?;谝陨咸攸c本設(shè)計采用B/S模式代替?zhèn)鹘y(tǒng)的C/S模式。

3.1 HTTP的實現(xiàn)

HTTP(HyperTextTransferProtocol,超文本傳輸協(xié)議)是在TCP/IP協(xié)議之上的基于請求/應(yīng)答模式的協(xié)議,是瀏覽器和Web服務(wù)器之間的應(yīng)用層協(xié)議,是通用的、無狀態(tài)的、面向?qū)ο蟮膮f(xié)議,它是從客戶機/服務(wù)器模型發(fā)展起來的??蛻襞c服務(wù)器連接時,首先向服務(wù)器提出請求,服務(wù)器根據(jù)客戶的請求完成處理并給出響應(yīng)。瀏覽器就是與Web服務(wù)器產(chǎn)生連接的客戶端程序,它的端口為TCP的80端口,瀏覽器與Web服務(wù)器之間遵循的就是HTTP協(xié)議[7]。

HTTP的復(fù)雜性與低速處理器資源的有限性構(gòu)成了對較為尖銳的矛盾,但可以從對Web服務(wù)器功能進行最小化定制的角度出發(fā),通過簡化HTTP的一些機制來緩解這種矛盾,在低速處理器中實現(xiàn)簡化的HTTP以實現(xiàn)功能最小化的Web服務(wù)器[8]。因此,可從以下兩個方面對其進行簡化:

(1)對請求數(shù)據(jù)報文的解析。服務(wù)器只接收GET請求方法,對不是GET請求的不予響應(yīng)。此處分別設(shè)置了兩種請求,一種是對頁面的請求,另一種是對數(shù)值的請求。

(2)對應(yīng)答數(shù)據(jù)報文的封裝。保留HTTP數(shù)據(jù)報文的協(xié)議版本號、應(yīng)答狀態(tài)碼、應(yīng)答字符等一些相對固定的東西。去掉服務(wù)器類型、內(nèi)容類型等一些不是必須的參數(shù)。把這些報文放到內(nèi)存中去,提高處理器處理讀取數(shù)據(jù)的效率。

3.2 無文件系統(tǒng)下的嵌入式CGI的實現(xiàn)

CGI(通用網(wǎng)關(guān)接口)定義了Web服務(wù)器與CGI腳本之間的接口標準。其主要功能是在 Web環(huán)境下從客戶端傳送一些信息給 Web服務(wù)器,Web服務(wù)器把接收到的有關(guān)信息放入環(huán)境變量,然后再去啟動所指定的CGI腳本以完成特定的工作,CGI腳本從環(huán)境變量中獲取相關(guān)信息來運行,最后以HTML格式輸出相應(yīng)的執(zhí)行結(jié)果返回給瀏覽器端.由于用戶能傳遞不同的參數(shù)給 CGI腳本,所以CGI技術(shù)使得瀏覽器和服務(wù)器之間具有交互性。

由于嵌入式資源相對有限,而標準的CGI需要文件系統(tǒng)等的支持,所以沒有文件系統(tǒng)的嵌入式CGI和標準的CGI有所區(qū)別,有一些自己的特點:

(1)沒有標準輸入 , CGI函數(shù)可以直接獲取到瀏覽器送來的信息。

(2)沒有標準輸出,CGI函數(shù)可以直接將封裝好的數(shù)據(jù)送回給瀏覽器。

(3)沒有環(huán)境變量, CGI和Web服務(wù)器在同一程序中實現(xiàn)用一些函數(shù)代替環(huán)境變量來交換信息。

根據(jù)以上特點,當用戶點擊網(wǎng)頁上的監(jiān)測溫度的按鈕時,服務(wù)器調(diào)用預(yù)先編寫好的CGI程序,通過串口采集溫度傳感器的信息并返回給CGI程序,通過Temp_Con()函數(shù)把數(shù)據(jù)轉(zhuǎn)化為攝氏溫度,加上內(nèi)存中的HTTP報文發(fā)送給客戶機,通過瀏覽器直接顯示給用戶。

在UC/OS-II下創(chuàng)建一個任務(wù)專門用來存放和發(fā)送一個固定的網(wǎng)頁,包括有各種控制按鈕用以發(fā)送信息,以及信息欄等待接收及更新信息,用戶可發(fā)送消息進行溫度的監(jiān)測。

Web_Receive()函數(shù)的主要功能是接收請求、讀請求、分析是否為要求監(jiān)測溫度的信息,服務(wù)器只接收GET請求方法,對不是GET請求的不予響應(yīng),如果是則調(diào)用Do_Temp()函數(shù)進行處理。

Do_Temp()調(diào)用串口程序監(jiān)測溫度傳感器的數(shù)據(jù),并調(diào)用Temp_Con()函數(shù)把溫度信息并轉(zhuǎn)化為攝氏溫度,存入預(yù)先設(shè)計好的Temp結(jié)構(gòu)體中。

Web_Return()函數(shù)根據(jù)測試的溫度信息,加上具有返回原網(wǎng)頁的按鈕語句并封裝了簡化的HTTP報文傳回測量的溫度給瀏覽器。

4 試驗測試

Web服務(wù)器的IP地址為192.168.0.174,測試終端PC機也位于同一網(wǎng)段內(nèi)IP地址為 192.168.0.176。在測試終端的IE地址欄中輸入嵌入式Web服務(wù)器的地址:http://192.168.0.174,點擊測試溫度按鈕。運行我們看到溫度為當前溫度如圖5,點擊“返回”則回到原測試界面。

圖5 當前溫度

5 結(jié)束語

無文件系統(tǒng)的嵌入式web服務(wù)器,節(jié)省了系統(tǒng)資源,提高了工作效率,簡化了開發(fā)的流程,調(diào)用函數(shù)直接對硬件進行操作,省去了中間環(huán)節(jié),可以根據(jù)不同的硬件變更相應(yīng)的操作。但是它的通用性不強,隨著硬件的變動要進行變更,另外安全性也是一個問題,目前只使用于安全系數(shù)要求不高的地方,但是對于資源相對較少的一些芯片有很高的使用價值。

[1] 彭少熙.家庭網(wǎng)絡(luò)中的嵌入式internet方案[J].電子應(yīng)用技術(shù), 2001,26(10):47-50.

[2] 張曦煌,柴志雷.嵌入式Web服務(wù)器中CGI的特點及實現(xiàn)小型微型計算機系統(tǒng)[J].小型微型計算機系統(tǒng) 2003(11):46-48.

[3] 孫輝,陸松年,楊樹堂.基于Linux和$3c2410的嵌入式Web Server的研究與實現(xiàn)[J].計算機應(yīng)用與軟件, 2007, 24(2):134-136.

[4] 姚洪智,鄭雪峰,曹磊.基于CGI接口實現(xiàn)嵌入式系統(tǒng)遠程控制[J].微機發(fā)展, 2004,14(9):7-10.

[5] 張曦煌,柴志雷.嵌入式Web在無操作系統(tǒng)支持環(huán)境下的設(shè)計及實現(xiàn)[J].計算機工程與應(yīng)用,2004,24(4):175-177.

[6] 任哲,潘樹林,房紅征 .嵌入式操作系統(tǒng)基礎(chǔ)uc/os-II和Linux[M].北京: 北京航空航天大學(xué)出版社,2006.

[7] 光軍.動態(tài)網(wǎng)站設(shè)計編程技法[M].北京: 北京航空航天大學(xué)出版社 ,2001.

[8] 司鳳山.單片機上簡單嵌入式Web服務(wù)器的設(shè)計與實現(xiàn)[J]. 計算機應(yīng)用與軟件,2008,25(5):179-181.

STUDY AND DESIGN OF EMBEDDED WEB SEVER WITHOUT FILE SYSTEM

*ZHANG Feng-hui,WANG Xiang-qing,SU Shou-bao

(College of Information Engineering West Anhui University, Lüan, Anhui 237012, China )

Existing embedded equipment with limited resource and fixed tasks, an embedded web sever without file system is offered. A Lwip protocol stack is edited and transplanted based on real time operating system of UC/OS-II .With the study of standard CGI, the program of embedded CGI is designed. We successful designed the web sever with the function of monitoring.

CGI; Web server; Lwip; UC/OS-II; file system; ARM

1674-8085(2012)03-0062-04

TP393.06

A

10.3969/j.issn.1674-8085.2012.03.013

2012-03-30;

2012-04-12

國家自然科學(xué)基金項目(61075049) ;安徽省高校優(yōu)秀青年人才基金項目(2011SQRL151)

*張鋒輝(1982-),男,河南洛陽人,助教,碩士,主要從事嵌入式系統(tǒng)及應(yīng)用研究(Email: zfhiwillwin@163.com);

王祥清(1982-),男,安徽六安人,助教,碩士,主要從事嵌入式系統(tǒng)及應(yīng)用研究(Email:94364574@qq.com);

蘇守寶(1965-),男,安徽六安人,教授,博士,主要從事群智能計算與嵌入式控制優(yōu)化等研究(Email:sushowbao@gmail.com).

猜你喜歡
瀏覽器以太網(wǎng)嵌入式
基于1500以太網(wǎng)養(yǎng)豬場的智能飼喂控制系統(tǒng)的設(shè)計與實現(xiàn)
反瀏覽器指紋追蹤
電子制作(2019年10期)2019-06-17 11:45:14
搭建基于Qt的嵌入式開發(fā)平臺
談實時以太網(wǎng)EtherCAT技術(shù)在變電站自動化中的應(yīng)用
電子制作(2017年24期)2017-02-02 07:14:44
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
環(huán)球瀏覽器
再見,那些年我們嘲笑過的IE瀏覽器
一種90W高功率以太網(wǎng)供電系統(tǒng)的設(shè)計
淺談EPON與工業(yè)以太網(wǎng)在貴遵高速公路中的應(yīng)用
Altera加入嵌入式視覺聯(lián)盟
寿光市| 闵行区| 南安市| 大埔县| 乌拉特后旗| 重庆市| 成武县| 本溪| 平南县| 乌兰县| 合肥市| 百色市| 白沙| 辽阳市| 麻城市| 柳江县| 昭觉县| 新津县| 合山市| 乐至县| 茌平县| 鄄城县| 仙居县| 容城县| 柞水县| 武安市| 雷波县| 江达县| 鄱阳县| 温泉县| 项城市| 大同县| 绵阳市| 长岭县| 开阳县| 右玉县| 通许县| 三台县| 乐至县| 湘阴县| 福州市|