999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Keil C51的嵌入式軟件外設(shè)虛擬化設(shè)計(jì)與實(shí)現(xiàn)

2023-04-26 08:21:36宋雷軍魏冬冬于清華
關(guān)鍵詞:指令

申 臻,宋雷軍,魏冬冬,于清華,劉 濤

(上海航天電子技術(shù)研究所,上海 201109)

0 引言

8051單片機(jī)已在航空航天控制領(lǐng)域廣泛應(yīng)用,需要測(cè)評(píng)的嵌入式軟件數(shù)量逐年增多。軟件測(cè)試又是保障軟件安全、正確、完整的關(guān)鍵環(huán)節(jié)[1]。測(cè)試人員使用被測(cè)件的硬件平臺(tái)完成測(cè)試,通常會(huì)面臨兩個(gè)問題:1)重大科研或者重要型號(hào)項(xiàng)目的物理環(huán)境,難以為測(cè)試工作提供足夠的使用時(shí)間[2];2)不能執(zhí)行可能引起物理環(huán)境破壞的異常測(cè)試,測(cè)試的覆蓋性得不到保證[3]。面對(duì)只有軟件源代碼,實(shí)物測(cè)試環(huán)境不具備、故障測(cè)試用例無(wú)法執(zhí)行的測(cè)評(píng)任務(wù),如何提供有效測(cè)試環(huán)境成為軟件測(cè)評(píng)單位的難題。

編譯軟件Keil C51(美國(guó)Keil Software公司開發(fā))為51系列單片機(jī)程序[4]提供開發(fā)調(diào)試環(huán)境,涵蓋編輯、編譯、連接、調(diào)試、仿真等整個(gè)開發(fā)流程。在測(cè)試中,通過(guò)Keil編譯被測(cè)試的嵌入式軟件(以下簡(jiǎn)稱為“被測(cè)件”)代碼,并提供被測(cè)件運(yùn)行的仿真環(huán)境。基于Keil提供的高級(jí)仿真接口(AGSI,advanced generic simulator interface)[5]自研全數(shù)字測(cè)試平臺(tái)(以下簡(jiǎn)稱“測(cè)試平臺(tái)”)模擬芯片指令[6],實(shí)現(xiàn)被測(cè)件的仿真運(yùn)行、外圍激勵(lì)注入、外設(shè)硬件接口模擬、覆蓋率統(tǒng)計(jì)等。

基于以上背景,Keil C51為被測(cè)件提供運(yùn)行環(huán)境;測(cè)試平臺(tái)提供虛擬化接口、外圍激勵(lì)環(huán)境[7],實(shí)現(xiàn)測(cè)試用例執(zhí)行、故障注入、邊界測(cè)試以及測(cè)試結(jié)果的觀察。測(cè)試平臺(tái)與Keil之間通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議(UDP,user datagram protocol)完成數(shù)據(jù)交互[8]。

本文基于Keil C51及測(cè)試平臺(tái),完成被測(cè)件外設(shè)的虛擬化,生成可在測(cè)試平臺(tái)上運(yùn)行的可復(fù)用模塊。虛擬化外設(shè)包括:1553B總線、模數(shù)轉(zhuǎn)換 (AD,analog digital)采集、輸入/輸出(I/O,input/output)數(shù)據(jù)、RS422總線。測(cè)評(píng)人員通過(guò)測(cè)試平臺(tái)選擇被測(cè)件運(yùn)行所需的虛擬化外設(shè)模塊,構(gòu)建全數(shù)字測(cè)試環(huán)境,實(shí)現(xiàn)被測(cè)件運(yùn)行過(guò)程的可控,內(nèi)存、寄存器信息的可改。最后,以開發(fā)某電源下位機(jī)測(cè)試平臺(tái)為例,完成故障注入、測(cè)試用例執(zhí)行、測(cè)試結(jié)果觀測(cè),驗(yàn)證虛擬化外設(shè)在嵌入式軟件測(cè)試過(guò)程中的有效性和可靠性。

1 系統(tǒng)結(jié)構(gòu)及原理

嵌入式軟件測(cè)試需要具備兩個(gè)條件:1)嵌入式軟件的運(yùn)行環(huán)境[9];2)測(cè)試激勵(lì)注入及嵌入式軟件輸出數(shù)據(jù)的解析與顯示[10]。虛擬化的外設(shè)、通訊中間件、Keil,三者關(guān)系結(jié)構(gòu)如圖1所示。測(cè)試平臺(tái)的上位機(jī)部分,完成測(cè)試激勵(lì)注入以及接收、解析、顯示嵌入式軟件輸出的數(shù)據(jù);測(cè)試平臺(tái)的下位機(jī)部分,基于AGSI實(shí)現(xiàn)嵌入式軟件運(yùn)行時(shí)內(nèi)存、寄存器讀寫監(jiān)控、數(shù)據(jù)同步、觸發(fā)中斷、UDP通信等;Keil C51的uVision版本提供Windows下的集成開發(fā)環(huán)境(IDE,integrated development environment),實(shí)現(xiàn)嵌入式軟件的編譯、調(diào)試、運(yùn)行[11-13]。本文重點(diǎn)介紹1553B虛擬化、AD采集虛擬化、RS422虛擬化、I/O虛擬化。

圖1 測(cè)試平臺(tái)架構(gòu)

