文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.02.013
中文引用格式: 陳娟,李元,李萬國. 基于B/S模式的嵌入式系統(tǒng)測試方法與實現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(2):50-52,56.
英文引用格式: Chen Juan,Li Yuan,Li Wanguo. The measurement method and implementation of embedded system based on B/S mode[J].Application of Electronic Technique,2016,42(2):50-52,56.
0 引言
伴隨數(shù)字信息技術(shù)高速發(fā)展,嵌入式系統(tǒng)設(shè)備數(shù)量已經(jīng)遠超過通用計算機,后PC時代已經(jīng)到來。嵌入式系統(tǒng)設(shè)備廣泛服務(wù)于網(wǎng)絡(luò)通信、消費電子、工業(yè)控制、測控等多個領(lǐng)域。
嵌入式技術(shù)在測試領(lǐng)域應(yīng)用日益成熟,但由于其具體應(yīng)用場合不同,難以形成統(tǒng)一的軟件開發(fā)框架。呂國勇、史祥龍等人分析了Ajax異步交互、CGI(Comment Gateway Interface)通用網(wǎng)關(guān)在嵌入式系統(tǒng)中的應(yīng)用[1-2],從而減輕了服務(wù)器的負擔,提高了客戶端與服務(wù)器之間的交互速度。劉利枚、周鮮成等人對嵌入式軟件測試系統(tǒng)的設(shè)計與實現(xiàn)進行了探索,提出了一種實用的嵌入式軟件動態(tài)測試系統(tǒng)的結(jié)構(gòu)框架[3]。蔡勇、王勇等人基于嵌入式數(shù)據(jù)庫SQLite3.0技術(shù)設(shè)計了測控系統(tǒng),分析了嵌入式數(shù)據(jù)庫的特點和關(guān)鍵技術(shù),著重研究了應(yīng)用方式和移植方法[4]。張振、王小寧等人對嵌入式Web服務(wù)器Boa的移植與應(yīng)用進行了研究,并實現(xiàn)了其在控制領(lǐng)域的遠程管理[5]。本文在前人的技術(shù)基礎(chǔ)上進行綜合、擴展,提出了一套較為成熟的基于B/S測控模式的嵌入式軟件架構(gòu),并對其中軟件的實現(xiàn)及移植過程進行了較為全面的探討和總結(jié),最終提供一套具體可行的實現(xiàn)方案。
1 整體結(jié)構(gòu)
系統(tǒng)采用B/S軟件架構(gòu)模式,Server端為嵌入式測試系統(tǒng),具備Web服務(wù)和數(shù)據(jù)庫存儲能力,Browser端為符合W3C的標準瀏覽器。
用戶通過Web頁面登錄至服務(wù)器后發(fā)出配置、測試等控制命令;Server響應(yīng)用戶的請求,調(diào)用對應(yīng)的CGI服務(wù)程序,并采用Ajax異步數(shù)據(jù)傳輸?shù)姆绞綄y試結(jié)果動態(tài)返回至用戶Web頁,前端采用波形曲線、指針等多種形式展現(xiàn)數(shù)據(jù)。
1.1 硬件結(jié)構(gòu)
系統(tǒng)硬件結(jié)構(gòu)分為4個部分:嵌入式測試系統(tǒng)、交叉編譯系統(tǒng)、被測對象配電器和時鐘同步系統(tǒng)。嵌入式測試系統(tǒng)采用ARM11-S3C6410處理器,操作系統(tǒng)內(nèi)核為Linux2.6.3.8。交叉編譯系統(tǒng)與嵌入式測試系統(tǒng)通過NFS(Network File System)網(wǎng)絡(luò)文件系統(tǒng)、TFTP(Trivial File Transfer Protocol)文件傳輸協(xié)議、串口通信等協(xié)議來進行系統(tǒng)調(diào)試、程序傳輸以及與下位機進行通信。嵌入式測試系統(tǒng)繼電器模塊、AD轉(zhuǎn)換模塊與被測對象配電器通過兩條通信電纜相連,系統(tǒng)產(chǎn)生激勵并讀取配電器返回的測試結(jié)果。嵌入式測試系統(tǒng)通過NTP協(xié)議與外部的時鐘服務(wù)器同步,可為今后擴展為分布式測試系統(tǒng)提供統(tǒng)一時鐘校對服務(wù)。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
1.2 軟件結(jié)構(gòu)
測試系統(tǒng)軟件采用B/S架構(gòu)模式,軟件分為3層結(jié)構(gòu)進行設(shè)計。整個結(jié)構(gòu)分為上層、中間層和底層3部分:上層為用戶接口界面,負責接受用戶指令、顯示動態(tài)數(shù)據(jù)等;中間層由Web服務(wù)器和數(shù)據(jù)庫構(gòu)成,負責提供Web服務(wù)、數(shù)據(jù)存儲等功能;底層由硬件驅(qū)動程序、測試應(yīng)用程序構(gòu)成,提供底層函數(shù)調(diào)用。
2 功能及實現(xiàn)
根據(jù)上文所述硬件結(jié)構(gòu)、軟件架構(gòu),設(shè)計并實現(xiàn)測試系統(tǒng)的各部分功能。以下就本設(shè)計的關(guān)鍵模塊進行詳細說明。系統(tǒng)功能模塊設(shè)計如圖2。
2.1 用戶界面設(shè)計
用戶界面設(shè)計主要分為4個功能模塊:用戶身份驗證模塊、測試設(shè)備基本信息瀏覽與配置模塊、動態(tài)數(shù)據(jù)查看模塊和歷史數(shù)據(jù)瀏覽模塊。
用戶身份驗證模塊加強了系統(tǒng)安全性,分為普通用戶和管理員兩種權(quán)限模式。基本信息瀏覽模塊與配置模塊將調(diào)用底層CGI程序獲取設(shè)備基本信息,如服務(wù)器IP地址、客戶端IP地址、主機名稱、內(nèi)核版本等信息;動態(tài)數(shù)據(jù)顯示模塊采用開源的Flot Javascript插件,將數(shù)據(jù)以數(shù)字、儀表、曲線多種方式來呈現(xiàn)。前臺與后臺數(shù)據(jù)交換采用了Ajax異步通信技術(shù)來實現(xiàn)動態(tài)更新頁面;歷史數(shù)據(jù)查看模塊調(diào)用后臺數(shù)據(jù)庫歷史數(shù)據(jù)后采用Ajax異步通信更新前端頁面,并自動生成CVS格式的歷史數(shù)據(jù)文件,用戶下載后可用于數(shù)據(jù)分析。
2.2 Web服務(wù)器、數(shù)據(jù)庫設(shè)計
為構(gòu)建B/S模式測試系統(tǒng),系統(tǒng)必須具備提供Web服務(wù)能力和實驗數(shù)據(jù)管理能力。本節(jié)詳細介紹服務(wù)器和數(shù)據(jù)庫的實現(xiàn)過程。
2.2.1 嵌入式Web服務(wù)器設(shè)計
目前在嵌入式設(shè)備中常用的Web服務(wù)器有Boa、thttpd、Mini_httpd等,同等硬件條件下,Boa顯示出更快的處理速度,內(nèi)存需求小,能耗低,支持CGI腳本程序。
主要移植步驟如下:(1)編譯源碼,生成ARM架構(gòu)下可執(zhí)行文件Boa。(2)修改服務(wù)器配置文件相關(guān)參數(shù):DocumentRoot(測試頁面文檔路徑)、ScriptAlias(測試CGI腳本路徑)。
圖3為服務(wù)器文件部署目錄,在boa.conf中更改參數(shù)如下:DocumentRoot/Testwww;ScriptAlias/cgi-bin/ /Testwww/CGIScripts/。Pages目錄主要部署HTML網(wǎng)頁文件、JavaScript腳本文件;CGIScripts目錄部署CGI腳本程序,包括數(shù)據(jù)庫查詢腳本、數(shù)據(jù)測試腳本、獲取設(shè)備基本信息腳本等;DataTbls目錄主要存儲數(shù)據(jù)庫文件,包括歷史數(shù)據(jù)表、用戶密碼數(shù)據(jù)表、設(shè)備基本信息表。分類目錄設(shè)計更利于文檔的編輯和管理。
2.2.2 嵌入式數(shù)據(jù)庫設(shè)計
嵌入式設(shè)備中常用的數(shù)據(jù)庫有mSQL、SQLiteDB等。經(jīng)對比選擇開源數(shù)據(jù)庫SQLiteDB,它支持數(shù)據(jù)庫大小為2 TB,足夠小,全部代碼250 KB,比目前流行的大多數(shù)數(shù)據(jù)庫對數(shù)據(jù)的操作要快。
移植步驟如下:(1)編譯源碼包生成可執(zhí)行文件目錄。(2)將編譯生成的bin、include、lib目錄通過NFS文件系統(tǒng)復(fù)制至對應(yīng)嵌入式文件系統(tǒng)下。
根據(jù)需求分析設(shè)計數(shù)據(jù)庫實體對象,分為用戶實體、設(shè)備基本信息實體、歷史數(shù)據(jù)測試信息實體,最終設(shè)計對應(yīng)的數(shù)據(jù)表。圖4給出用戶實體E-R圖。
2.3 CGI、Ajax異步通信設(shè)計
為了加強系統(tǒng)頁面與用戶的動態(tài)交互性,本系統(tǒng)采用CGI與Ajax的解決方案。使用CGI技術(shù)在服務(wù)器端發(fā)布動態(tài)網(wǎng)頁,與Ajax的XMLHttpRequest組件進行數(shù)據(jù)交互,實現(xiàn)了動態(tài)Web功能,使網(wǎng)頁局部自動刷新,無須手動更新網(wǎng)頁。這是本系統(tǒng)前臺與后臺數(shù)據(jù)通信的主要方式。
工作流程如下:(1)用戶通過Web瀏覽器訪問嵌入式服務(wù)器中部署好的測試頁面,服務(wù)器響應(yīng)瀏覽器請求,返回內(nèi)嵌有JavaScript腳本的Web頁面。(2)瀏覽器解析返回頁面代碼并顯示,執(zhí)行內(nèi)嵌的JavaScript腳本程序。(3)用戶在瀏覽器輸入的數(shù)據(jù)首先由JavaScript程序預(yù)處理,然后通過XMLHttp Request對象向服務(wù)器發(fā)出異步請求。服務(wù)器解析請求參數(shù)后調(diào)用底層相應(yīng)驅(qū)動程序進行測試或存取數(shù)據(jù)庫,并將獲取的數(shù)據(jù)以XML格式返回給瀏覽器。(4)瀏覽器通過responseXML方法獲得數(shù)據(jù),然后通過DOM文檔對象模型來更新用戶界面。
2.4 測試系統(tǒng)時鐘同步設(shè)計
以上討論的是單測試系統(tǒng)組網(wǎng)情況,而B/S架構(gòu)可搭建分布式測試系統(tǒng)。在分布式系統(tǒng)中, 常常需要一個全局時間, 用來確定系統(tǒng)中各種事件發(fā)生的先后、協(xié)調(diào)各種消息的傳輸、控制和監(jiān)視系統(tǒng)的狀態(tài),這就需要對系統(tǒng)中各個部件進行時鐘同步,保障局部時間統(tǒng)一。
2.4.1 網(wǎng)絡(luò)時間同步協(xié)議
常用的網(wǎng)絡(luò)時間同步協(xié)議主要有NTP(Net Work Protocol)、SNTP(Simple Net Work Protocol)以及PTP(Precision Time Protocol)等,表1為三者綜合比較。
考慮協(xié)議的同步時間精度及其實現(xiàn)的難易度,決定采用NTP作為測試網(wǎng)絡(luò)中的時鐘同步協(xié)議。NTP時間同步模式分為4種:客戶端/服務(wù)器模式、對等體模式、廣播模式、組播模式。系統(tǒng)采用客戶端/服務(wù)器模式。
2.4.2 設(shè)計方案
首先構(gòu)建測試網(wǎng)絡(luò),采用一臺Windows7操作系統(tǒng)的主機作為時鐘源服務(wù)器,兩臺嵌入式測試設(shè)備作為被同步對象。3個節(jié)點由路由器連接,構(gòu)成局域測試網(wǎng)絡(luò)。
其次配置時鐘源服務(wù)器、移植NTP協(xié)議至嵌入式測試設(shè)備。(1)對于Windows時鐘服務(wù)器只需更改注冊表相應(yīng)參數(shù),使其對外提供NTP服務(wù)。(2)嵌入式測試系統(tǒng)將作為NTP協(xié)議的Client,首先需要移植NTP協(xié)議。其次在配置文件ntp.conf中添加語句server 192.168.1.131,根據(jù)具體IP參數(shù)設(shè)置時鐘服務(wù)器的IP地址。(3)將嵌入式系統(tǒng)ntpd設(shè)置為開機自啟動服務(wù),在/etc/init.d/rcS添加如下語句:ntpdate 192.168.1.131;/etc/init.d/ntpd。首先ntpdate將行一次時間校正,以防止服務(wù)器和客戶端時間誤差太大導(dǎo)致ntpd更新失敗,然后啟動ntpd服務(wù),該服務(wù)每隔64 s會自動更新一次時間,在局域網(wǎng)條件下時鐘同步誤差范圍為1~10 ms之間。
3 實驗結(jié)果及分析
使用瀏覽器登錄B/S模式嵌入式測試系統(tǒng)。圖6為測試數(shù)據(jù)實時顯示頁面,左側(cè)為動態(tài)數(shù)字顯示,并且對異常數(shù)據(jù)用顏色標識提示,右側(cè)為儀表顯示方式,以更加直觀的方式查看數(shù)據(jù)。圖7為波形圖表顯示頁面,直觀顯示數(shù)據(jù)隨時間變化趨勢。
4 結(jié)束語
本文通過基于嵌入式B/S模式測試系統(tǒng)的構(gòu)建以及基于ARM平臺的測試程序設(shè)計,對其中的服務(wù)器搭建、數(shù)據(jù)庫配置、前后臺數(shù)據(jù)傳輸方式以及未來多測試子系統(tǒng)組網(wǎng)的時鐘同步問題進行了詳細的闡述。從底層數(shù)據(jù)采集到數(shù)據(jù)存儲以及上層數(shù)據(jù)顯示都較好地完成了配電器測試任務(wù),最終提出了一套可行的構(gòu)建嵌入式測試系統(tǒng)方案。本文研究對未來實現(xiàn)B/S模式的分布式遠程測控系統(tǒng)打下了良好基礎(chǔ),具有一定的參考價值。
參考文獻
[1] 呂國勇,史祥龍.基于嵌入式Linux和Ajax技術(shù)的Web異步交互設(shè)計[J].計算機應(yīng)用,2013,33:247-251.
[2] 王寶忠,馬成.基于CGI技術(shù)的嵌入式動態(tài)Web的研究與實現(xiàn)[J].電子設(shè)計工程,2012,20(18):161-163.
[3] 劉利枚,周鮮成,石彪.嵌入式軟件測試系統(tǒng)的設(shè)計與實現(xiàn)[J].國外電子測量技術(shù),2008,27(1):59-61.
[4] 蔡勇,王勇.嵌入式數(shù)據(jù)庫SQLite在測控系統(tǒng)設(shè)計中的應(yīng)用[J].電子測試,2011(10):89-93.
[5] 張振,王曉寧,張元.嵌入式Web服務(wù)器移植與測試[J].電子設(shè)計工程,2010,18(6):1-3.