???? 本文在介紹軟件可靠性仿真測試平臺的組成及功能的基礎上,以仿真器分系統(tǒng)為例,對平臺在實時測試過程中的一些實現(xiàn)技術進行了研究。
1 仿真測試平臺系統(tǒng)功能及組成框架
整個仿真測試平臺采用分布式結(jié)構,由主控機分系統(tǒng)(以下簡稱為主控機)、仿真器分系統(tǒng)(以下簡稱為仿真器)和激勵器分系統(tǒng)(以下簡稱為激勵器)三個分系統(tǒng)組成,各分系統(tǒng)與被測目標軟件的交聯(lián)關系如圖1所示。其中,主控機是測試平臺的控制中心,它負責生成原始測試數(shù)據(jù),向仿真器、激勵器分發(fā)測試用例,協(xié)調(diào)兩個分系統(tǒng)的工作,并根據(jù)測試狀況控制仿真器和激勵器的工作模式。仿真器和激勵器將主控機傳送過來的測試用例數(shù)據(jù),生成真正的目標軟件可以接收的測試用例數(shù)據(jù)傳送給目標系統(tǒng),同時,仿真器和激勵器負責將自身工作狀態(tài)信息和從目標系統(tǒng)得到的測試結(jié)果數(shù)據(jù)通過底層網(wǎng)絡實時或非實時地傳送回主控機。
圖1 仿真測試平臺的交聯(lián)關系圖
由于目標軟件由匯編語言寫成,內(nèi)部處理過程較為復雜,所以采用黑盒測試方法。目標軟件的處理周期為25 ms,因此在實時測試過程中,需要每25 ms有一組測試用例數(shù)據(jù)由仿真器通過1553B總線,激勵器通過并口同時輸入給目標軟件。仿真器和激勵器不僅需要每25 ms產(chǎn)生目標軟件的輸入數(shù)據(jù),同步向目標軟件發(fā)送數(shù)據(jù),而且仿真器還能接收目標軟件的輸出,并且對輸出數(shù)據(jù)進行相應的實時處理,如結(jié)果數(shù)據(jù)的收集、保存及數(shù)據(jù)的顯示等等。由于整個測試平臺是在非實時、多任務的Win98操作系統(tǒng)上實現(xiàn)的,因此,如何利用Win98的多任務并發(fā)的特性,采用合理的任務調(diào)度策略,在任務處理周期內(nèi),按時完成各種任務,并將多個任務協(xié)調(diào)一致,是整個設計過程中主要應該解決的問題。
在圖1所示的平臺各分系統(tǒng)中,主控機與目標軟件是通過仿真器形成實時閉環(huán)的。仿真器通過測試用例,實時給出目標軟件閉環(huán)運行所需要的交聯(lián)子系統(tǒng)發(fā)出的命令和數(shù)據(jù),使得目標軟件能夠在較為真實的仿真任務剖面和交聯(lián)環(huán)境中運行。因此,仿真器是仿真測試平臺中的一個重要組成部分,仿真器的實時實現(xiàn)方法是整個平臺系統(tǒng)設計的重點。
2 仿真器分系統(tǒng)的功能設計及實時實現(xiàn)技術
2.1 仿真器分系統(tǒng)功能結(jié)構
仿真器分系統(tǒng)是個實時任務系統(tǒng),在整個測試過程的運行模式下,需要并發(fā)處理不同的任務,如數(shù)據(jù)實時存盤、提取、交互式顯示、每25 ms驅(qū)動1553B總線等任務,任務調(diào)度涉及到CPU、內(nèi)存、網(wǎng)絡、硬盤、數(shù)據(jù)結(jié)構、I/O接口等資源,因而合理調(diào)度各個任務,正確分配其所占用的系統(tǒng)資源,是仿真器測試平臺設計的關鍵之一。
為了提高平臺系統(tǒng)的可靠性和故障快速恢復能力,仿真器采用功能模塊化設計方法。不同任務對應的工作模塊工作相對獨立,可以隨時依據(jù)新技術對相應模塊的軟件算法進行更新和擴充,這種設計易于發(fā)揮Win98的多任務的特性,提高平臺系統(tǒng)實時工作的能力。其中,任務調(diào)度管理模塊是仿真器平臺系統(tǒng)的核心,其他各功能模塊的運行都是在管理調(diào)度模塊的統(tǒng)一管理控制下完成的。它與其他任務的功能模塊之間的邏輯調(diào)用關系如圖2所示。
圖2 任務調(diào)度管理模塊調(diào)用關系
在仿真器設計中,除了必要的網(wǎng)卡(和主控機連接)和MBI卡(和目標系統(tǒng)連接)等硬件設備以外,仿真器的各項功能均是通過軟件來完成的,因而系統(tǒng)軟件設計中采用合理的調(diào)度策略,避免操作系統(tǒng)的缺陷,以實現(xiàn)仿真器的功能。
2.2 仿真器分系統(tǒng)實時實現(xiàn)技術
2.2.1 任務調(diào)度管理模塊
從上面的討論知道,仿真器的實時性是通過仿真器的任務調(diào)度管理模塊實現(xiàn)的。任務調(diào)度管理模塊為仿真器分系統(tǒng)的主控模塊,是分系統(tǒng)的全面管理者。該模塊根據(jù)用戶通過仿真器分系統(tǒng)人機接口界面輸入的參數(shù)、顯示過程的控制命令和主控機通過網(wǎng)絡傳送來的控制命令及參數(shù),對并發(fā)執(zhí)行的實時自檢/維護、網(wǎng)絡通信、交聯(lián)仿真數(shù)據(jù)生成、數(shù)據(jù)/狀態(tài)顯示、數(shù)據(jù)記錄、交聯(lián)數(shù)據(jù)驅(qū)動、測試過程分析以及仿真器不同功能模式對應的任務隊列進行管理和調(diào)度,協(xié)調(diào)各模塊的工作,進行各模塊的銜接,實現(xiàn)各線程的管理,完成與目標系統(tǒng)實時交聯(lián)仿真任務。
2.2.2 仿真器分系統(tǒng)任務劃分
由于仿真器分系統(tǒng)是用于目標軟件的實時仿真測試,每個任務都必須根據(jù)目標軟件運行的需要,滿足實時交聯(lián)仿真的定時限制,所以,為保證仿真器的實時性能,根據(jù)任務和平臺系統(tǒng)工作模式的不同,在調(diào)度框架中集中不同的調(diào)度策略,任務調(diào)度涉及到實時任務和普通分時任務的調(diào)度。
按照仿真器所處的運行模式,將其任務劃分為實時任務和非實時任務。
實時任務指在仿真測試過程中,仿真器需要在確定時間內(nèi)完成的任務,包括:
.命令控制(包括測試開始、工作模式切換、驅(qū)動通信接口、測試結(jié)束等);
.與被測目標軟件之間的實時交聯(lián)數(shù)據(jù)驅(qū)動任務;
.與主控機分系統(tǒng)之間的實時網(wǎng)絡通信任務;
.交聯(lián)數(shù)據(jù)實時生成;
.測試數(shù)據(jù)和測試結(jié)果數(shù)據(jù)的記錄和顯示;
.測試結(jié)果數(shù)據(jù)的初步精度分析和狀態(tài)邏輯驗證。
非實時任務指對于任務完成的時間沒有嚴格約束的任務,包括:
.用戶通過界面進行的分系統(tǒng)參數(shù)和有關配置描述;
.分系統(tǒng)初始化及用戶指定分系統(tǒng)自檢和維護;
.測試數(shù)據(jù)的事后回放;
.數(shù)據(jù)庫操作。
為系統(tǒng)任務調(diào)度管理的方便,根據(jù)任務的屬性、等級和處理周期的不同,將實時任務劃分為動態(tài)任務和靜態(tài)任務,靜態(tài)任務又包括長周期任務和短周期任務。
動態(tài)任務指動態(tài)跟蹤系統(tǒng)狀態(tài),根據(jù)實際運行狀況,臨時加入的任務,如實時自檢任務、系統(tǒng)發(fā)生故障時動態(tài)加入的異常處理任務等。
長周期任務指可以在多個時間標簽內(nèi)完成的任務,如有必要,這類任務可在時限還沒有完成就終止。包括顯示任務、記錄任務、從數(shù)據(jù)庫或數(shù)據(jù)文件中讀取數(shù)據(jù)到內(nèi)存的任務。
短周期任務指對任務完成的時間有嚴格的限定,必須在一個時間標簽內(nèi)完成的任務,即在25 ms周期內(nèi),完成對目標軟件的一次驅(qū)動,同時接收目標軟件的對外輸出。包括交聯(lián)數(shù)據(jù)的生成、交聯(lián)數(shù)據(jù)的1553B驅(qū)動、從主控機接收和向主控機發(fā)送測試數(shù)據(jù)信息包、仿真器應答信息包的網(wǎng)絡通信任務等周期性的任務。
上述各類任務在其生命周期內(nèi)一般都包括創(chuàng)建、就緒、掛起、運行、取消和結(jié)束六種狀態(tài),其狀態(tài)轉(zhuǎn)換關系如圖3所示,由總的任務調(diào)度控制器將各任務帶入不同的狀態(tài)。
圖3 任務狀態(tài)轉(zhuǎn)換關系示意圖
2.2.3 仿真器調(diào)度模塊的設計
仿真器對于各類任務采用時間、事件以及數(shù)據(jù)驅(qū)動相結(jié)合的調(diào)度原則進行控制管理。為了提高系統(tǒng)的實時性和適應性,采用了動態(tài)和靜態(tài)調(diào)度策略相結(jié)合、任務發(fā)生的周期和優(yōu)先級相結(jié)合的調(diào)度方式。
在調(diào)度框架中集中不同的調(diào)度策略。在運行模式下:系統(tǒng)測試工作正常,則對于周期性的實時任務采用靜態(tài)生成的調(diào)度策略;在系統(tǒng)發(fā)生故障時,則采用臨時的動態(tài)調(diào)度策略,它根據(jù)系統(tǒng)的運行狀況,實時加入動態(tài)任務,并根據(jù)動態(tài)任務的級別,決定該任務是立即執(zhí)行還是按順序執(zhí)行。隨著故障的排除,取消該任務,系統(tǒng)重新恢復到先前的調(diào)度策略。
仿真器根據(jù)任務運行占用時間的不同,以不同速率來調(diào)度不同模塊,滿足實時驅(qū)動的要求。采用優(yōu)先級調(diào)度和分時調(diào)度相結(jié)合的方式:優(yōu)先級調(diào)度方式即調(diào)度模塊對于每一項任務都賦予了嚴格的優(yōu)先級,按優(yōu)先級的次序從高到低執(zhí)行;分時調(diào)度方式是采用時間片輪轉(zhuǎn)的方式來執(zhí)行各個任務,這種調(diào)度方式多是在終止模式下采用(或在運行模式下,系統(tǒng)已經(jīng)完成短周期的任務,還留有時間余量的情況下)。例如,對于1553B數(shù)據(jù)驅(qū)動和交聯(lián)數(shù)據(jù)生成等短周期任務在每25 ms定時到時串行化執(zhí)行,被賦予了較高優(yōu)先級,而對于顯示和記錄數(shù)據(jù)等長周期任務分時執(zhí)行或交叉執(zhí)行,被賦予了較低優(yōu)先級,以保證能正常驅(qū)動MBI卡。
在優(yōu)先級調(diào)度方式中,采用優(yōu)先級浮動的原則:即根據(jù)系統(tǒng)實時處理任務的不同,按照需要動態(tài)地改變優(yōu)先級。系統(tǒng)在正常運行時,優(yōu)先級不變;當系統(tǒng)發(fā)生嚴重故障時,調(diào)度模塊動態(tài)觸發(fā)異常處理任務,并根據(jù)故障類別和故障被維護的狀況,動態(tài)調(diào)整模塊處理級別。對于影響系統(tǒng)測試的重要模塊,調(diào)度模塊啟動相應的備份儲備模塊,同時將“暫停測試”的申請通過網(wǎng)絡發(fā)送到主控機。這樣,系統(tǒng)就具有了故障恢復能力,實現(xiàn)了關鍵部分的冗余保護,提高了可靠性。
根據(jù)上述設計,在實時測試過程中,仿真器的實時調(diào)度層次模型如圖4所示。
圖4 RUN()模式下實時任務調(diào)度模型示意圖
基于以上的調(diào)度策略,任務調(diào)度管理模塊采用以下方式對各模塊進行調(diào)度:
.中斷方式:當總的任務調(diào)度器監(jiān)控到消息隊列中最高消息到來時,立即申請軟件中斷,或者有硬件中斷申請時,系統(tǒng)立即停止當前執(zhí)行的任務,執(zhí)行相應的中斷處理。
.定時方式:實時測試開始后,定時器每25 ms發(fā)出定時消息,定時將需要發(fā)送的測試用例數(shù)據(jù)送到MBI卡上。
.消息方式:基于Win98消息傳遞機制,由線程調(diào)度方式實現(xiàn)。
.信號量及全局變量方式:總的任務調(diào)度器監(jiān)控到任務啟動的信號量或狀態(tài)量改變后,按任務的等級運行任務。
根據(jù)系統(tǒng)任務調(diào)度管理的方式,將任務消息的處理級別分為三個優(yōu)先級:
①最高級消息:該類消息要求系統(tǒng)立即響應,具有此類優(yōu)先級的模塊在系統(tǒng)實時仿真中處于核心地位。該消息不放到Windows的系統(tǒng)消息隊列中排隊,而是直接送到相應的應用消息隊列中,供應用程序處理。這樣可以避免無節(jié)制的消息循環(huán),保證了消息處理的及時性。
?、?a href="http://www.1cnz.cn/tags/時鐘/" target="_blank">時鐘級消息:由精確定時器產(chǎn)生“定時時間到”的消息。在正常測試過程中,該消息為最高級別。時鐘級的消息主要分配給在實時測試中的數(shù)據(jù)生成模塊和驅(qū)動模塊。
?、燮胀壪ⅲ涸擃愊⒅饕峙浣o用戶接口模塊、記錄模塊等功能模塊。
2.2.4 仿真器關鍵功能模塊的實時性實現(xiàn)技術
①網(wǎng)絡通信模塊:非實時部分采用TCP/IP協(xié)議方式進行網(wǎng)絡傳輸。實時部分利用設置網(wǎng)絡通信緩存區(qū)的方式,從通信結(jié)果上可以部分實現(xiàn)網(wǎng)絡傳輸?shù)膶崟r通信,其關鍵在于緩沖的深度?;蛘卟捎肰XD技術,直接對網(wǎng)卡進行傳輸操作,可以避免由于網(wǎng)絡延遲而影響系統(tǒng)實時性能的缺陷。
②顯示模塊:在實時測試過程中,通過該模塊,可以顯示測試數(shù)據(jù),并且用戶能對測試過程進行控制。在實時測試中,中心任務處理周期為25 ms,在任務周期的空余時間還需要進行其它處理。因此在每25 ms周期內(nèi),留給顯示任務的時間就非常少,另外由于人眼對數(shù)據(jù)變化的敏感程度低于25 ms,因此每50 ms以上進行一次相關數(shù)據(jù)顯示就可以滿足系統(tǒng)的需求。在數(shù)據(jù)顯示中,文本顯示比圖形顯示占用CPU處理時間要少許多。在圖形顯示中,采用高性能的圖形處理算法,可以保證圖形處理的實時性。另外,隨著圖形卡硬件性能的提高,在圖形加速卡性能保證的情況下,系統(tǒng)只需計算圖形描述語句占用CPU的時間,圖形繪制方面的時間可以不給予主要考慮。圖形實時顯示算法還有待進一步研究。
?、劢宦?lián)數(shù)據(jù)1553B驅(qū)動模塊:由于Win98處于安全模式,Win98中的虛擬內(nèi)存地址與實際物理地址并不一致,用戶不易直接訪問硬件的實際物理內(nèi)存地址和I/O口地址。為了滿足實時驅(qū)動MBI卡的需要,通過WinDriver工具軟件,直接映射MBI卡上的實際物理內(nèi)存地址和I/O地址,并將硬件中斷虛擬化,利用WinDriver生成的一系列讀寫內(nèi)存和I/O口地址的函數(shù),用戶就可以直接快速地對硬件進行控制。實驗結(jié)果表明,在Win98應用任務單一的情況下,用戶操作MBI卡的速度同于在DOS下的速度。WinDriver工作原理如圖5所示。
圖5 WinDriver工作原理圖
3 結(jié)束語
實驗結(jié)果表明,上述調(diào)度思想與相關技術綜合運用,很好地滿足了仿真器系統(tǒng)工作的實時性。
評論
查看更多