《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 设计应用 > 基于B/S模式的嵌入式系统测试方法与实现
基于B/S模式的嵌入式系统测试方法与实现
2016年电子技术应用第2期
陈 娟1,2,李 元1,李万国1
1.北京航空航天大学 机械工程及自动化学院,北京100083;2.宇航智能控制技术国家级重点实验室,北京100854
摘要: 针对分布式测试系统的研发需求,综合网络通信技术、数据库技术以及嵌入式技术等构建了一种基于B/S(Browser/Server)模式的嵌入式测试系统。通过移植Web服务器Boa、轻量级数据库SQLite、网络时钟同步协议NTP(Network Time Protocol),实现了一个完整的测试系统。系统前台采用实时图形化Web页面显示,使用Ajax异步数据传输与后台进行数据通信,实现了页面局部动态刷新,优化人机交互过程。测试系统通过局域网实验验证,取得了良好的效果,符合预期目标,为今后研发基于B/S模式的嵌入式分布式测试系统打下基础,具有一定的参考价值。
中圖分類號(hào): TP31
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.02.013
中文引用格式: 陳娟,李元,李萬國. 基于B/S模式的嵌入式系統(tǒng)測試方法與實(shí)現(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.
The measurement method and implementation of embedded system based on B/S mode
Chen Juan1,2,Li Yuan1,Li Wanguo1
1.School of Mechanical Engineer and Automation,Beijing University of Aeronautics and Astronautics,Beijing 100083,China; 2.Science and Technology on Aerospace Intelligent Control Laboratory,Beijing 100854,China
Abstract: Based on the purpose of developing a distributed measurement system,construct an embedded measurement system based on B/S mode which combines network communication technology, database technology and embedded technology. By transplanting the lightweight Boa as embedded web server, transplanting lightweight SQLite as a testing database, transplanting NTP(Network Time Protocol) to synchronization system time,realized a completely distributed test system based on B/S mode. The front of the system using real-time graphics web page display, using Ajax(Asynchronous JavaScript And XML) asynchronous data transmission with the back of the system, so as to realize local dynamic refresh of the web page and optimize the process of human-computer interaction. The measurement system is verified in LAN and it is helpful to develop embedded distributed measurement system based on B/S mode in the future.
Key words : embedded test system;embedded server;database;Ajax asynchronous interaction;CGI

0 引言

    伴隨數(shù)字信息技術(shù)高速發(fā)展,嵌入式系統(tǒng)設(shè)備數(shù)量已經(jīng)遠(yuǎn)超過通用計(jì)算機(jī),后PC時(shí)代已經(jīng)到來。嵌入式系統(tǒng)設(shè)備廣泛服務(wù)于網(wǎng)絡(luò)通信、消費(fèi)電子、工業(yè)控制、測控等多個(gè)領(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ù)器的負(fù)擔(dān),提高了客戶端與服務(wù)器之間的交互速度。劉利枚、周鮮成等人對(duì)嵌入式軟件測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了探索,提出了一種實(shí)用的嵌入式軟件動(dòng)態(tài)測試系統(tǒng)的結(jié)構(gòu)框架[3]。蔡勇、王勇等人基于嵌入式數(shù)據(jù)庫SQLite3.0技術(shù)設(shè)計(jì)了測控系統(tǒng),分析了嵌入式數(shù)據(jù)庫的特點(diǎn)和關(guān)鍵技術(shù),著重研究了應(yīng)用方式和移植方法[4]。張振、王小寧等人對(duì)嵌入式Web服務(wù)器Boa的移植與應(yīng)用進(jìn)行了研究,并實(shí)現(xiàn)了其在控制領(lǐng)域的遠(yuǎn)程管理[5]。本文在前人的技術(shù)基礎(chǔ)上進(jìn)行綜合、擴(kuò)展,提出了一套較為成熟的基于B/S測控模式的嵌入式軟件架構(gòu),并對(duì)其中軟件的實(shí)現(xiàn)及移植過程進(jìn)行了較為全面的探討和總結(jié),最終提供一套具體可行的實(shí)現(xiàn)方案。

1 整體結(jié)構(gòu)

    系統(tǒng)采用B/S軟件架構(gòu)模式,Server端為嵌入式測試系統(tǒng),具備Web服務(wù)和數(shù)據(jù)庫存儲(chǔ)能力,Browser端為符合W3C的標(biāo)準(zhǔn)瀏覽器。

    用戶通過Web頁面登錄至服務(wù)器后發(fā)出配置、測試等控制命令;Server響應(yīng)用戶的請(qǐng)求,調(diào)用對(duì)應(yīng)的CGI服務(wù)程序,并采用Ajax異步數(shù)據(jù)傳輸?shù)姆绞綄y試結(jié)果動(dòng)態(tài)返回至用戶Web頁,前端采用波形曲線、指針等多種形式展現(xiàn)數(shù)據(jù)。