嵌入式軟件運(yùn)行過(guò)程會(huì)響應(yīng)不同中斷源,CPU檢測(cè)到中斷請(qǐng)求,執(zhí)行中斷服務(wù)程序做相應(yīng)的處理。測(cè)試平臺(tái)根據(jù)不同中斷源,更改對(duì)應(yīng)寄存器地址中的值,Keil內(nèi)核監(jiān)測(cè)到特殊寄存器值更改時(shí)觸發(fā)中斷,嵌入式軟件進(jìn)入中斷服務(wù)程序。其中特殊寄存器包括:串行口控制寄存器(SCON,serial control)、中斷開發(fā)/禁止(IE,interrupt enable)、P0口、P1口、P2口、P3口(8bit分別代表不同的中斷源,如P3.2為外部中斷INT0,P3.3為外部中斷INT1)等。對(duì)于中斷方式為電平觸發(fā)、邊沿觸發(fā),測(cè)試平臺(tái)可向P3口對(duì)應(yīng)bit位寫入高電平、低電平、上升沿、下降沿,實(shí)現(xiàn)中斷的觸發(fā)。

測(cè)試平臺(tái)實(shí)現(xiàn)對(duì)被測(cè)件內(nèi)存、寄存器的讀寫仿真,模擬總線1553B、AD、RS422、I/O接口等外設(shè)與被測(cè)件交互數(shù)據(jù)的過(guò)程。仿真過(guò)程如下:

1)上位機(jī)監(jiān)控被測(cè)件需要向外設(shè)寫數(shù)據(jù)的全部地址。當(dāng)Keil軟核識(shí)別到被測(cè)件運(yùn)行至向外設(shè)輸出數(shù)據(jù)處(即被測(cè)件寫地址操作),虛擬軟核觸發(fā)下位機(jī)中的寫回調(diào)函數(shù),通知下位機(jī)此時(shí)被測(cè)件向哪個(gè)地址寫入何值。下位機(jī)將收到的地址值及數(shù)據(jù),通過(guò)UDP發(fā)送給上位機(jī)程序,上位機(jī)收到地址及數(shù)據(jù)完成數(shù)據(jù)解析與界面顯示等后續(xù)處理。實(shí)現(xiàn)嵌入式軟件內(nèi)存、寄存器寫地址動(dòng)作的仿真。

2)上位機(jī)監(jiān)控被測(cè)件需要從外設(shè)讀數(shù)據(jù)的全部地址。當(dāng)Keil軟核識(shí)別到被測(cè)件運(yùn)行至從外設(shè)讀取數(shù)據(jù)處(即被測(cè)件讀地址操作),虛擬軟核觸發(fā)下位機(jī)中的讀回調(diào)函數(shù),通知下位機(jī)當(dāng)前被測(cè)件讀取的地址值。下位機(jī)將收到的地址值,通過(guò)UDP發(fā)送給上位機(jī)程序。上位機(jī)將虛擬外設(shè)向該地址寫入的模擬數(shù)據(jù),通過(guò)UDP發(fā)送給下位機(jī)通訊接口,使得被測(cè)件采集到上位機(jī)寫入的數(shù)據(jù)。實(shí)現(xiàn)嵌入式軟件內(nèi)存、寄存器讀地址動(dòng)作的仿真。

2 外設(shè)虛擬化設(shè)計(jì)與實(shí)現(xiàn)

測(cè)試平臺(tái)的上位機(jī)部分主要包括上位機(jī)界面和虛擬外設(shè)。上位機(jī)界面分為輸入數(shù)據(jù)、輸出數(shù)據(jù)兩大部分:1)輸入數(shù)據(jù)部分,測(cè)試人員根據(jù)測(cè)試需求設(shè)置仿真數(shù)據(jù),通過(guò)虛擬外設(shè)將仿真數(shù)據(jù)發(fā)送給被測(cè)件。測(cè)試人員可設(shè)置不同的測(cè)試數(shù)據(jù),完成被測(cè)件的邊界測(cè)試、故障測(cè)試,保障測(cè)試充分性;2)輸出數(shù)據(jù)部分,實(shí)時(shí)顯示被測(cè)件運(yùn)行過(guò)程中輸出數(shù)據(jù)的解析及狀態(tài)顯示,供測(cè)試人員分析測(cè)試結(jié)果。

虛擬外設(shè)將測(cè)試人員在上位機(jī)界面設(shè)置的仿真數(shù)據(jù),轉(zhuǎn)換為滿足外設(shè)特定格式的數(shù)據(jù)幀,將轉(zhuǎn)換后的數(shù)據(jù)幀發(fā)送給被測(cè)件,實(shí)現(xiàn)測(cè)試激勵(lì)的注入。同時(shí),虛擬外設(shè)接收被測(cè)件運(yùn)行過(guò)程中輸出的數(shù)據(jù),轉(zhuǎn)交給上位機(jī)界面,完成數(shù)據(jù)的解析、顯示、存儲(chǔ)等處理。

其中,虛擬外設(shè)的設(shè)計(jì)與實(shí)現(xiàn)主要包括:總線1553B虛擬化、AD采集虛擬化、總線RS422虛擬化、被測(cè)件I/O接收虛擬化。

2.1 總線1553B虛擬化設(shè)計(jì)與實(shí)現(xiàn)

開展總線1553B虛擬化工作之前,需要研究1553B總線的物理實(shí)現(xiàn)邏輯,分析開發(fā)測(cè)試平臺(tái)需要仿真1553B總線的方法及內(nèi)容。本小節(jié)首先介紹測(cè)試平臺(tái)所關(guān)注的1553B總線簡(jiǎn)介、1553B物理實(shí)現(xiàn)邏輯。其次,根據(jù)總線1553B物理實(shí)現(xiàn)邏輯的研究,設(shè)計(jì)并實(shí)現(xiàn)1553B中總線控制器(BC,bus controller)、遠(yuǎn)程終端(RT,remote terminal)的仿真。

