范延青++王雪晶
摘 要
VxWorks操作系統(tǒng)以高實時性和穩(wěn)定性在現(xiàn)階段被廣泛地應(yīng)用于通信和軍事領(lǐng)域,但是由于界面開發(fā)的復(fù)雜性,開發(fā)人員一般通過上位機軟件來進行設(shè)備的配置和系統(tǒng)狀態(tài)的獲取。本文通過GoAhead WebServer的VxWorks嵌入,使用戶通過網(wǎng)頁與設(shè)備進行友好交互。
【關(guān)鍵詞】VxWorks GoAhead WebServer 嵌入式
有線通信設(shè)備是用于遠距離傳輸?shù)耐ㄐ旁O(shè)備,不具有人機交互界面。實現(xiàn)有線通信設(shè)備的配置只能通過pc進行。傳統(tǒng)配置方法是采用基于pc的上位機軟件通過網(wǎng)口或者串口來進行。此方法雖然能滿足配置需求,但是存在開發(fā)、調(diào)試周期長,不便于用戶安裝等不足。針對MPC860以及VxWorks操作系統(tǒng)的特點,在系統(tǒng)中嵌入GoAhead WebServer,可以在web瀏覽器中實現(xiàn)有線通信設(shè)備參數(shù)配置以及設(shè)備狀態(tài)的獲取。
1 問題的提出及分析
有線通信設(shè)備處理器采用飛思卡爾出品的MPC860。MPC860采用雙核結(jié)構(gòu),由控制模塊和通信處理模塊組成。MPC860同時帶有多個串行通信控制器、以太網(wǎng)控制器,支持多種通信協(xié)議,故主要用于通信領(lǐng)域。操作系統(tǒng)采用VxWorks。該系統(tǒng)是美國風(fēng)河公司出品的嵌入式硬實時操作系統(tǒng)。該系統(tǒng)因為具有高實時性,高性能,內(nèi)核容易裁剪被應(yīng)用在通信、軍事、航空、航天等對實時性要求特別高的的行業(yè)中。
現(xiàn)階段流行的WebServer軟件主要有:BOA,Thttpd,MIni_httpd, GoAhead,httpd等,但是可以滿足要求且便于開發(fā)只有GoAhead是最佳的選擇。
GoAhead具有以下主要特點:
(1)支持多種嵌入式操作系統(tǒng);
(2)支持ASP及JavaScript;
(3) 支持標準的CGI以及GoForm;
(4)反應(yīng)迅速,最快請求處理速度可超過65p/s;
(5) 支持SSL及用戶管理。
Asp,CGI是GoAhead提供的人機交互的兩種方法。它們本質(zhì)上是在設(shè)備端與系統(tǒng)內(nèi)的某個C函數(shù)綁定在一起。Asp主要用來生成顯示在web頁面中的動態(tài)數(shù)據(jù),CGI則用來處理響應(yīng)用戶輸入來更新系統(tǒng)設(shè)置參數(shù)或者執(zhí)行用戶設(shè)置的指令。開發(fā)者在GoAhead一般使用GoForms來處理web頁面中表單提供的內(nèi)容。GoForm與傳統(tǒng)的CGI方法不盡相同。GoForm不是為每個web連接都創(chuàng)建一個新的進程,而是通過與GoAhead服務(wù)器共享地址空間直接訪問請求上下文。GoForm可以自動解析和訪問用戶傳遞的數(shù)據(jù)。
GoAhead內(nèi)核支持使用SSL進行數(shù)據(jù)加密和認證,支持摘要認證機制。同時用戶管理功能允許不同的用戶具有不同級別的訪問權(quán)限。
2 GoAhead的VxWorks嵌入過程
GoAhead支持多種操作系統(tǒng),因此基于VxWorks的應(yīng)用也比較簡單。我們可以在tornado 底下建一個GoAhead的庫文件便于我們的鏈接調(diào)用。首先要建一個download類型的工程,選擇工程管理目錄下Builds選項卡,右鍵選擇Buid模式中的properties,在rules選項里選輸出格式archive,這樣就可以生成需要的庫文件。我們接下來在工程目錄下添加從官方下載的GoAhead源文件:asp.c、websuemf.c 等。此外我們還要編寫main.c文件為用戶提供使用接口。我們還需在系統(tǒng)宏定義選項卡里加上對GoAhead系統(tǒng)定義。具體內(nèi)容為:
-D WEBS -D UEMF -D VXWORKS -D OS="VXWORKS" -D USER_MANAGEMENT_SUPPORT -D DIGEST_ACCESS_SUPPORT。編譯、鏈接,default文件夾下會出現(xiàn)生成的*.a的庫文件。設(shè)備使用的VxWorks工程中加載此庫文件,即可將GoAhead模塊編譯進映像。最后在主函數(shù)中通過taskSpawn 初始化GoAhead任務(wù)的主函數(shù)websvxmain即可實現(xiàn)WebServer隨設(shè)備啟動。
3 Web網(wǎng)頁設(shè)計
3.1 系統(tǒng)狀態(tài)顯示
GoAhead支持ASP動態(tài)網(wǎng)頁。內(nèi)容可以采用嵌入式JavaScript來進行設(shè)計。如果在創(chuàng)建動態(tài)網(wǎng)頁的過程中要生成動態(tài)頁面,首先要生成擴展名為asp的web文件,此文件是顯示系統(tǒng)動態(tài)信息的主文件;然后在此文件中需要嵌入應(yīng)用函數(shù)aa()的地方使用<% aa(); %>(假定aa()函數(shù)是web文件中顯示系統(tǒng)動態(tài)信息);再把aa()函數(shù)注冊到main.c文件中的initWebs()函數(shù)中:websAspDefine(T("aa"), bb)(假定bb()函數(shù)是我們VxWorks系統(tǒng)內(nèi)部的函數(shù),同樣用于動態(tài)顯示系統(tǒng)信息)。在執(zhí)行web文件過程中,當出現(xiàn)aa()時系統(tǒng)就會調(diào)用bb()來生成新的顯示信息反饋到頁面中。必須注意bb()函數(shù)的格式:int bb(int ejid, webs_t wp, int argc, chart_t **argv); ejid參數(shù)作為JavaScript解釋器句柄,用來調(diào)用JavaScript相關(guān)函數(shù)。wp參數(shù)作為瀏覽器連接的句柄,用來調(diào)用GoAhead服務(wù)器函數(shù),前面這兩個參數(shù)不能改動。argc和argv包含傳遞給asp過程的實參個數(shù)和內(nèi)容。
3.2 配置系統(tǒng)參數(shù)
GoAhead使用GoForm來進行用戶配置信息的傳遞。在使用時需要在web文件中加上表單: 其中cc為GoAhead的注冊函數(shù)。當用戶提交form時會自動調(diào)用cc對應(yīng)的系統(tǒng)函數(shù)并將用戶的配置參數(shù)傳遞進函數(shù),來達到交互的目的。endprint
4 加載web文件到VxWorks系統(tǒng)
為了能夠使用戶直接在web瀏覽器中進行系統(tǒng)狀態(tài)的讀取和系統(tǒng)參數(shù)的配置,在使用之前應(yīng)將先前制作的web文件加載到系統(tǒng)。我們可以采用以下兩種方式實現(xiàn):
4.1 將文件拷貝到文件系統(tǒng)
VxWorks支持tffs文件系統(tǒng),我們可以在文件系統(tǒng)中建立一個web文件的專屬文件夾。通過ftp工具將我們設(shè)計的web文件system.asp下載進("/tffs0/web")。設(shè)置文件的根目錄#define ROOT_DIR T("/tffs0/webs"),設(shè)置缺省主頁websSetDefaultPage (T("system.asp"));通過web瀏覽器鍵入 http:// 192.168. 200. 36 就可以訪問到system.asp 文件(設(shè)定有線通信設(shè)備默認地址為192.168.200.36)。
通過此種方式可以實時地將web下載進文件系統(tǒng)并進行訪問,適用于調(diào)試及生產(chǎn)階段。
4.2 生成rom網(wǎng)頁
GoAhead支持Rom網(wǎng)頁設(shè)計,并且專門為用戶的web文件壓縮進數(shù)組寫了一個文件合并程序。我們要先進入源代碼文件夾WIN下編譯webcomp.dsp生成webcomp.exe;然后將所用到的web文件和生成的webcomp.exe文件放到同一文件夾下;制作filelist.txt文件,將用戶所用到的網(wǎng)頁文件名以文本方式羅列如下:
System.asp
about.htm
Help.htm
每個文件擴展名只能以回車鍵結(jié)束。在windows系統(tǒng)中打開命令行,在其中輸入:webcomp.exe n filelist.txt > webrom.c 然后會生成所用到的web文件的固化數(shù)組文件webrom.c(n 為網(wǎng)頁文件的個數(shù));然后將源文件中的同名文件替換即可;再編譯WIN文件夾下的webs.dsp可以生成windows系統(tǒng)下使用的webserver。通過運行這個可執(zhí)行文件來測試我們生成數(shù)組文件是否可用。測試完成后我們還要進行頭文件Header.h的修改來支持rom網(wǎng)頁,即加上#define WEBS_PAGE_ROM。在tornado下編譯即可得到所需要的VxWorks映像文件。此映像文件包含網(wǎng)頁內(nèi)容,不需要文件系統(tǒng)的支持。下載到有線通信設(shè)備,同樣通過web瀏覽器鍵入 http://192.168.200.36就可以訪問到system.asp 文件。
采用此種方法不必局限于文件系統(tǒng)的限制,而且所占空間遠遠小于使用文件系統(tǒng),但是缺點是下載、編譯web文件麻煩,適用于生產(chǎn)階段以及沒有文件系統(tǒng)的設(shè)備。
參考文獻
[1]Rover2.GoAhead websever 移植小結(jié)[EB/OL].http://bbs.Edw.com.cn,2005-10.
[3]GoAhead Overview[DB/OL].http://www.goahead.com/products/webserver/default.aspx.
[3]劉妮.基于VxWorks和嵌入式Web服務(wù)器的遠程實時控制的實現(xiàn)[D].天津大學(xué),碩士學(xué)位論文,2006-12.
作者單位
1.煙臺北方星空自控科技有限公司 山東省煙臺市 210000
2.中國聯(lián)合網(wǎng)絡(luò)通信有限公司煙臺市分公司 山東省煙臺市 210000endprint