[摘要]對(duì)于嵌入式系統(tǒng)的外部開發(fā)人員來說,通常使用的交叉調(diào)試工具只能對(duì)一段程序或代碼進(jìn)行調(diào)試,而對(duì)整體系統(tǒng)的運(yùn)行行為和運(yùn)行邏輯無法了解,因此對(duì)一些系統(tǒng)級(jí)行為和邏輯錯(cuò)誤的定位和調(diào)試變的非常困難。針對(duì)這一問題,本文設(shè)計(jì)了一種針對(duì)嵌入式系統(tǒng)的多目標(biāo)機(jī)系統(tǒng)監(jiān)視方法。該方法通過在嵌入式操作系統(tǒng)中插入記錄事件的樁程序,在監(jiān)視系統(tǒng)運(yùn)行過程中將各事件發(fā)生時(shí)間及參數(shù)記錄下來,并將記錄的監(jiān)視數(shù)據(jù)發(fā)送到宿主機(jī)端,由宿主機(jī)端的軟件解析這些數(shù)據(jù),并以圖形化的方式展示出來,直觀地重現(xiàn)嵌入式操作系統(tǒng)的運(yùn)行行為和運(yùn)行邏輯。
[關(guān)鍵詞]嵌入式系統(tǒng);系統(tǒng)監(jiān)視器
1.引言
如今嵌入式系統(tǒng)的應(yīng)用越來越廣泛,對(duì)嵌入式系統(tǒng)開發(fā)工具的需求也越來越多,而一個(gè)功能全面、使用便捷的工具可以很大程度上提高開發(fā)的效率[1][2]。
多目標(biāo)機(jī)系統(tǒng)監(jiān)視器支持對(duì)多目標(biāo)機(jī)系統(tǒng)同時(shí)進(jìn)行監(jiān)視配置、啟動(dòng)、停止、上傳監(jiān)視數(shù)據(jù);支持對(duì)多目標(biāo)機(jī)系統(tǒng)運(yùn)行行為和運(yùn)行邏輯圖形化查看和分析,便于開發(fā)者發(fā)現(xiàn)由多目標(biāo)機(jī)組成的系統(tǒng)其中隱含的運(yùn)行行為及運(yùn)行邏輯的錯(cuò)誤。
2.監(jiān)視器系統(tǒng)結(jié)構(gòu)和組成
該多目標(biāo)機(jī)系統(tǒng)監(jiān)視方法需要的軟件模塊組成見圖1。
圖1 系統(tǒng)監(jiān)視器模塊組成
主要由目標(biāo)機(jī)監(jiān)視控制器、目標(biāo)機(jī)通信管理器、監(jiān)視器數(shù)據(jù)查看器、命令響應(yīng)器、監(jiān)視器和監(jiān)視記錄樁組成。
2.1目標(biāo)機(jī)監(jiān)視控制器
目標(biāo)機(jī)監(jiān)視控制器為用戶提供監(jiān)視控制圖形界面,監(jiān)視控制圖形界面提供的用戶操作有:目標(biāo)機(jī)配置——配置要監(jiān)視的目標(biāo)機(jī),目標(biāo)機(jī)連接——控制目標(biāo)機(jī)通信管理器,配置各目標(biāo)機(jī)監(jiān)視參數(shù)、啟動(dòng)監(jiān)視指定的目標(biāo)機(jī)、停止監(jiān)視指定的目標(biāo)機(jī)、打開查看指定目標(biāo)機(jī)的監(jiān)視數(shù)據(jù)。
其中,配置監(jiān)視參數(shù)、啟動(dòng)監(jiān)視、停止監(jiān)視操作將生成監(jiān)視命令,交由目標(biāo)機(jī)通信管理器向目標(biāo)機(jī)端發(fā)送,并處理來自目標(biāo)機(jī)通信管理器接收到的目標(biāo)機(jī)端的回復(fù)。
最后,打開查看指定目標(biāo)機(jī)的監(jiān)視數(shù)據(jù)操作控制監(jiān)視數(shù)據(jù)查看器將目標(biāo)機(jī)監(jiān)視數(shù)據(jù)打開查看。
2.2目標(biāo)機(jī)通信管理器
目標(biāo)機(jī)通信管理器提供多目標(biāo)機(jī)監(jiān)視操作相關(guān)數(shù)據(jù)包通信能力。相關(guān)數(shù)據(jù)包包括:命令數(shù)據(jù)包(如:連接、監(jiān)視配置、監(jiān)視啟動(dòng)、監(jiān)視停止、監(jiān)視數(shù)據(jù)上傳)、命令回復(fù)包、監(jiān)視數(shù)據(jù)包。目標(biāo)機(jī)通信管理器將目標(biāo)機(jī)監(jiān)視控制器產(chǎn)生的命令轉(zhuǎn)換為命令數(shù)據(jù)包,發(fā)送到命令指定要發(fā)往的目標(biāo)機(jī),接收所有建立了通信連接的目標(biāo)機(jī)的命令回復(fù)數(shù)據(jù)包和監(jiān)視數(shù)據(jù)包,解析接收到的數(shù)據(jù)包得到命令的回復(fù)或監(jiān)視數(shù)據(jù)。
2.3監(jiān)視數(shù)據(jù)查看器
監(jiān)視器數(shù)據(jù)查看器提供監(jiān)視數(shù)據(jù)的圖形化查看、分析能力。它將所有記錄的目標(biāo)機(jī)事件通過圖形化的方式展現(xiàn)給用戶,用戶從監(jiān)視數(shù)據(jù)查看器中,可以查看系統(tǒng)上下文組成、每個(gè)上下文的執(zhí)行行為(信號(hào)量、定時(shí)器、消息隊(duì)列、緩沖、端口等內(nèi)核對(duì)象的操作),上下文調(diào)度等信息。
2.4命令響應(yīng)器
命令響應(yīng)器在目標(biāo)機(jī)端,接收宿主機(jī)端目標(biāo)機(jī)通信管理器發(fā)送的命令數(shù)據(jù)包,向宿主機(jī)端目標(biāo)機(jī)通信管理器發(fā)送回復(fù)數(shù)據(jù)包、監(jiān)視數(shù)據(jù)包。分析接收的命令數(shù)據(jù)包,從而執(zhí)行監(jiān)視控制操作(包括監(jiān)視啟動(dòng)、監(jiān)視停止、監(jiān)視數(shù)據(jù)上傳),并且將執(zhí)行的結(jié)果生成回復(fù)數(shù)據(jù)包,發(fā)往宿主機(jī)端。
2.5監(jiān)視器
監(jiān)視器向命令響應(yīng)器提供監(jiān)視控制操作。包括監(jiān)視啟動(dòng)、監(jiān)視停止、監(jiān)視數(shù)據(jù)上傳。監(jiān)視啟動(dòng)時(shí),創(chuàng)建保存監(jiān)視數(shù)據(jù)的緩沖區(qū),然后創(chuàng)建監(jiān)視記錄頭(內(nèi)容包括:目標(biāo)機(jī)系統(tǒng)的時(shí)間戳頻率、包含的上下文、當(dāng)前上下文等信息),最后打開監(jiān)視記錄開關(guān)。監(jiān)視停止時(shí)關(guān)閉監(jiān)視記錄開關(guān)。監(jiān)視數(shù)據(jù)上傳時(shí),從監(jiān)視緩沖區(qū)中讀出監(jiān)視數(shù)據(jù),然后組織成監(jiān)視數(shù)據(jù)包發(fā)送給宿主機(jī)端,緩沖區(qū)中所有的數(shù)據(jù)讀出上傳完成后,銷毀緩沖區(qū)。
2.6監(jiān)視記錄樁
監(jiān)視記錄樁根據(jù)監(jiān)視記錄開關(guān)的狀態(tài),決定是不是記錄監(jiān)視數(shù)據(jù)到緩沖區(qū)。當(dāng)監(jiān)視記錄開關(guān)打開時(shí),記錄監(jiān)視數(shù)據(jù)到緩沖區(qū),監(jiān)視記錄開關(guān)關(guān)閉時(shí)則不記錄。監(jiān)視記錄樁在記錄監(jiān)視數(shù)據(jù)時(shí),按照定義好的事件格式,事件數(shù)據(jù)項(xiàng)進(jìn)行記錄。
3.系統(tǒng)監(jiān)視方法工作流程
多目標(biāo)機(jī)系統(tǒng)監(jiān)視方法的具體工作流程:
(1)用戶在目標(biāo)機(jī)監(jiān)視控制器中配置要進(jìn)行系統(tǒng)監(jiān)視的目標(biāo)機(jī)。配置參數(shù)包括:目標(biāo)機(jī)名、目標(biāo)機(jī)連接方式、目標(biāo)機(jī)監(jiān)視配置參數(shù)。
(2)用戶在目標(biāo)機(jī)監(jiān)視控制器中進(jìn)行連接操作,目標(biāo)機(jī)通信管理器向所有配置的目標(biāo)機(jī)發(fā)送連接命令數(shù)據(jù)包。
(3)命令響應(yīng)器執(zhí)行連接命令,組織回復(fù)包發(fā)送給宿主機(jī)端。
(4)宿主機(jī)端目標(biāo)機(jī)通信管理器收到目標(biāo)機(jī)回復(fù)數(shù)據(jù)后,和目標(biāo)機(jī)建立起通信連接。
(5)用戶在目標(biāo)機(jī)監(jiān)視控制器中選擇要啟動(dòng)監(jiān)視的目標(biāo)機(jī),進(jìn)行啟動(dòng)監(jiān)視操作,目標(biāo)機(jī)監(jiān)視控制器生成監(jiān)視啟動(dòng)命令,并傳遞給目標(biāo)機(jī)通信管理器。
(6)目標(biāo)機(jī)通信管理器發(fā)送啟動(dòng)命令到目標(biāo)機(jī)端的命令響應(yīng)器。
(7)命令響應(yīng)器執(zhí)行啟動(dòng)命令,控制監(jiān)視器啟動(dòng)監(jiān)視。
(8)嵌入式OS中監(jiān)視記錄樁運(yùn)行過程中的監(jiān)視數(shù)據(jù)記錄到監(jiān)視緩沖區(qū)中。
(9)用戶在目標(biāo)機(jī)監(jiān)視控制器中停止指目標(biāo)機(jī)的監(jiān)視操作,目標(biāo)機(jī)監(jiān)視控制器將用戶停止監(jiān)視操作轉(zhuǎn)換為停止命令和上傳命令,并將命令傳遞給目標(biāo)機(jī)通信管理器。
(10)目標(biāo)機(jī)通信管理器將停止監(jiān)視控制命令發(fā)送給目標(biāo)機(jī)端的命令響應(yīng)器。
(11)命令響應(yīng)器執(zhí)行停止命令,控制監(jiān)視器停止監(jiān)視。
(12)嵌入式OS中的監(jiān)視記錄樁停止記錄監(jiān)視數(shù)據(jù)。
(13)目標(biāo)機(jī)通信管理器將上傳命令發(fā)送給目標(biāo)機(jī)端的命令響應(yīng)器。
(14)命令響應(yīng)器執(zhí)行上傳命令,控制監(jiān)視器取得監(jiān)視數(shù)據(jù)并發(fā)送給目標(biāo)機(jī)通信管理器。
(15)目標(biāo)機(jī)通信管理器接收到監(jiān)視數(shù)據(jù)后將其傳遞給監(jiān)視數(shù)據(jù)查看器。
(16)監(jiān)視數(shù)據(jù)查看器進(jìn)程監(jiān)視數(shù)據(jù)的解析,繪制出系統(tǒng)運(yùn)行行為和運(yùn)行邏輯圖形。
4.監(jiān)視結(jié)果顯示
系統(tǒng)監(jiān)視器監(jiān)視數(shù)據(jù)查看器繪制的系統(tǒng)運(yùn)行行為和邏輯圖形界面如圖2所示。
圖2 監(jiān)視數(shù)據(jù)查看界面
在監(jiān)視數(shù)據(jù)圖形化查看界面中,上方橫軸是時(shí)間軸,左側(cè)縱軸是各任務(wù)或進(jìn)程。圖中的小圖標(biāo),表示在橫軸對(duì)應(yīng)的時(shí)間點(diǎn),對(duì)應(yīng)的任務(wù)或進(jìn)程發(fā)生了圖標(biāo)所表示的事件。比如_worker_task在28.54085時(shí)間點(diǎn),發(fā)生了信號(hào)量釋放事件(三角旗圖標(biāo))。圖中用波浪線、鋸齒線等不同形式的線,表示對(duì)應(yīng)的任務(wù)或進(jìn)程在一個(gè)時(shí)間段里的狀態(tài)。比如p2:user2在圖中窗口時(shí)間段范圍內(nèi)處于就緒狀態(tài)。
在界面上方的工具欄中,可以對(duì)圖像做放大、縮小等操作,還可以選擇對(duì)處理器使用、存儲(chǔ)器使用以表格或圖形方式進(jìn)行查看。
5.結(jié)束語
本文設(shè)計(jì)的多目標(biāo)機(jī)監(jiān)視方法,能夠同時(shí)對(duì)多個(gè)目標(biāo)機(jī)進(jìn)行監(jiān)視,并能夠?qū)δ繕?biāo)機(jī)系統(tǒng)運(yùn)行行為和運(yùn)行邏輯進(jìn)行圖形化查看和分析,為用戶提供了一種便捷有效的分析系統(tǒng)的途徑。
參考文獻(xiàn)
[1]王培進(jìn),李曉路.嵌入式系統(tǒng)集成開發(fā)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn).計(jì)算機(jī)應(yīng)用與軟件,2012(第5期):109-112
[2]粟明,趙克佳,盧凱.嵌入式系統(tǒng)開發(fā)環(huán)境目標(biāo)監(jiān)控器技術(shù)研究.計(jì)算機(jī)應(yīng)用研究,2004(第8期):61-63.
作者簡(jiǎn)介
衛(wèi)進(jìn)(1987-),女,碩士,主要從事軟件與理論方面研究。