2.1.1 1553B總線簡(jiǎn)介

1553B出自美軍標(biāo)準(zhǔn)MIL-TD-1553B,原為美軍航空電子綜合通信的標(biāo)準(zhǔn),全稱為“飛機(jī)內(nèi)部時(shí)分制指令響應(yīng)式多路傳輸數(shù)據(jù)總線”[14]。1553B為基于消息(Message)的通信協(xié)議,每條消息的最大信息量32字,分為命令字、數(shù)據(jù)字、狀態(tài)字,每類字長(zhǎng)20 bit(有效數(shù)據(jù)16 bit),每個(gè)字的前3位為單字的同步字頭,最后1位是奇偶校驗(yàn)位[15]。命令字位于每條消息的起始部分,其內(nèi)容決定消息的特征與標(biāo)識(shí),狀態(tài)字只能由RT發(fā)出,其內(nèi)容表征RT向BC發(fā)出的有效命令的反饋,BC根據(jù)狀態(tài)字內(nèi)容決定下一步操作。數(shù)據(jù)字支持RT->BC、BC->RT、RT->RT傳輸數(shù)據(jù)[16],具體字內(nèi)容如圖2所示。

圖2 1553B總線字格式

1553B總線采用指令/響應(yīng)型通信協(xié)議,包括3種終端:總線控制器BC、遠(yuǎn)程終端RT、總線監(jiān)視器(MT,monitor terminal)。傳輸?shù)男畔⒏袷接蠦C->RT、RT->BC、RT->RT、廣播方式和系統(tǒng)控制方式,且全部在BC的參與下完成。1553B總線傳輸消息的標(biāo)準(zhǔn)過(guò)程為:BC向某RT發(fā)送接收/發(fā)送指令,RT在給定的響應(yīng)時(shí)間范圍內(nèi)發(fā)回一個(gè)狀態(tài)字,并執(zhí)行消息的接收/發(fā)送[17]。消息傳輸格式如圖3所示。其中*表示響應(yīng)時(shí)間,范圍是4.0~12.0 μs,表示消息間隔時(shí)間,規(guī)定>4 μs。

圖3 消息傳輸格式

2.1.2 1553B物理實(shí)現(xiàn)邏輯研究

1553B實(shí)現(xiàn)虛擬化,完成與被測(cè)件數(shù)據(jù)、指令交互,需要清晰的梳理出1553B物理實(shí)現(xiàn)邏輯。在1553B總線簡(jiǎn)介中指出3種終端:BC、RT、MT,其中BC、RT完成總線指令、總線數(shù)據(jù)的收發(fā)。本段著重介紹BC、RT的物理邏輯。

RT存儲(chǔ)器結(jié)構(gòu)在非增強(qiáng)模式和增強(qiáng)模式下,有如表1所示幾個(gè)區(qū)域均被設(shè)置為專用區(qū)。其他區(qū)域?yàn)閿?shù)據(jù)塊等。RT查找表實(shí)現(xiàn)將TX/RX/BCST子地址對(duì)應(yīng)的數(shù)據(jù)塊映射到共享RAM區(qū)的機(jī)制。可對(duì)單獨(dú)子地址所指向的存儲(chǔ)空間進(jìn)行讀寫操作,對(duì)廣播、接收、發(fā)送數(shù)據(jù)分離處理,實(shí)現(xiàn)安全、獨(dú)立的存取數(shù)據(jù)。RT指令堆棧的長(zhǎng)度可設(shè)為125字、512字、1 024字、2 048字。

1553B采用雙緩存機(jī)制,對(duì)應(yīng)查找表A、B。每個(gè)查找表分4塊:32個(gè)發(fā)送子地址、32個(gè)接收子地址、32個(gè)廣播子地址、32個(gè)子地址控制字。RT查找表具體內(nèi)容如表2所示。

表1 RT存儲(chǔ)器機(jī)構(gòu)固定部分

表2 RT查找表

子地址控制字中存儲(chǔ)管理器2、存儲(chǔ)管理器1、存儲(chǔ)管理器0(MM,memery management)3 bit的取值,設(shè)置每次發(fā)送、接收或廣播數(shù)據(jù)的長(zhǎng)度,長(zhǎng)度可設(shè)置為128字、256字、512字、1 024字、4 096字及8 192字。1553B虛擬化設(shè)計(jì)中要支持根據(jù)子地址控制字設(shè)置收發(fā)緩存大小[18]。

在1553B虛擬化時(shí),根據(jù)總線指令的收發(fā)子地址,對(duì)應(yīng)查找表查詢到該子地址對(duì)應(yīng)的內(nèi)存存儲(chǔ)起始地址。接收到的數(shù)據(jù)被寫入由查找表指針指向的數(shù)據(jù)塊,需要發(fā)送的數(shù)據(jù)從查找表指針指向的數(shù)據(jù)塊取出并發(fā)送。

2.1.3 BC虛擬化實(shí)現(xiàn)

1553B的BC虛擬化需要仿真上述“物理實(shí)現(xiàn)邏輯研究”中指出的1553B初始化、查詢查找表、讀寫子地址對(duì)應(yīng)存儲(chǔ)區(qū)等。仿真BC2RT數(shù)據(jù)、BC2RT指令、RT2BC數(shù)據(jù)、RT2BC指令等數(shù)據(jù)、指令的交互過(guò)程。使用共享內(nèi)存模擬查找表及數(shù)據(jù)塊的存儲(chǔ)邏輯。定義兩個(gè)枚舉結(jié)構(gòu)體Enum1553B_Channel_Num、EnumCommand分別表示AB區(qū)、BC指令類型,對(duì)應(yīng)代碼如下所示:

public enum Enum1553B_Channel_Num{

ChannelA = 0,

ChannelB = 1

}

public enum EnumCommand{

BC2RT,

RT2BC,

RT2RT,

Broadcast,

RT2RTs,

ModeCode,

BroadcastModeCode,

NoUsed,

Error

}

定義BC仿真類BcHelper,完成1553B總線的初始化。初始化包括:映射的內(nèi)存地址StartAddr、1553B指令地址BcCmdAddr,1553B相關(guān)寄存器地址映射(RT指令堆棧指針A、RT指令堆棧指針B、傳送矢量字、數(shù)據(jù)同步、查找表A起始地址、查找表B起始地址、發(fā)送查找指針表、接收查找指針表、廣播查找指針表、子地址控制字表等),初始化內(nèi)容如下所示:

public static EnumIntName IntName = EnumIntName.NoInt;

// BC模擬器地址映射

public static UInt32 StartAddr = 0; //映射的mem地址

public static UInt16 BcCmdAddr = 0; //映射的1553B指令地址

//增強(qiáng)型1553B寄存器地址映射

private static UInt32 AddressStackA = 0; //堆棧

public static UInt32 AddressRtCommandStackPointerA = 0x100;

public static UInt32 AddressRtCommandStackPointerB = 0x104;

private static UInt32 AddressTransmitVetcorWord = 0x120;

private static UInt32 AddressSynchronizeWithData = 0x111;

private static UInt32 AddressReceiveLookupPointerTableA = 0x140;

private static UInt32 AddressReceiveLookupPointerTableB = 0x1c0;

private static UInt32 AddressTransmitLookupPointerTableA = 0x160;

private static UInt32 AddressTransmitLookupPointerTableB = 0x1e0;

private static UInt32 AddressBroadcastLookupPointerTableA = 0x180;

private static UInt32 AddressBroadcastLookupPointerTableB = 0x200;

private static UInt32 AddressSubaddressControlWordTableA = 0x1a0;

private static UInt32 AddressSubaddressControlWordTableB = 0x220;

private static UInt32 AddressDataBlock = 0x260;

}

BC端發(fā)送控制命令的仿真函數(shù)如下所示:

///

/// 發(fā)控制命令

///

/// RT地址

/// 發(fā)送標(biāo)志,0標(biāo)識(shí)RT端接收

/// 子地址

/// 長(zhǎng)度/方式字(指1553B發(fā)送的"字"的長(zhǎng)度)

/// 發(fā)送的數(shù)據(jù)

/// 是否是廣播標(biāo)志

/// 通道標(biāo)志

public static void SendCmd(Enum1553B_Channel_Num channel, bool bcst, int rtAddr, bool rx, int sa, int len, byte[] data)

仿真控制命令后可實(shí)現(xiàn)如下過(guò)程模擬:BC發(fā)送廣播、BC2RT數(shù)據(jù)、BC2RT命令、方同步碼等。控制命令流程如圖4所示。其中查找表仿真方法為:

1)判斷當(dāng)前控制命令的類型:廣播、發(fā)送。

2)判斷當(dāng)前命令由BC發(fā)到RT的哪個(gè)SA。

3)查詢查找表中該SA對(duì)應(yīng)的存儲(chǔ)起始地址,以及嵌入式軟件設(shè)置的內(nèi)存起始地址,計(jì)算出該SA數(shù)據(jù)塊在共享內(nèi)存中的存儲(chǔ)區(qū)域。

4)將SA對(duì)應(yīng)的存儲(chǔ)區(qū)域數(shù)據(jù)取出后發(fā)送給RT。

圖4 控制命令仿真流程

BC端接收RT發(fā)來(lái)數(shù)據(jù)(RT2BC數(shù)據(jù))的仿真過(guò)程如圖5所示。其中對(duì)查找表的使用與發(fā)送控制命令仿真部分相同。

圖5 BC接收RT數(shù)據(jù)流程

2.1.4 RT虛擬化實(shí)現(xiàn)

實(shí)際應(yīng)用中被測(cè)件有時(shí)作為BC端使用,在構(gòu)建測(cè)試環(huán)境時(shí)需要對(duì)外設(shè)RT進(jìn)行虛擬化仿真,即實(shí)現(xiàn)RT2BC數(shù)據(jù)、RT2BC指令、RT2RT、RT2RTS、BC2RT等數(shù)據(jù)、指令的交互過(guò)程[19]。

模擬RT端接收BC發(fā)來(lái)的指令、數(shù)據(jù),將收到的數(shù)據(jù)放入本地共享內(nèi)存,共享內(nèi)存的組織方式與“BC端仿真模擬”一致。外設(shè)RT收到作為BC的被測(cè)件發(fā)送的。模擬RT端的處理流程如圖6所示。

圖6 RT端仿真處理流程

2.2 AD采集虛擬化設(shè)計(jì)與實(shí)現(xiàn)

2.2.1 AD采集虛擬化設(shè)計(jì)

實(shí)際應(yīng)用中嵌入式軟件通過(guò)AD采集模塊采集模擬信號(hào),經(jīng)過(guò)模數(shù)轉(zhuǎn)化,將轉(zhuǎn)換后的數(shù)字量用于軟件的后續(xù)使用[20]。