1.1 硬件結(jié)構(gòu)

    系統(tǒng)硬件結(jié)構(gòu)分為4個(gè)部分:嵌入式測試系統(tǒng)、交叉編譯系統(tǒng)、被測對(duì)象配電器和時(shí)鐘同步系統(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é)議來進(jìn)行系統(tǒng)調(diào)試、程序傳輸以及與下位機(jī)進(jìn)行通信。嵌入式測試系統(tǒng)繼電器模塊、AD轉(zhuǎn)換模塊與被測對(duì)象配電器通過兩條通信電纜相連,系統(tǒng)產(chǎn)生激勵(lì)并讀取配電器返回的測試結(jié)果。嵌入式測試系統(tǒng)通過NTP協(xié)議與外部的時(shí)鐘服務(wù)器同步,可為今后擴(kuò)展為分布式測試系統(tǒng)提供統(tǒng)一時(shí)鐘校對(duì)服務(wù)。系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

qrs3-t1.gif

1.2 軟件結(jié)構(gòu)

    測試系統(tǒng)軟件采用B/S架構(gòu)模式,軟件分為3層結(jié)構(gòu)進(jìn)行設(shè)計(jì)。整個(gè)結(jié)構(gòu)分為上層、中間層和底層3部分:上層為用戶接口界面,負(fù)責(zé)接受用戶指令、顯示動(dòng)態(tài)數(shù)據(jù)等;中間層由Web服務(wù)器和數(shù)據(jù)庫構(gòu)成,負(fù)責(zé)提供Web服務(wù)、數(shù)據(jù)存儲(chǔ)等功能;底層由硬件驅(qū)動(dòng)程序、測試應(yīng)用程序構(gòu)成,提供底層函數(shù)調(diào)用。

2 功能及實(shí)現(xiàn)

    根據(jù)上文所述硬件結(jié)構(gòu)、軟件架構(gòu),設(shè)計(jì)并實(shí)現(xiàn)測試系統(tǒng)的各部分功能。以下就本設(shè)計(jì)的關(guān)鍵模塊進(jìn)行詳細(xì)說明。系統(tǒng)功能模塊設(shè)計(jì)如圖2。

qrs3-t2.gif

2.1 用戶界面設(shè)計(jì)

    用戶界面設(shè)計(jì)主要分為4個(gè)功能模塊:用戶身份驗(yàn)證模塊、測試設(shè)備基本信息瀏覽與配置模塊、動(dòng)態(tài)數(shù)據(jù)查看模塊和歷史數(shù)據(jù)瀏覽模塊。

    用戶身份驗(yàn)證模塊加強(qiáng)了系統(tǒng)安全性,分為普通用戶和管理員兩種權(quán)限模式?;拘畔g覽模塊與配置模塊將調(diào)用底層CGI程序獲取設(shè)備基本信息,如服務(wù)器IP地址、客戶端IP地址、主機(jī)名稱、內(nèi)核版本等信息;動(dòng)態(tài)數(shù)據(jù)顯示模塊采用開源的Flot Javascript插件,將數(shù)據(jù)以數(shù)字、儀表、曲線多種方式來呈現(xiàn)。前臺(tái)與后臺(tái)數(shù)據(jù)交換采用了Ajax異步通信技術(shù)來實(shí)現(xiàn)動(dòng)態(tài)更新頁面;歷史數(shù)據(jù)查看模塊調(diào)用后臺(tái)數(shù)據(jù)庫歷史數(shù)據(jù)后采用Ajax異步通信更新前端頁面,并自動(dòng)生成CVS格式的歷史數(shù)據(jù)文件,用戶下載后可用于數(shù)據(jù)分析。

2.2 Web服務(wù)器、數(shù)據(jù)庫設(shè)計(jì)

    為構(gòu)建B/S模式測試系統(tǒng),系統(tǒng)必須具備提供Web服務(wù)能力和實(shí)驗(yàn)數(shù)據(jù)管理能力。本節(jié)詳細(xì)介紹服務(wù)器和數(shù)據(jù)庫的實(shí)現(xiàn)過程。

