楊 虎,王衛東
(江蘇科技大學 計算機學院,江蘇 鎮江 212003)
隨著嵌入式系統和網絡技術的迅速發展,嵌入式系統與Internet技術結合為嵌入式設備的網絡互連提供了一條有效的途徑。把嵌入式設備連接到網絡中,并實現Web Server功能,使用戶可以直接通過Web瀏覽器對現場的設備進行遠程監控,這將大大方便用戶的操作。嵌入式Web Server是實現嵌入式系統通過Web方式與Internet互連的關鍵組成部分,研究嵌入式Web Server的原理及其實現對于網絡傳輸、遠程監控、信息家電等領域有很強的實際意義。
由于ARM9的開發板資源有限,不可能在開發板上運行開發和調試工具,所以通過交叉編譯調試的方式進行,采用宿主機+開發板的形式實現。宿主機即為運行的PC機,本系統采用了安裝了Linux的PC機作為宿主機。通過交叉編譯將開發板與宿主機連接、定位,得到可執行文件并在開發板上運行。用戶通過瀏覽器發送請求通過TCP/IP協議經Internet發送到服務器,服務器經過判斷請求合法后,根據請求將數據發出去,并在用戶的瀏覽器中顯示。
結構框架圖如圖1所示。

圖1 系統結構框架圖Fig.1 System structure frame diagram
本系統所采用的ARM開發板采用的是S3C2440A的ARM9處理器,主頻高達400 MHz,最高可達533 MHz。其有成熟的電路及元器件,性價比較高。Linux嵌入式操作系統比較容易移植并且穩定,可靠。加以相應的外部擴展,實現程序的運行環境。外部擴展有機部分組成:1)存儲模塊:Nand Flash存儲器、SDRAM存儲器、SD/MMC卡存儲器;2)對外通信接口模塊:網口、USB接口3)人機交互界面;LCD觸摸屏4)電源盒電源管理。
系統硬件結構如圖2所示。