嵌入式軟件采集信號(hào)后的處理過(guò)程,實(shí)際使用的是數(shù)字量而非模擬量。因此,在測(cè)試平臺(tái)中無(wú)需仿真模數(shù)轉(zhuǎn)換過(guò)程,可直接將數(shù)字量值賦給嵌入式軟件。數(shù)字量可通過(guò)AD采集界面設(shè)置任意值,供嵌入式軟件采集。既能滿足嵌入式軟件從AD采集模塊獲取數(shù)字量的要求,又能滿足AD采集模塊測(cè)試的充分性。

2.2.2 AD采集虛擬化實(shí)現(xiàn)

不同被測(cè)件AD采集部分的處理過(guò)程有相似之處,將通用的處理過(guò)程抽象為AD采集模塊,完成AD采集外設(shè)的虛擬化。AD數(shù)據(jù)的采集與外設(shè)的交互部分涉及采集通道選擇、采集高低字節(jié)、采集次數(shù)等。嵌入式軟件與外設(shè)交互的流程如圖7所示。

圖7 AD采集外設(shè)交互流程

實(shí)現(xiàn)AD采集虛擬化,需要開辟一段共享內(nèi)存用于存儲(chǔ)測(cè)試人員設(shè)置的一組AD值,數(shù)值內(nèi)容要求:

1)采集的路數(shù);

2)每路數(shù)據(jù)采集次數(shù);

3)每次采集值,支持設(shè)置不同值。

被測(cè)件第某次采集某路AD數(shù)據(jù)時(shí),觸發(fā)測(cè)試平臺(tái)的讀回調(diào)函數(shù)。在回調(diào)函數(shù)中判斷當(dāng)次采集為嵌入式軟件第幾次采集第幾路AD數(shù)據(jù),取出共享內(nèi)存中對(duì)應(yīng)的AD值,供嵌入式軟件采集。AD采集虛擬化處理流程與圖7所示的嵌入式軟件與AD外設(shè)交互流程相同。

不同嵌入式軟件通過(guò)測(cè)試平臺(tái)界面可配置采集AD數(shù)據(jù)通道、采集地址、CPU時(shí)鐘頻率、采集方式等信息,如圖8所示。

圖8 AD采集配置界面

2.3 總線RS422虛擬化設(shè)計(jì)與實(shí)現(xiàn)

2.3.1 總線RS422虛擬化設(shè)計(jì)

串行總線RS422通信由于其在傳輸距離、抗干擾能力方面的優(yōu)勢(shì),在航天嵌入式軟件中普遍應(yīng)用[21]。嵌入式軟件測(cè)試時(shí)主要關(guān)心被測(cè)件從串口采集數(shù)據(jù)之后的處理流程正確與否,以及觀察被測(cè)件輸出的串口數(shù)據(jù)。被測(cè)件通過(guò)串口采集數(shù)據(jù)的方式為:MOV A SBUF;通過(guò)串口輸出數(shù)據(jù)的方式為:MOV SBUF A。其中SBUF為寄存器0x99。

因此,在測(cè)試平臺(tái)開發(fā)中無(wú)需仿真串口全部物理功能,只需實(shí)現(xiàn)被測(cè)件從串口采集、輸出數(shù)據(jù)的過(guò)程。測(cè)試人員根據(jù)測(cè)試需求,靈活設(shè)置正確值、邊界值、異常值等供被測(cè)件采集,用白盒測(cè)試法分析被測(cè)件采集串口數(shù)據(jù)后不同處理分支的正確性。被測(cè)件通過(guò)串口輸出的數(shù)據(jù),由測(cè)試平臺(tái)接收并依據(jù)通信協(xié)議完成解析,方便測(cè)評(píng)人員觀察。

2.3.2 總線RS422虛擬化實(shí)現(xiàn)

實(shí)現(xiàn)對(duì)總線RS422的虛擬化,處理邏輯如圖9所示。

圖9 RS422總線數(shù)據(jù)交互流程

具體方法如下:

1)測(cè)試人員設(shè)置輸入激勵(lì)并存入共享隊(duì)列;

2)被測(cè)件運(yùn)行到需要從RS422獲取數(shù)據(jù)處,即從寄存器0x99讀取數(shù)據(jù),觸發(fā)測(cè)試平臺(tái)的讀回調(diào)函數(shù)。測(cè)試平臺(tái)將共享隊(duì)列中的測(cè)試激勵(lì)通過(guò)0x99注入被測(cè)件;

3)被測(cè)件通過(guò)串行總線RS422輸出數(shù)據(jù)時(shí),即通過(guò)寄存器0x99輸出數(shù)據(jù),觸發(fā)測(cè)試平臺(tái)寫回調(diào)函數(shù)。測(cè)試平臺(tái)依據(jù)被測(cè)件通信協(xié)議接收一整幀串口數(shù)據(jù)后,完成解析并在測(cè)試平臺(tái)界面顯示。測(cè)評(píng)人員通過(guò)界面觀察被測(cè)件輸出的串口數(shù)據(jù),判斷其運(yùn)行是否合理。

2.4 I/O虛擬化設(shè)計(jì)與實(shí)現(xiàn)

2.4.1 I/O虛擬化設(shè)計(jì)

嵌入式軟件外設(shè)包括上述通用的1553B、RS422、AD采集,還包括與FPGA、DSP或其他外設(shè)交互的硬件信號(hào)、數(shù)據(jù)等。建立完整的嵌入式軟件數(shù)字仿真測(cè)試環(huán)境,還需定制化的完成被測(cè)軟件全部輸入數(shù)據(jù)、全部輸出數(shù)據(jù)解析的仿真[22]。這部分定制化的外設(shè)仿真統(tǒng)稱為I/O虛擬化。

