楊 虎,王衛(wèi)東
(江蘇科技大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 鎮(zhèn)江 212003)
隨著嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,嵌入式系統(tǒng)與Internet技術(shù)結(jié)合為嵌入式設(shè)備的網(wǎng)絡(luò)互連提供了一條有效的途徑。把嵌入式設(shè)備連接到網(wǎng)絡(luò)中,并實(shí)現(xiàn)Web Server功能,使用戶可以直接通過(guò)Web瀏覽器對(duì)現(xiàn)場(chǎng)的設(shè)備進(jìn)行遠(yuǎn)程監(jiān)控,這將大大方便用戶的操作。嵌入式Web Server是實(shí)現(xiàn)嵌入式系統(tǒng)通過(guò)Web方式與Internet互連的關(guān)鍵組成部分,研究嵌入式Web Server的原理及其實(shí)現(xiàn)對(duì)于網(wǎng)絡(luò)傳輸、遠(yuǎn)程監(jiān)控、信息家電等領(lǐng)域有很強(qiáng)的實(shí)際意義。
由于ARM9的開發(fā)板資源有限,不可能在開發(fā)板上運(yùn)行開發(fā)和調(diào)試工具,所以通過(guò)交叉編譯調(diào)試的方式進(jìn)行,采用宿主機(jī)+開發(fā)板的形式實(shí)現(xiàn)。宿主機(jī)即為運(yùn)行的PC機(jī),本系統(tǒng)采用了安裝了Linux的PC機(jī)作為宿主機(jī)。通過(guò)交叉編譯將開發(fā)板與宿主機(jī)連接、定位,得到可執(zhí)行文件并在開發(fā)板上運(yùn)行。用戶通過(guò)瀏覽器發(fā)送請(qǐng)求通過(guò)TCP/IP協(xié)議經(jīng)Internet發(fā)送到服務(wù)器,服務(wù)器經(jīng)過(guò)判斷請(qǐng)求合法后,根據(jù)請(qǐng)求將數(shù)據(jù)發(fā)出去,并在用戶的瀏覽器中顯示。
結(jié)構(gòu)框架圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)框架圖Fig.1 System structure frame diagram
本系統(tǒng)所采用的ARM開發(fā)板采用的是S3C2440A的ARM9處理器,主頻高達(dá)400 MHz,最高可達(dá)533 MHz。其有成熟的電路及元器件,性價(jià)比較高。Linux嵌入式操作系統(tǒng)比較容易移植并且穩(wěn)定,可靠。加以相應(yīng)的外部擴(kuò)展,實(shí)現(xiàn)程序的運(yùn)行環(huán)境。外部擴(kuò)展有機(jī)部分組成:1)存儲(chǔ)模塊:Nand Flash存儲(chǔ)器、SDRAM存儲(chǔ)器、SD/MMC卡存儲(chǔ)器;2)對(duì)外通信接口模塊:網(wǎng)口、USB接口3)人機(jī)交互界面;LCD觸摸屏4)電源盒電源管理。
系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
圖2 硬件系統(tǒng)結(jié)構(gòu)圖Fig.2 Structure diagram of the hardware system
3.1.1 嵌入式Web Server存儲(chǔ)
嵌入式Web Server是指將Web服務(wù)器引入到現(xiàn)場(chǎng)嵌入式設(shè)備當(dāng)中,此與傳統(tǒng)的Web服務(wù)器是不一樣的,由于嵌入式設(shè)備要求有限的的代碼空間,并且要求嵌入式Web簡(jiǎn)潔,高效。所以使用的是PC+ARM9(嵌入式設(shè)備)的方式實(shí)現(xiàn)文件的映射,解決存儲(chǔ)的問(wèn)題。
3.1.2 嵌入式Web server交互方式
本系統(tǒng)為使客戶端能與嵌入式Web Server進(jìn)行交互,交互的方式有以下幾種,例如 SSI(Server Side Include)、CGI(Common Gateway Interface)、Java Servlet等技術(shù)。本系統(tǒng)采用了 CGI的交互方式。
3.2.1 PC+ARM9平臺(tái)
1)PC+ARM9平臺(tái)建立
在原PC機(jī)上安裝linux系統(tǒng),文中所使用的是ubuntu的linux系統(tǒng).ARM9-Linux是建立在U-boot的基礎(chǔ)上,主要通過(guò)編譯、配置完成。建立交叉編譯環(huán)境就是解壓交叉編譯器壓縮包,主要通過(guò)tar指令來(lái)完成。在進(jìn)行交叉編譯錢需要對(duì)編譯的文件進(jìn)行配置,即修改定義內(nèi)容。最后通過(guò)make指令對(duì)文件編譯。
2)PC+ARM9平臺(tái)網(wǎng)絡(luò)聯(lián)機(jī)
將ARM9的串口線與網(wǎng)線連接到PC機(jī),打開PC機(jī)的超級(jí)終端,并進(jìn)行基本設(shè)置后。打開ARM9開發(fā)板電源,此時(shí)超級(jí)終端會(huì)讀取ARM內(nèi)容。由于初始ARM9地址與PC機(jī)不在同一網(wǎng)段,所以需對(duì)ARM9進(jìn)行地址修改。如原PC機(jī)IP地址為:192.168.6.236,網(wǎng)關(guān)為:192.168.6.1,子掩碼為:255.255.255.0.在超級(jí)終端中輸入命令ifconfig eth0 192.168.6.111修改后ARM9的IP地址為192.168.6.111.輸入命令ping即可拼通。此時(shí)PC機(jī)與ARM9開發(fā)板的網(wǎng)絡(luò)連接就完成了??梢酝ㄟ^(guò)FTP進(jìn)行文件的直接傳輸。
3.2.2 Boa的配置、移植與構(gòu)建
Boa是一個(gè)源代碼開放,性能較高、執(zhí)行代碼小的單任務(wù)服務(wù)器,缺點(diǎn)是同一時(shí)間只能響應(yīng)一個(gè)命令,是一個(gè)單進(jìn)程服務(wù)器。通過(guò)建立HTTP請(qǐng)求列表來(lái)處理多路HTTP連接請(qǐng)求,同時(shí)只為CGI程序創(chuàng)建新的進(jìn)程,很大程度上節(jié)省了系統(tǒng)資源,這些特點(diǎn)特別適合于系統(tǒng)資源比較少的嵌入式系統(tǒng),并且它的響應(yīng)速度比常規(guī)的服務(wù)器要快很多。
1)Boa的配置
下載boa源碼并解壓到boa目錄中。在linux中執(zhí)行./configure命令,在目錄src中將生成Makefile文件,打開并修改
CC=gcc:為CC=gcc-linux-gcc:
CPP=gcc-E:為CPP=arm-linux-gcc-E:
2)boa編譯并優(yōu)化
打開src目錄執(zhí)行make命令,生成boa的可執(zhí)行文件,繼續(xù)執(zhí)行arm-linux-strip boa命令。
3)構(gòu)建Boa服務(wù)器
在文件系統(tǒng)中的etc下新建boa目錄,輸入指令chmod-R777 boa改變文件屬性,將boa-0.94.13/boa.conf復(fù)制到系統(tǒng)etc/boa中。創(chuàng)建HTML文檔目錄、日志文件目錄、CGI腳本目錄和日志文件,拷貝mine.type文件到系統(tǒng)etc目錄下。
Web開發(fā)生成動(dòng)態(tài)Web頁(yè)面的方法主要有 ASP、ASP.NET、JSP、PHP等,但是這些程序都需要大型應(yīng)用平臺(tái)的支持,而嵌入式系統(tǒng)資源有限,支持不了以上語(yǔ)言,而CGI克服了以上缺點(diǎn)。CGI使Web服務(wù)器和瀏覽器之間建立了標(biāo)準(zhǔn)的信息交互方式使信息在瀏覽器或者服務(wù)器與外部程序之間流通,提供客戶端HTML頁(yè)面的接口。當(dāng)Web服務(wù)器接收到用戶信息,并將部分信息發(fā)送到指定的CGI口占程序。CGI擴(kuò)展程序?qū)⑿畔⑻幚聿⒎祷亟o服務(wù)器,服務(wù)器對(duì)信息進(jìn)行分析后就將結(jié)果發(fā)送給客戶端,并在客戶端瀏覽器顯示。CGI可以使用多種語(yǔ)言來(lái)實(shí)現(xiàn),包括 C、C++、Perl等,但是Perl怨言需要有解釋執(zhí)行的支撐模塊,占用了大量存儲(chǔ)空間。本系統(tǒng)采用C語(yǔ)言來(lái)編寫,采用的是可復(fù)用的CGIC庫(kù),它提供了以下強(qiáng)大的功能:1)分析數(shù)據(jù)并自動(dòng)校正;2)能夠接受上傳文件;3)能夠設(shè)置和接受cookies;4)提供CGI程序的調(diào)試手段,能夠回放CGI程序執(zhí)行時(shí)CGI狀態(tài);5)提供字符串、整數(shù)、浮點(diǎn)數(shù),單選和多選項(xiàng)功能來(lái)接受數(shù)據(jù)方;6)用一致的式處理From元素里的回車等。并且支持本系統(tǒng)的Linux操作系統(tǒng)。
將制作好的網(wǎng)頁(yè)放到目錄html中,文件名要改為index.html。CGI程序放入boa/cgi-bin中。啟動(dòng)boa服務(wù)器,輸入ARM9開發(fā)板的地址192.168.6.111,此時(shí)瀏覽器就會(huì)顯示頁(yè)面。
圖3即為測(cè)試頁(yè)面。
圖3 測(cè)試頁(yè)面顯示圖Fig.3 Interface chart of the test system
基于ARM9的WEB服務(wù)器支持以太網(wǎng)連入Internet,通過(guò)類BSD套接口,綁定80號(hào)端口,監(jiān)測(cè)并處理實(shí)時(shí)任務(wù),使得用戶通過(guò)Internet即可通過(guò)遠(yuǎn)程的PC機(jī)訪問(wèn)并控制,管理系統(tǒng)的運(yùn)行,由于簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),信息的采集與發(fā)布都集中到了ARM9設(shè)備中,便于維護(hù)和管理。其低廉的成本、可靠性高、反應(yīng)速率快等特點(diǎn)使其具有廣闊的推廣價(jià)值。
[1]鳥哥.鳥哥的Linux私房菜:服務(wù)器架設(shè)篇[M].2版.北京:機(jī)械工業(yè)出版社,2008
[2]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.
[3]謝仕義,徐冰.嵌入式web服務(wù)器的設(shè)計(jì)及其CGI實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,28(7):1598-1600.XIE Shi-yi,XU Bin.Embedded web server design and its realization CGI[J].Computer engineering and design,2008,28(7):1598-1600.
[4]郭妍.基于MPEG-4視頻監(jiān)控系統(tǒng)的研究和實(shí)[D].西安:西安科技大學(xué),2009.
[5]陳麗蓉,李際煒,于喜龍.嵌入式微處理器系統(tǒng)及應(yīng)用[M].北京:北京大學(xué)出版社,2010.
[6]李巖.基于ARM嵌入式uCLinux系統(tǒng)原理及應(yīng)用[M].北京:北京大學(xué)出版社,2009.
[7]馬群利.嵌入式web服務(wù)器及其安全機(jī)制研究[J].計(jì)算機(jī)測(cè)量與控制,2007,15(2):538-540.MA Qun-li.Embedded web server and its security mechanism study[J].Computer measurement and control,2007,19(2):538-540.
[8]孟旭霞,譚少華,唐雙雄,等.嵌入式web中SQLite訪問(wèn)技術(shù)的研究[J].微計(jì)算機(jī)信息,2008(24):95-97.MENG Xu-xia,TAN Shao-hua,TANG Shuang-xiong,et al.Embedded in web SQLiteaccesstechnology[J].micro computer information,2008:95-97.