2.2.1 嵌入式Web服務(wù)器設(shè)計(jì)

    目前在嵌入式設(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目錄主要存儲(chǔ)數(shù)據(jù)庫文件,包括歷史數(shù)據(jù)表、用戶密碼數(shù)據(jù)表、設(shè)備基本信息表。分類目錄設(shè)計(jì)更利于文檔的編輯和管理。

qrs3-t3.gif

2.2.2 嵌入式數(shù)據(jù)庫設(shè)計(jì)

    嵌入式設(shè)備中常用的數(shù)據(jù)庫有mSQL、SQLiteDB等。經(jīng)對(duì)比選擇開源數(shù)據(jù)庫SQLiteDB,它支持?jǐn)?shù)據(jù)庫大小為2 TB,足夠小,全部代碼250 KB,比目前流行的大多數(shù)數(shù)據(jù)庫對(duì)數(shù)據(jù)的操作要快。

    移植步驟如下:(1)編譯源碼包生成可執(zhí)行文件目錄。(2)將編譯生成的bin、include、lib目錄通過NFS文件系統(tǒng)復(fù)制至對(duì)應(yīng)嵌入式文件系統(tǒng)下。

    根據(jù)需求分析設(shè)計(jì)數(shù)據(jù)庫實(shí)體對(duì)象,分為用戶實(shí)體、設(shè)備基本信息實(shí)體、歷史數(shù)據(jù)測試信息實(shí)體,最終設(shè)計(jì)對(duì)應(yīng)的數(shù)據(jù)表。圖4給出用戶實(shí)體E-R圖。

qrs3-t4.gif

2.3 CGI、Ajax異步通信設(shè)計(jì)

    為了加強(qiáng)系統(tǒng)頁面與用戶的動(dòng)態(tài)交互性,本系統(tǒng)采用CGI與Ajax的解決方案。使用CGI技術(shù)在服務(wù)器端發(fā)布動(dòng)態(tài)網(wǎng)頁,與Ajax的XMLHttpRequest組件進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)了動(dòng)態(tài)Web功能,使網(wǎng)頁局部自動(dòng)刷新,無須手動(dòng)更新網(wǎng)頁。這是本系統(tǒng)前臺(tái)與后臺(tái)數(shù)據(jù)通信的主要方式。

qrs3-t5.gif

    工作流程如下:(1)用戶通過Web瀏覽器訪問嵌入式服務(wù)器中部署好的測試頁面,服務(wù)器響應(yīng)瀏覽器請(qǐng)求,返回內(nèi)嵌有JavaScript腳本的Web頁面。(2)瀏覽器解析返回頁面代碼并顯示,執(zhí)行內(nèi)嵌的JavaScript腳本程序。(3)用戶在瀏覽器輸入的數(shù)據(jù)首先由JavaScript程序預(yù)處理,然后通過XMLHttp Request對(duì)象向服務(wù)器發(fā)出異步請(qǐng)求。服務(wù)器解析請(qǐng)求參數(shù)后調(diào)用底層相應(yīng)驅(qū)動(dòng)程序進(jìn)行測試或存取數(shù)據(jù)庫,并將獲取的數(shù)據(jù)以XML格式返回給瀏覽器。(4)瀏覽器通過responseXML方法獲得數(shù)據(jù),然后通過DOM文檔對(duì)象模型來更新用戶界面。

2.4 測試系統(tǒng)時(shí)鐘同步設(shè)計(jì)

    以上討論的是單測試系統(tǒng)組網(wǎng)情況,而B/S架構(gòu)可搭建分布式測試系統(tǒng)。在分布式系統(tǒng)中, 常常需要一個(gè)全局時(shí)間, 用來確定系統(tǒng)中各種事件發(fā)生的先后、協(xié)調(diào)各種消息的傳輸、控制和監(jiān)視系統(tǒng)的狀態(tài),這就需要對(duì)系統(tǒng)中各個(gè)部件進(jìn)行時(shí)鐘同步,保障局部時(shí)間統(tǒng)一。

2.4.1 網(wǎng)絡(luò)時(shí)間同步協(xié)議

    常用的網(wǎng)絡(luò)時(shí)間同步協(xié)議主要有NTP(Net Work Protocol)、SNTP(Simple Net Work Protocol)以及PTP(Precision Time Protocol)等,表1為三者綜合比較。