2.4.2 I/O虛擬化實(shí)現(xiàn)

I/O虛擬化實(shí)現(xiàn)過(guò)程與總線RS422虛擬化相似,與流程圖9不同之處為:“測(cè)試人員設(shè)置外圍激勵(lì)”,此處提供兩種設(shè)置激勵(lì)的方法,測(cè)試人員可通過(guò)界面和具有固定格式的Excel表格設(shè)置外圍激勵(lì);其次,被測(cè)件從總線RS422取數(shù),改為從通過(guò)I/O交互數(shù)據(jù)的外設(shè)采集取數(shù)。I/O虛擬化實(shí)現(xiàn)的具體方法如下:

1)針對(duì)不同外設(shè)開辟一段獨(dú)占的共享內(nèi)存,用于存儲(chǔ)測(cè)試人員設(shè)定的測(cè)試激勵(lì)。

2)設(shè)計(jì)固定格式的Excel表格,如表3所示。測(cè)試人員將測(cè)試激勵(lì)填入表格,測(cè)試平臺(tái)運(yùn)行后自動(dòng)讀取表格內(nèi)容,將數(shù)據(jù)及地址成對(duì)的存入共享內(nèi)存。

表3 I/O固定輸入數(shù)據(jù)格式

3)測(cè)試過(guò)程中,通過(guò)界面實(shí)時(shí)設(shè)置測(cè)試激勵(lì)。

4)被測(cè)件運(yùn)行至采集外設(shè)數(shù)據(jù)地址處,觸發(fā)測(cè)試平臺(tái)的讀回調(diào)函數(shù)。測(cè)試平臺(tái)根據(jù)接收到的“讀地址”,將共享內(nèi)存中對(duì)應(yīng)的數(shù)據(jù)發(fā)送給被測(cè)軟件。

5)被測(cè)件向“寫地址”輸出1字節(jié)數(shù)據(jù)或者一幀遙測(cè)數(shù)據(jù)時(shí),觸發(fā)測(cè)試平臺(tái)的寫回調(diào)函數(shù)。測(cè)試平臺(tái)記錄接收到的“寫地址”以及對(duì)應(yīng)1字節(jié)數(shù)據(jù)或者一幀遙測(cè)數(shù)據(jù),依照通信協(xié)議完成被測(cè)件輸出數(shù)據(jù)的解析。測(cè)試人員可通過(guò)界面實(shí)時(shí)觀察被測(cè)軟件的輸出信息。

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

為驗(yàn)證上述描述的嵌入式軟件外設(shè)虛擬化的有效性和可靠性。以某電源下位機(jī)軟件測(cè)試平臺(tái)開發(fā)為例,模擬1553B、RS422、I/O、AD采集等外設(shè),實(shí)現(xiàn)被測(cè)件外圍環(huán)境的正常功能測(cè)試、異常故障用例注入,提高測(cè)試的充分性,完成對(duì)該電源下位機(jī)軟件的測(cè)試工作。該電源下位機(jī)軟件主要功能是太陽(yáng)電池陣功率調(diào)節(jié)、蓄電池組充放電管理功能。需要完成工程參數(shù)的采集處理、遙控指令的執(zhí)行、蓄電池充電管理、均衡器控制等功能,通過(guò)1553B總線實(shí)現(xiàn)與綜合電子分系統(tǒng)的信息交換。

3.1 測(cè)試平臺(tái)搭建

3.1.1 上位機(jī)部分搭建

基于自研測(cè)試平臺(tái)選擇1553B模塊、AD采集模塊、針對(duì)該電源下位機(jī)開發(fā)的I/O模塊。測(cè)試平臺(tái)模塊選擇界面如圖10所示。

圖10 測(cè)試平臺(tái)搭建界面

總線1553B虛擬化后需要通過(guò)界面配置接收發(fā)送子地址、廣播子地址、寄存器、中斷觸發(fā)等信息,以完成被測(cè)試軟件與外部設(shè)備通過(guò)1553B傳輸數(shù)據(jù)的仿真。配置界面如圖11所示。

圖11 總線1553B配置界面

AD采集外設(shè)模擬需要配置被測(cè)試軟件采集地址、采集高低字節(jié)地址等信息,配置界面如圖8所示。

3.1.2 被測(cè)件運(yùn)行環(huán)境配置

嵌入式軟件電源下位機(jī)程序的仿真運(yùn)行環(huán)境由Keil提供,配置基于AGSI編寫的動(dòng)態(tài)鏈接庫(kù),使用Keil加載源程序完成編譯。使用Keil軟件運(yùn)行電源下位機(jī)程序,可完成電源下位機(jī)程序動(dòng)態(tài)運(yùn)行下的白盒測(cè)試。其中動(dòng)態(tài)鏈接庫(kù)實(shí)現(xiàn)測(cè)試平臺(tái)與Keil軟件UDP通信、被測(cè)試軟件內(nèi)存、寄存器的讀寫監(jiān)視、定時(shí)器設(shè)置、時(shí)需同步、中斷觸發(fā)等。

3.2 測(cè)試平臺(tái)運(yùn)行與測(cè)試

