張 振,王曉寧,張 元
(1.鄭州大學 信息工程學院,河南 鄭州 450001;2.河南機電高等專科學校 河南 新鄉 453002;3.河南工業大學 河南 鄭州 450001)
隨著計算機技術和現代通信技術的不斷發展,設備即網絡是后PC時代對嵌入式系統的客觀要求,因此也需要建立嵌入式設備的網絡Web服務器[1]。嵌入式Web能夠實現在各種工業監控、檢測、以及自動化控制等領域的遠程控制,世界上無論任何地方,只要是存在Internet網絡,都能夠通過Web服務對各種現場進行管理,甚至可以在有網絡的手持設備上對現場進行控制管理操作。傳統的Web服務器大多在大型機,PC機上實現,其成本比較高,而且不方便工業現場的應用實施,嵌入式系統以及嵌入式小型Web服務器的出現使得Web服務運行在資源、性能有限的嵌入式設備上提供了條件。本文主要介紹嵌入式Web服務器BOA在ARM9嵌入式系統設備板上的移植,并對移植后的BOA服務器進行測試驗證。
根據系統要求,硬件電路部分核心處理器采用三星公司的 S3C2440,該器件基于 ARM920T內核,主頻 400 MHz,是性價比比較高的嵌入式32位處理器之一[2]。S3C2440微處理器內部資源豐富,包括1個LCD控制器、SDRAM控制器、4個通道的DMA等。開發板的存儲系統分SDRAM和Flash兩部分,其中SDRAM存儲系統使用了兩片外接的32 M字節總共64 M字節的SDRAM芯片,其型號為HY57V561620FTP。這部分通常稱之為內存,兩片SDRAM并在一起形成32位寬的數據總線,增加了數據訪問速度;開發板具有兩種Flash:一種是型號為SST39VF1601的Nor Flash,大小為2 M字節;另一種是型號為K9F1208的Nand Flash,大小為64 M字節;開發板采用的網卡芯片為DM9000,它自適應10/100 M網絡,RJ45連接頭內部已經包含了耦合線圈[3],因此在開發板上沒有另接網絡變壓器,通過網線即可連接開發板到Internet網絡中,從而實現嵌入式Web服務。另外還包括電源、晶振、JTAG調試口,以及基本輸入輸出端口等部分。嵌入式硬件設計框圖如圖1所示。

圖1 嵌入式硬件設計框圖
BOA是一款非常小巧的Web服務器,源代碼開放、性能優秀、支持CGI通用網關接口技術,特別適合應用在嵌入式系統中[4]。BOA服務器主要功能是在互聯嵌入式設備之間進行信息交互,達到通過網絡對嵌入式設備進行監控,并將反饋信息自動上傳給主控設備的目的。它是基于HTTP超文本傳輸協議的,Web網頁是Web服務最基本的傳輸單元。嵌入式Web服務的工作基于客戶機/服務器計算模型,由Web瀏覽器(客戶機)和Web服務器(服務器)構成,也即著名的B/S結構。運行于客戶端的瀏覽器首先要與嵌入式Web服務器BOA端建立連接,打開一個套接字虛擬文件,此文件建立標志著SOCKET連接建立成功。然后客戶端瀏覽器通過套接字SOCKET以GET或者POST參數傳遞方式向Web服務器提交請求,Web瀏覽器提交請求后,通過HTTP協議傳送給Web服務器。Web服務器接到請求后,根據請求的不同進行事務處理,返回HTML文件或者通過CGI調用外部應用程序,返回處理結果。服務器通過CGI與外部應用程序和腳本之間進行交互,根據客戶端瀏覽器在請求時所采用的方法,服務器會搜集客戶所提供的信息,并將該部分信息發送給指定的CGI擴展程序,CGI擴展程序進行信息處理并將結果返回給服務器,然后服務器對信息進行分析,并將結果發送回客戶端在瀏覽器上顯示出來[5]。
首先,Web服務器BOA是要運行于ARM嵌入式設備上的,因此需要對BOA源文件進行交叉編譯。編譯工具使用arm-linux-gcc-4.3.2交叉編譯工具鏈,拷貝文件arm-linux-gcc-4.3.2.tgz到目錄/tmp下,執行命令cd/tmp;tar zxvf arm-linux-gcc-4.3.2.tgz-C/.這樣交叉編譯工具就安裝到/usr/local/arm/4.3.2目錄下面。為確保在打開終端后能直接應用交叉編譯工具鏈,要在/root/.bashrc文件中把編譯器路徑加入到系統環境變量。運行命令gedit/root/.bashrc編輯文件/root/.bashrc。在文件的最后添加export PATH=$PATH:/usr/local/arm/4.3.2/bin。保存退出。接著執行source/root/.bashrc命令使設置生效。最后檢測交叉編譯工具是否安裝成功,命令為在終端中輸入arm-linux-gcc-v;若能在輸出的信息中看到arm-linux-gcc版本號4.3.2,說明安裝成功。
其次,交叉編譯BOA源碼,拷貝BOA源碼包boa-0.94.13.tar.gz到/tmp目錄下,解壓縮掩碼包tar zxvf boa-0.94.13.tar.gz;解壓后在Linux終端進入BOA所在目錄,首先執行命令./configure生成Makefile文件,然后打開文件夾,找到Makefile文件,用文本編輯器打開,找到CC=gcc,CPP=gcc-E兩行,分別將其設置成上一步生成的交叉編譯工具路徑CC=/usr/local/arm/4.3.2/bin/arm-linux-gcc和CPP=/usr/local/arm/4.3.2/bin/arm-linux-gcc-E,然后將Makefile保存后退出,回到終端執行make命令,進行交叉編譯得到可執行程序BOA,它就是能夠運行在ARM嵌入式設備上的執行文件。可通過命令file boa查看文件信息。拷貝此BOA文件到目標板/bin目錄中。
再次,配置boa服務器。配置BOA主要是為了使其能夠支持CGI程序的執行。在文件系統的/etc目錄下mkdir boa建立一個BOA目錄,拷貝BOA源碼目錄中的boa.conf文件到文件系統目錄/etc/boa目錄下,然后根據嵌入式BOA的需求在此配置文件的基礎上進行修改。在修改此配置文件時需要注意保證其他文件和設置必須與配置文件相一致,否則嵌入式Web服務器BOA就不能正常運行[6]。boa.conf文件主要配置內容如圖2所示。
測試的目的主要是驗證嵌入式Web服務器BOA移植以及配置是否正確,能否正常工作。根據以上配置文件boa.conf的內容在文件系統目錄/var下創建www目錄用于存放html文檔以及html文檔所需的圖像資源[7-8]。創建/www/cgi-bin目錄用于存放CGI程序。
1)制作Web測試頁 Web測試網頁主要由Html語言、Javascript腳本語言完成,新建文本文檔輸入網頁代碼如圖3所示。

