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