圖2 硬件系統結構圖Fig.2 Structure diagram of the hardware system
3.1.1 嵌入式Web Server存儲
嵌入式Web Server是指將Web服務器引入到現場嵌入式設備當中,此與傳統的Web服務器是不一樣的,由于嵌入式設備要求有限的的代碼空間,并且要求嵌入式Web簡潔,高效。所以使用的是PC+ARM9(嵌入式設備)的方式實現文件的映射,解決存儲的問題。
3.1.2 嵌入式Web server交互方式
本系統為使客戶端能與嵌入式Web Server進行交互,交互的方式有以下幾種,例如 SSI(Server Side Include)、CGI(Common Gateway Interface)、Java Servlet等技術。本系統采用了 CGI的交互方式。
3.2.1 PC+ARM9平臺
1)PC+ARM9平臺建立
在原PC機上安裝linux系統,文中所使用的是ubuntu的linux系統.ARM9-Linux是建立在U-boot的基礎上,主要通過編譯、配置完成。建立交叉編譯環境就是解壓交叉編譯器壓縮包,主要通過tar指令來完成。在進行交叉編譯錢需要對編譯的文件進行配置,即修改定義內容。最后通過make指令對文件編譯。
2)PC+ARM9平臺網絡聯機
將ARM9的串口線與網線連接到PC機,打開PC機的超級終端,并進行基本設置后。打開ARM9開發板電源,此時超級終端會讀取ARM內容。由于初始ARM9地址與PC機不在同一網段,所以需對ARM9進行地址修改。如原PC機IP地址為:192.168.6.236,網關為:192.168.6.1,子掩碼為:255.255.255.0.在超級終端中輸入命令ifconfig eth0 192.168.6.111修改后ARM9的IP地址為192.168.6.111.輸入命令ping即可拼通。此時PC機與ARM9開發板的網絡連接就完成了。可以通過FTP進行文件的直接傳輸。
3.2.2 Boa的配置、移植與構建
Boa是一個源代碼開放,性能較高、執行代碼小的單任務服務器,缺點是同一時間只能響應一個命令,是一個單進程服務器。通過建立HTTP請求列表來處理多路HTTP連接請求,同時只為CGI程序創建新的進程,很大程度上節省了系統資源,這些特點特別適合于系統資源比較少的嵌入式系統,并且它的響應速度比常規的服務器要快很多。
1)Boa的配置
下載boa源碼并解壓到boa目錄中。在linux中執行./configure命令,在目錄src中將生成Makefile文件,打開并修改
CC=gcc:為CC=gcc-linux-gcc:
CPP=gcc-E:為CPP=arm-linux-gcc-E:
2)boa編譯并優化
打開src目錄執行make命令,生成boa的可執行文件,繼續執行arm-linux-strip boa命令。
3)構建Boa服務器
在文件系統中的etc下新建boa目錄,輸入指令chmod-R777 boa改變文件屬性,將boa-0.94.13/boa.conf復制到系統etc/boa中。創建HTML文檔目錄、日志文件目錄、CGI腳本目錄和日志文件,拷貝mine.type文件到系統etc目錄下。
Web開發生成動態Web頁面的方法主要有 ASP、ASP.NET、JSP、PHP等,但是這些程序都需要大型應用平臺的支持,而嵌入式系統資源有限,支持不了以上語言,而CGI克服了以上缺點。CGI使Web服務器和瀏覽器之間建立了標準的信息交互方式使信息在瀏覽器或者服務器與外部程序之間流通,提供客戶端HTML頁面的接口。當Web服務器接收到用戶信息,并將部分信息發送到指定的CGI口占程序。CGI擴展程序將信息處理并返回給服務器,服務器對信息進行分析后就將結果發送給客戶端,并在客戶端瀏覽器顯示。CGI可以使用多種語言來實現,包括 C、C++、Perl等,但是Perl怨言需要有解釋執行的支撐模塊,占用了大量存儲空間。本系統采用C語言來編寫,采用的是可復用的CGIC庫,它提供了以下強大的功能:1)分析數據并自動校正;2)能夠接受上傳文件;3)能夠設置和接受cookies;4)提供CGI程序的調試手段,能夠回放CGI程序執行時CGI狀態;5)提供字符串、整數、浮點數,單選和多選項功能來接受數據方;6)用一致的式處理From元素里的回車等。并且支持本系統的Linux操作系統。
將制作好的網頁放到目錄html中,文件名要改為index.html。CGI程序放入boa/cgi-bin中。啟動boa服務器,輸入ARM9開發板的地址192.168.6.111,此時瀏覽器就會顯示頁面。
圖3即為測試頁面。

圖3 測試頁面顯示圖Fig.3 Interface chart of the test system
基于ARM9的WEB服務器支持以太網連入Internet,通過類BSD套接口,綁定80號端口,監測并處理實時任務,使得用戶通過Internet即可通過遠程的PC機訪問并控制,管理系統的運行,由于簡化了系統結構,信息的采集與發布都集中到了ARM9設備中,便于維護和管理。其低廉的成本、可靠性高、反應速率快等特點使其具有廣闊的推廣價值。
[1]鳥哥.鳥哥的Linux私房菜:服務器架設篇[M].2版.北京:機械工業出版社,2008
[2]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
[3]謝仕義,徐冰.嵌入式web服務器的設計及其CGI實現[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視頻監控系統的研究和實[D].西安:西安科技大學,2009.
[5]陳麗蓉,李際煒,于喜龍.嵌入式微處理器系統及應用[M].北京:北京大學出版社,2010.
[6]李巖.基于ARM嵌入式uCLinux系統原理及應用[M].北京:北京大學出版社,2009.
[7]馬群利.嵌入式web服務器及其安全機制研究[J].計算機測量與控制,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訪問技術的研究[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.