圖3 Web測試代碼
保存此文件并重命名為index.html。
拷貝此Html文件到目標板/var/www/目錄下,假設開發宿主機與目標板在同一局域網中,并且無網絡故障,目標板ip地址設置為192.168.1.156[9]。在宿主機上運行瀏覽器進行BOA頁面測試,在瀏覽器地址欄中輸入ip地址192.168.1.1,則可以看到Web測試頁面如圖4所示。

圖4 Web測試頁面
2)CGI腳本測試 在目標板打開一個終端輸入命令viceshi.cgi,新建一個腳本文件,輸入如圖5所示代碼。

圖5 CGI測試代碼
:wq保存此腳本文件,并拷貝此文件到/var/www/cgi-bin目錄中,chmod+x ceshi.cgi更改此文件的執行權限。然后在宿主機 (客戶端)瀏覽器中輸入http://192.168.1.156/cgi-bin/ceshi.cgi地址,經過測試符合功能要求。
本文實現了嵌入式BOA Web服務器在ARM9目標板的移植以實現微型機在各種控制領域的遠程管理,并通過了移植后測試。嵌入式BOA的成功移植為以后在具體生活、工業現場中的應用提供了條件,方便了未來Web應用工程的開發。
[1]李新峰,何廣生,趙秀文.基于ARM9的嵌入式Linux開發技術[M].北京:電子工業出版社,2008.
[2]周立功.ARM嵌入式系統軟件開發實例(一)[M].北京:北京航空航天大學出版社,2005.
[3]忠梅,徐英慧,葉勇建,等.AT91系列ARM核為控制器結構與開發[M].北京:北京航空航天大學出版社,2003.
[4]孫輝,陸松年,楊樹堂.基于 Linux和 S3C2410的嵌入式Web server的研究與實現[J].計算機應用與軟件,2007,24(2):134-136.
[5]劉志杰,張華忠,單曉嵐.基于嵌入式Web的遠程實時監控技術研究[J].計算機工程與設計,2007,28(15):3734-3736.
[6]吉根林,崔海源.Web程序設計[M].2版.北京:電子工業出版社,2007.
[7]Stephen G,Kochan,Patrick Wood.Unix Shell編程[M].3 版.北京:中國鐵道出版社,2004.
[8]保川,班建民,陸衛忠.基于嵌入式Web的遠程監控系統設計[J].微計算機信息,2005,21(7):58-60.
[9]韓樹人,周賢娟.基于嵌入式Web服務器的遠程實時數據采集[J].計算機技術與發展,2008,18(1):206-209.