測(cè)試平臺(tái)運(yùn)行界面如圖12所示。測(cè)試人員可通過(guò)運(yùn)行界面的左側(cè)設(shè)置注入激勵(lì)的內(nèi)容,實(shí)時(shí)更改注入的總線1553B、RS422的指令幀或者數(shù)據(jù),以及被測(cè)件需要從I/O外設(shè)采集的全部數(shù)據(jù)。運(yùn)行界面右側(cè)為被測(cè)件上傳數(shù)據(jù)的實(shí)時(shí)顯示。

圖12 運(yùn)行界面

AD采集界面如圖13所示,測(cè)試人員可實(shí)時(shí)更改供被測(cè)件采集的各路AD數(shù)據(jù)。支持直接在界面上更改AD值、導(dǎo)入AD數(shù)據(jù)Excel表格兩種方式設(shè)置AD值。

圖13 AD采集界面

通過(guò)測(cè)試平臺(tái)完成被測(cè)件中斷INT0、T0、T1執(zhí)行時(shí)間、中斷響應(yīng)總線指令時(shí)間的記錄,以及周期發(fā)送指令、覆蓋率統(tǒng)計(jì)。程序地址計(jì)數(shù)器(PC,program counter)用于存放要執(zhí)行指令的地址,16位,能自動(dòng)加1。一個(gè)機(jī)器周期(M-Machine周期)是12個(gè)時(shí)鐘周期,當(dāng)主頻為12 MHz時(shí),一個(gè)機(jī)器周期為:1 M = 1/12 MHz*12=1 μs。被測(cè)件某段程序執(zhí)行時(shí)間的計(jì)算方法是:記錄該段程序起止PC之間執(zhí)行的機(jī)器周期數(shù),乘以一個(gè)機(jī)器周期的時(shí)間,得到該段程序的執(zhí)行時(shí)間。

3.3 測(cè)試結(jié)果分析

該電源下位機(jī)軟件共使用3種中斷INT0、T0、T1,中斷服務(wù)程序執(zhí)行時(shí)間的測(cè)試結(jié)果如表4所示。

表4 中斷服務(wù)程序執(zhí)行時(shí)間

覆蓋率統(tǒng)計(jì)支持被測(cè)件目標(biāo)碼覆蓋率情況保存、多個(gè)覆蓋率文件合并,源碼目標(biāo)碼對(duì)照顯示。統(tǒng)計(jì)結(jié)果針對(duì)目標(biāo)碼執(zhí)行情況進(jìn)行分析,其中包括6種執(zhí)行結(jié)果:

1)EX:executed,該條目標(biāo)碼語(yǔ)句執(zhí)行,覆蓋率統(tǒng)計(jì)結(jié)果中以綠色顯示;

2)NE:Not Executed,語(yǔ)句沒有執(zhí)行,覆蓋率統(tǒng)計(jì)結(jié)果中以紅色顯示;

3)JF:Jump Fully,分支完全執(zhí)行,覆蓋率統(tǒng)計(jì)結(jié)果中以黃色顯示;

4)JN:Jump Never,分支順序執(zhí)行,但是沒有跳轉(zhuǎn),即每次執(zhí)行到這條語(yǔ)句,跳轉(zhuǎn)條件都不滿足,覆蓋率統(tǒng)計(jì)結(jié)果中以黃色顯示;

5)JO:Jump Only,執(zhí)行了分支跳轉(zhuǎn),但是沒有順序執(zhí)行,即每次執(zhí)行到這條語(yǔ)句都是跳轉(zhuǎn),覆蓋率統(tǒng)計(jì)結(jié)果中以黃色顯示;

6)JNE(jump not executed),跳轉(zhuǎn)分支、順序分支都沒有執(zhí)行,覆蓋率統(tǒng)計(jì)結(jié)果中以紅色顯示。

目標(biāo)碼覆蓋率統(tǒng)計(jì)結(jié)果中先顯示一句源碼,緊接著顯示對(duì)應(yīng)的目標(biāo)碼,并在第一列顯示每條目標(biāo)碼的執(zhí)行情況。根據(jù)每條目標(biāo)碼的執(zhí)行情況標(biāo)示綠色、紅色、黃色,方便測(cè)評(píng)人員觀察,如圖14所示。

被測(cè)件目標(biāo)碼覆蓋率統(tǒng)計(jì)情況如表5所示,包括目標(biāo)碼模塊名、總指令數(shù)、執(zhí)行指令數(shù)、執(zhí)行百分比、總跳轉(zhuǎn)指令數(shù)、JF指令數(shù)、JO指令數(shù)、JN指令書、JNE指令數(shù)、JF執(zhí)行百分比。部分嵌入式軟件目標(biāo)碼分支、語(yǔ)句覆蓋率均要達(dá)到百分之百。表5展示覆蓋率統(tǒng)計(jì)功能,并非電源下位機(jī)軟件第三方測(cè)試的最終覆蓋率統(tǒng)計(jì)結(jié)果。

實(shí)驗(yàn)結(jié)果證明,在自研測(cè)試平臺(tái)基礎(chǔ)上,基于Keil C51完成嵌入式軟件外設(shè)虛擬化,實(shí)現(xiàn)嵌入式軟件仿真運(yùn)行、外圍激勵(lì)注入、外設(shè)硬件接口模擬的方法切實(shí)可行。通過(guò)數(shù)字測(cè)試平臺(tái)不僅能夠完成與實(shí)物測(cè)試平臺(tái)相同的測(cè)試效果,還能完成故障注入、邊界測(cè)試、目標(biāo)碼覆蓋率等。

表5 目標(biāo)碼覆蓋率統(tǒng)計(jì)結(jié)果

附注:表格中為第三方測(cè)試進(jìn)行中,被測(cè)件目標(biāo)碼覆蓋率統(tǒng)計(jì)結(jié)果的部分展示