qrs3-b1.gif

    考慮協(xié)議的同步時(shí)間精度及其實(shí)現(xiàn)的難易度,決定采用NTP作為測試網(wǎng)絡(luò)中的時(shí)鐘同步協(xié)議。NTP時(shí)間同步模式分為4種:客戶端/服務(wù)器模式、對(duì)等體模式、廣播模式、組播模式。系統(tǒng)采用客戶端/服務(wù)器模式。

2.4.2 設(shè)計(jì)方案

    首先構(gòu)建測試網(wǎng)絡(luò),采用一臺(tái)Windows7操作系統(tǒng)的主機(jī)作為時(shí)鐘源服務(wù)器,兩臺(tái)嵌入式測試設(shè)備作為被同步對(duì)象。3個(gè)節(jié)點(diǎn)由路由器連接,構(gòu)成局域測試網(wǎng)絡(luò)。

    其次配置時(shí)鐘源服務(wù)器、移植NTP協(xié)議至嵌入式測試設(shè)備。(1)對(duì)于Windows時(shí)鐘服務(wù)器只需更改注冊(cè)表相應(yīng)參數(shù),使其對(duì)外提供NTP服務(wù)。(2)嵌入式測試系統(tǒng)將作為NTP協(xié)議的Client,首先需要移植NTP協(xié)議。其次在配置文件ntp.conf中添加語句server 192.168.1.131,根據(jù)具體IP參數(shù)設(shè)置時(shí)鐘服務(wù)器的IP地址。(3)將嵌入式系統(tǒng)ntpd設(shè)置為開機(jī)自啟動(dòng)服務(wù),在/etc/init.d/rcS添加如下語句:ntpdate 192.168.1.131;/etc/init.d/ntpd。首先ntpdate將行一次時(shí)間校正,以防止服務(wù)器和客戶端時(shí)間誤差太大導(dǎo)致ntpd更新失敗,然后啟動(dòng)ntpd服務(wù),該服務(wù)每隔64 s會(huì)自動(dòng)更新一次時(shí)間,在局域網(wǎng)條件下時(shí)鐘同步誤差范圍為1~10 ms之間。

3 實(shí)驗(yàn)結(jié)果及分析

    使用瀏覽器登錄B/S模式嵌入式測試系統(tǒng)。圖6為測試數(shù)據(jù)實(shí)時(shí)顯示頁面,左側(cè)為動(dòng)態(tài)數(shù)字顯示,并且對(duì)異常數(shù)據(jù)用顏色標(biāo)識(shí)提示,右側(cè)為儀表顯示方式,以更加直觀的方式查看數(shù)據(jù)。圖7為波形圖表顯示頁面,直觀顯示數(shù)據(jù)隨時(shí)間變化趨勢(shì)。

qrs3-t6.gif

qrs3-t7.gif

4 結(jié)束語

    本文通過基于嵌入式B/S模式測試系統(tǒng)的構(gòu)建以及基于ARM平臺(tái)的測試程序設(shè)計(jì),對(duì)其中的服務(wù)器搭建、數(shù)據(jù)庫配置、前后臺(tái)數(shù)據(jù)傳輸方式以及未來多測試子系統(tǒng)組網(wǎng)的時(shí)鐘同步問題進(jìn)行了詳細(xì)的闡述。從底層數(shù)據(jù)采集到數(shù)據(jù)存儲(chǔ)以及上層數(shù)據(jù)顯示都較好地完成了配電器測試任務(wù),最終提出了一套可行的構(gòu)建嵌入式測試系統(tǒng)方案。本文研究對(duì)未來實(shí)現(xiàn)B/S模式的分布式遠(yuǎn)程測控系統(tǒng)打下了良好基礎(chǔ),具有一定的參考價(jià)值。

參考文獻(xiàn)

[1] 呂國勇,史祥龍.基于嵌入式Linux和Ajax技術(shù)的Web異步交互設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2013,33:247-251.

[2] 王寶忠,馬成.基于CGI技術(shù)的嵌入式動(dòng)態(tài)Web的研究與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2012,20(18):161-163.

[3] 劉利枚,周鮮成,石彪.嵌入式軟件測試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].國外電子測量技術(shù),2008,27(1):59-61.

[4] 蔡勇,王勇.嵌入式數(shù)據(jù)庫SQLite在測控系統(tǒng)設(shè)計(jì)中的應(yīng)用[J].電子測試,2011(10):89-93.

[5] 張振,王曉寧,張?jiān)?嵌入式Web服務(wù)器移植與測試[J].電子設(shè)計(jì)工程,2010,18(6):1-3.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。