4 結(jié)束語(yǔ)

本文提出的基于Keil C51的嵌入式軟件外設(shè)虛擬化,實(shí)現(xiàn)了在真實(shí)環(huán)境中運(yùn)行的嵌入式軟件與全部外部設(shè)備交互數(shù)據(jù)的仿真,使得測(cè)試過(guò)程不受硬件實(shí)物平臺(tái)的使用限制,擁有充分的測(cè)試時(shí)間。

1)在測(cè)試過(guò)程中,外部設(shè)備的虛擬化提供了靈活的測(cè)試激勵(lì)注入方式,能夠完成實(shí)物測(cè)試環(huán)境難以模擬的故障注入、邊界測(cè)試以及測(cè)試結(jié)果實(shí)時(shí)顯示。

2)目標(biāo)碼覆蓋率統(tǒng)計(jì)能夠幫助測(cè)評(píng)人員分析被測(cè)件代碼執(zhí)行情況,精準(zhǔn)定位未執(zhí)行的語(yǔ)句、分支。輔助測(cè)評(píng)人員分析未執(zhí)行的原因,針對(duì)性的設(shè)計(jì)測(cè)試用例,進(jìn)而完成未執(zhí)行語(yǔ)句、分支的覆蓋。

3)嵌入式軟件外設(shè)虛擬化后,主要解決了測(cè)試工作中的兩個(gè)問題:測(cè)試過(guò)程不依賴嵌入式軟件真實(shí)的運(yùn)行環(huán)境;測(cè)試過(guò)程內(nèi)存、寄存器信息可控可改,測(cè)試用例注入方式靈活,能夠完成實(shí)物測(cè)試環(huán)境不能滿足的故障、邊界測(cè)試。

4)外設(shè)的虛擬化設(shè)計(jì),不僅能夠緩解目前航天型號(hào)領(lǐng)域嵌入式軟件測(cè)試過(guò)程中實(shí)物運(yùn)行環(huán)境使用時(shí)間沖突的問題,而且對(duì)提高嵌入式軟件的測(cè)試效率和測(cè)試充分性也有幫助。

猜你喜歡
指令
聽我指令:大催眠術(shù)
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
殺毒軟件中指令虛擬機(jī)的脆弱性分析
巧用G10指令實(shí)現(xiàn)橢圓輪廓零件倒圓角
中斷與跳轉(zhuǎn)操作對(duì)指令串的影響
科技傳播(2015年20期)2015-03-25 08:20:30
基于匯編指令分布的惡意代碼檢測(cè)算法研究
一種基于滑窗的余度指令判別算法
歐盟修訂電氣及電子設(shè)備等產(chǎn)品安全規(guī)定
家電科技(2014年5期)2014-04-16 03:11:28
MAC指令推動(dòng)制冷劑行業(yè)發(fā)展
汽車零部件(2014年2期)2014-03-11 17:46:27
主站蜘蛛池模板: 成人日韩视频| 国产精品自在在线午夜区app| 国产一级α片| 国产一级小视频| 欧美日韩精品在线播放| 国产精品分类视频分类一区| 真实国产乱子伦视频| 高潮毛片无遮挡高清视频播放| 国产男女XX00免费观看| 黄色网站不卡无码| 国产精品久久久免费视频| 国产成人免费视频精品一区二区| 成人字幕网视频在线观看| 九色在线观看视频| 国产永久无码观看在线| 40岁成熟女人牲交片免费| 91无码网站| 国产主播在线观看| 亚洲伦理一区二区| 日韩a级片视频| 在线免费无码视频| 2048国产精品原创综合在线| 狠狠色香婷婷久久亚洲精品| 内射人妻无码色AV天堂| 久久狠狠色噜噜狠狠狠狠97视色| 久草美女视频| jizz国产视频| 免费国产黄线在线观看| 2021最新国产精品网站| 国产免费久久精品99re丫丫一| 久久国产亚洲欧美日韩精品| 人妻中文字幕无码久久一区| 亚洲一区二区精品无码久久久| 不卡色老大久久综合网| 色婷婷狠狠干| www亚洲天堂| 丁香婷婷久久| 超清人妻系列无码专区| 久久久久久午夜精品| 人妻中文久热无码丝袜| 在线观看国产精美视频| 日韩欧美视频第一区在线观看| 色九九视频| 88av在线| 免费国产在线精品一区| 九色91在线视频| 日日拍夜夜操| 欧美色综合网站| 国产精品福利在线观看无码卡| 欧美有码在线| 欧美午夜在线播放| 国产毛片高清一级国语 | 高清不卡毛片| 国产小视频a在线观看| 国产精品yjizz视频网一二区| 国产成人综合亚洲欧美在| 日本爱爱精品一区二区| 亚洲免费三区| 国产91丝袜| 97人妻精品专区久久久久| 久久精品91麻豆| 久久大香香蕉国产免费网站| 麻豆精品在线| 国产精品美女免费视频大全| 青青草综合网| 国产三级毛片| 精品国产99久久| 真实国产乱子伦高清| 在线毛片网站| 成人无码区免费视频网站蜜臀| 成人av专区精品无码国产| 伊人激情综合网| 最新无码专区超级碰碰碰| 色网站在线视频| 欧洲成人在线观看| 亚洲国产成人久久精品软件| 欧美成人在线免费| 久久国产精品波多野结衣| 亚洲精品无码人妻无码| 国产亚洲精品自在久久不卡| 手机看片1024久久精品你懂的| 91国内在线观看|