《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > MVB總線故障注入方法研究與實(shí)現(xiàn)
MVB總線故障注入方法研究與實(shí)現(xiàn)
2016年電子技術(shù)應(yīng)用第8期
仲康正,徐惠勇
中國(guó)地質(zhì)大學(xué)(北京) 信息工程學(xué)院,北京100083
摘要: 為滿足列車通信網(wǎng)絡(luò)(TCN)中多功能車輛總線(MVB)設(shè)備的測(cè)試驗(yàn)證要求,基于一般總線測(cè)試方法,結(jié)合MVB總線協(xié)議特點(diǎn),提出一種基于故障注入技術(shù)的測(cè)試方法。通過(guò)對(duì)板卡寄存器的定義與配置,開(kāi)發(fā)了基于VS平臺(tái)的MVB故障注入設(shè)備驅(qū)動(dòng)程序,從電氣層、物理層、協(xié)議層三方面,詳細(xì)給出了MVB總線故障注入方法和部分驅(qū)動(dòng)程序。通過(guò)Wireshark抓取報(bào)文的方式,驗(yàn)證了故障注入的準(zhǔn)確性,證明了此方法的可行性和正確性。
中圖分類號(hào): TP336
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.08.017
中文引用格式: 仲康正,徐惠勇. MVB總線故障注入方法研究與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2016,42(8):74-76,83.
英文引用格式: Zhong Kangzheng,Xu Huiyong. Research and implementation of MVB bus fault injection method[J].Application of Electronic Technique,2016,42(8):74-76,83.
Research and implementation of MVB bus fault injection method
Zhong Kangzheng,Xu Huiyong
Department of Information Engineering,China University of Geoscience(Beijing),Beijing 100083,China
Abstract: To meet the test and validate requirements of multifunction vehicle bus devices in train communication network, based on the test method of general bus and combining with the characteristics of the MVB bus protocol, this paper presents a test method based on fault injection technique. By means of the definition and configuration of the card registers, Multifunction vehicle bus fault injection device driver, based on VS platform, was developmented. MVB bus fault injection method and part of the driver are given in detail,in terms of physical, electrical, and protocol . Through the way of Wireshark graping messages to verify accuracy of fault injection, and prove the feasibility and correctness of this method.
Key words : multifunction vehicle bus;fault injection;registers

0 引言

  多功能車輛總線(Multifunction Vehicle Bus,MVB)是針對(duì)車輛環(huán)境下,車輛內(nèi)部功能設(shè)備數(shù)據(jù)通信的現(xiàn)場(chǎng)總線,是列車通信網(wǎng)絡(luò)系統(tǒng)(Train Communication Network,TCN)的核心部分之一。隨著微電子技術(shù)和分布式現(xiàn)場(chǎng)總線技術(shù)的發(fā)展,MVB的應(yīng)用日益廣泛,此類列車可通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)對(duì)車載設(shè)備的集散式監(jiān)控和管理,逐步實(shí)現(xiàn)了列車控制系統(tǒng)的智能化、網(wǎng)絡(luò)化與信息化[1]。

  MVB介質(zhì)訪問(wèn)控制的優(yōu)點(diǎn)在于,它將總線上的時(shí)間分為固定大小的基本周期,每個(gè)基本周期又由周期相和偶發(fā)相組成,這樣既可傳送對(duì)時(shí)間有確切要求的數(shù)據(jù),同時(shí)也可以處理偶發(fā)緊急數(shù)據(jù)[2]。為了保證總線系統(tǒng)的高可靠性,總線測(cè)試必不可少,然而由于國(guó)外對(duì)MVB技術(shù)的壟斷,國(guó)內(nèi)尚沒(méi)有統(tǒng)一高效的測(cè)試方案。本文基于故障注入技術(shù),提出了一種總線測(cè)試方案,并通過(guò)軟件注入的方式,進(jìn)行試驗(yàn)驗(yàn)證。

1 故障注入技術(shù)

  故障注入是進(jìn)行產(chǎn)品測(cè)試性實(shí)驗(yàn)的重要技術(shù)手段,在產(chǎn)品檢測(cè)中,通過(guò)故障注入可以驗(yàn)證被測(cè)產(chǎn)品的機(jī)內(nèi)測(cè)試、外部測(cè)試的診斷能力[3]。與傳統(tǒng)的測(cè)評(píng)方法相比,故障注入技術(shù)具有應(yīng)用范圍廣、結(jié)果精確度高、節(jié)省時(shí)間等優(yōu)點(diǎn)[4]。特別是在有關(guān)國(guó)防安全的航空航天系統(tǒng)中,最為關(guān)鍵的系統(tǒng)都采用高可靠性的容錯(cuò)計(jì)算機(jī)系統(tǒng)。在過(guò)去近20年中,故障注入的研究對(duì)容錯(cuò)系統(tǒng)的設(shè)計(jì)和應(yīng)用起到了重要作用[5]。

  故障注入主要分為硬件注入和軟件注入兩種。與硬件注入相比,軟件故障注入具有易于控制、成本低、方便靈活等優(yōu)點(diǎn),逐漸成為故障注入技術(shù)的發(fā)展方向和研究熱點(diǎn)。

2 故障注入方法

  本文通過(guò)掛接在總線系統(tǒng)中的故障注入設(shè)備,在不改變?cè)O(shè)備激勵(lì)以及被測(cè)信號(hào)的前提下,從MVB故障注入板卡底層寄存器、內(nèi)存開(kāi)始,通過(guò)軟件實(shí)現(xiàn)對(duì)板卡內(nèi)寄存器、存儲(chǔ)器值的修改,模擬輸入信號(hào)的故障情況,從而實(shí)現(xiàn)相應(yīng)的故障注入。故障注入過(guò)程中,利用分析軟件Wireshark抓取以太網(wǎng)報(bào)文,檢測(cè)設(shè)備的故障注入情況,從而驗(yàn)證系統(tǒng)的容錯(cuò)性能。

  MVB故障注入設(shè)備包含核心板寄存器配置和2個(gè)MVB通信節(jié)點(diǎn)寄存器配置,寄存器地址共32 bit,由8 bit保留位(R)、3 bit板卡地址CardAddr、5 bit通道地址port_

  num和16 bit偏移地址OffsetAddr組成,寄存器地址=R+CardAddr+port_num+OffsetAddr。

  在故障注入時(shí),考慮到系統(tǒng)的合理性及高效性,將MVB板卡內(nèi)寄存器定義為核心板全局配置寄存器、子版全局配置寄存器、通道級(jí)寄存器3種類型。結(jié)合其他總線的相關(guān)經(jīng)驗(yàn)和理論,將MVB總線的故障概括為3個(gè)層面:電氣層、物理層與協(xié)議層。

  2.1 電氣層

  電氣層故障配置項(xiàng)包括斷路故障、短路故障、串行、并行阻抗等,F(xiàn)PGA接收軟件的指令,處理采樣所得的信號(hào),控制繼電器矩陣和電阻網(wǎng)路,以實(shí)現(xiàn)對(duì)應(yīng)故障注入。以斷路故障項(xiàng)為例說(shuō)明。斷路故障Memory偏移地址為0x0200,port_number為0x00,故障參數(shù)bit位說(shuō)明見(jiàn)表1。

圖像 005.png

  根據(jù)表1中內(nèi)容,在程序中定義斷路故障參數(shù)結(jié)構(gòu)體和對(duì)應(yīng)的位域結(jié)構(gòu)體。斷路故障寄存器位域結(jié)構(gòu)體如下:

  typedef struct _reg_cut_fault

  {

  int periodValue :15

  int periodCut :1;

  int cutTime :14;

  int negLineCut :1;

  int posiLineCut :1;

  }TY_REG_CUT_FAULT_CONF;

  typedef union

  {

  TY_CUT_FAULT_CONF stCutConf;

  int cutConfValue;

  }TY_CUT_FAULT_UNION

  2.2 物理層

  物理層故障配置項(xiàng)包括幅值調(diào)節(jié)故障項(xiàng)配置、占空比調(diào)節(jié)、總線延時(shí)故障等8項(xiàng)。幅值故障寄存器偏移地址為0x0218,portnumber為0x00。故障配置參數(shù)見(jiàn)表2。

圖像 006.png

  根據(jù)表中內(nèi)容定義類似電氣層的結(jié)構(gòu)體,在驅(qū)動(dòng)開(kāi)發(fā)時(shí)以實(shí)現(xiàn)相關(guān)故障參數(shù)的配置及賦值實(shí)現(xiàn)。

  2.3 協(xié)議層

  協(xié)議層故障項(xiàng)參數(shù)配置包括2個(gè)內(nèi)容:匹配策略信息Memory、故障策略信息Memory。MVB總線傳輸數(shù)據(jù)幀的兩種類型具有不同的幀結(jié)構(gòu)和幀標(biāo)識(shí)符。協(xié)議層故障由客戶端根據(jù)需要選擇主幀還是從幀故障相關(guān)參數(shù)配置。

  匹配策略信息配置參數(shù)主從幀一致,位域結(jié)構(gòu)體只需要區(qū)分結(jié)構(gòu)體名稱即可。0位對(duì)應(yīng)Fcode_mask,當(dāng)值為1時(shí),對(duì)功能碼進(jìn)行匹配,匹配對(duì)象為Fcode_data(31-28 bit);1位為Addr_mask,當(dāng)值為1時(shí),對(duì)地址進(jìn)行匹配,匹配對(duì)象為Addr_data(27-16 bit)??筛鶕?jù)Addr_mask_x(x為0-11,占據(jù)2-13 bit)選擇需要匹配的地址bit位。

  故障策略匹配信息Memory大小為:位寬32 bit,深度128。160個(gè)32 bit深度的數(shù)據(jù)共分為32組,每組5個(gè)32 bit的數(shù)據(jù),對(duì)應(yīng)32組故障策略,包括功能碼、校驗(yàn)碼、位反轉(zhuǎn)、位毛刺等故障參數(shù)配置。

3 故障注入的實(shí)現(xiàn)

  鑒于Windows系統(tǒng)的高普及性,本文根據(jù)定義的MVB故障注入設(shè)備寄存器說(shuō)明,基于VS2010開(kāi)發(fā)環(huán)境,利用C語(yǔ)言開(kāi)發(fā)故障注入驅(qū)動(dòng)。利用Wireshark抓取以太網(wǎng)報(bào)文的方式驗(yàn)證API的正確性,然后通過(guò)故障注入軟件調(diào)用檢驗(yàn)后的API,完成對(duì)設(shè)備的故障注入。

  3.1 Wireshark

  Wireshark是一個(gè)網(wǎng)絡(luò)封包分析軟件,其功能是擷取網(wǎng)絡(luò)分包,并盡可能顯示最為詳細(xì)的網(wǎng)絡(luò)封包資料。Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報(bào)文交換。

  3.2 以太網(wǎng)報(bào)文

  UDP報(bào)文中,源端口、目的端口、UDP長(zhǎng)度、校驗(yàn)和大小為2B,用戶數(shù)據(jù)根據(jù)具體操作與信息,占據(jù)若干字節(jié),包括4B的消息包頭、4B的地址、若干字節(jié)(4B整數(shù)倍)的具體數(shù)據(jù)。

  發(fā)送時(shí),將消息總線數(shù)據(jù)組合成以太網(wǎng)報(bào)文,總線數(shù)據(jù)以4 B為單位,先發(fā)送最低字節(jié),再發(fā)送次低字節(jié),最后發(fā)送高字節(jié)。消息總線數(shù)據(jù)格式為:

  消息包頭(Type+Opcode+R+DataLEN)

  地址域(R+cardaddr+portnum+OffsetAddr)

  數(shù)據(jù)域(one or more 32 bits)

  Type為固定值0x1D,占6 bit;Opcode為操作碼,占6 bit,表示信息類型,對(duì)應(yīng)讀、寫(xiě)寄存器(Memory);R為保留位,占7 bit,DataLen為數(shù)據(jù)長(zhǎng)度,包括信息包頭,占13 bit。

  3.3 Memory操作格式

  與消息總線數(shù)據(jù)格式一致,寫(xiě)Memory包括n×4B的數(shù)據(jù)內(nèi)容。第一行4B數(shù)據(jù)為消息包頭,Type為固定值0x1D,Opcode為固定值0x0C,加上7 bit保留位和13 bit的DataLen;第二行為地址域R+cardaddr+port_num+OffsetAddr;第三行開(kāi)始為32 bit整數(shù)倍的數(shù)據(jù)域,數(shù)據(jù)域長(zhǎng)度與DataLen大小對(duì)應(yīng)。

  3.4 故障注入驅(qū)動(dòng)

  為方便對(duì)各項(xiàng)故障的選擇性注入,利用選擇結(jié)構(gòu)編寫(xiě)驅(qū)動(dòng)程序。為了規(guī)范化測(cè)試步驟,在故障注入開(kāi)始前,先進(jìn)行掃描,確認(rèn)在線設(shè)備數(shù)量及地址端口,然后利用驅(qū)動(dòng)打開(kāi)設(shè)備,開(kāi)始相關(guān)故障注入。在整體的測(cè)試流程中,需要包括打開(kāi)、關(guān)閉、復(fù)位、暫停等一系列操作。

  物理層故障注入部分代碼如下:

  int devPhysicalInjConf( TY_DEV_HANDLE *pHandle,

  int32 chnId, TY_PHYSICAL_FAULT_STRUCT phyFaultConfig)

  {

  ……

  if((phyFaultConfig.faultEn.cutFaultInjEn & 0x01))

  //若故障使能,對(duì)各參數(shù)賦值;

  {

  cutConf.stCutConf.periodValue=

  phyFaultConfig.cutConf.periodValue;

  cutConf.stCutConf.periodCut=phyFaultConfig.cutConf.periodCut;

  ……

  cutConf.stCutConf.posiLineCut=

  phyFaultConfig.cutConf.posiLineCut;

  tmpConfig[0] = tmpPhyFaultConf.cutConf.cutConfValue;

  ret=SetCutConfig(pHandle,chnId,tmpConfig,

  MEM_CONST_LEN);

  if(ret != RET_OK)

  {

  return RET_ERROR_CUT;

  }

  }

  }

  斷路故障功能實(shí)現(xiàn)部分代碼如下:

  int SetCutConfig(TY_DEV_HANDLE *pHandle, int chn,

  unsigned int *data,

  unsigned int dataLen)

  {

  int ret = 0;

  TY_ADDR_UNION tmpInjAddr;

  ret=getAddr(chn,LOCALREG, &tmpInjAddr);

  //獲取寄存器地址;

  ……

  ret=writeMEM(pHandle, tmpInjAddr.addr, data,

  dataLen);//配置下發(fā);

  return ret;

  }

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

  驅(qū)動(dòng)編譯完成后,通過(guò)以太網(wǎng)連接設(shè)備運(yùn)行編寫(xiě)的Demo程序,調(diào)用相關(guān)API,實(shí)現(xiàn)故障注入。本文以斷路、幅值故障注入情況為例,結(jié)合以太網(wǎng)報(bào)文,驗(yàn)證驅(qū)動(dòng)準(zhǔn)確性。

  Demo調(diào)用斷路故障設(shè)置函數(shù),通過(guò)對(duì)斷路故障項(xiàng)配置定義的結(jié)構(gòu)體內(nèi)參數(shù)賦值,實(shí)現(xiàn)對(duì)設(shè)備的斷路故障注入。對(duì)斷路時(shí)間賦值2(其他默認(rèn)值為0)時(shí)的報(bào)文如圖1。

圖像 003.png

  從第三行14 00 c0 74 開(kāi)始為用戶配置數(shù)據(jù)段。翻譯為:

  74 c0 00 14:對(duì)應(yīng)寫(xiě)memory 操作,DataLen為5B。

  00 40 02 00:對(duì)應(yīng)32 bit地址域,8 bit保留位,3 bit卡位號(hào),5 bit通道號(hào),16 bit偏移地址(0x0200)

  00 02 00 00:對(duì)應(yīng)32 bit斷路故障寄存器位,報(bào)文顯示與驅(qū)動(dòng)賦值結(jié)果一致。

  00 00 00 00 :空數(shù)據(jù)字節(jié)

  00 00 00 00 :空數(shù)據(jù)字節(jié)

  幅值故障注入?yún)?shù)賦值,vppEn=1,vppValue=3.4,得以太網(wǎng)報(bào)文如圖2。

圖像 004.png

  數(shù)據(jù)翻譯如下:

  74 c0 00 14:對(duì)應(yīng)寫(xiě)memory 操作,DataL為5 B。

  00 40 02 18:對(duì)應(yīng)32 bit地址域,8 bit保留位,3 bit卡位號(hào),5 bit通道號(hào),16 bit偏移地址(0x0218)

  00 00 80 02:對(duì)應(yīng)32 bit幅值故障Memory位,報(bào)文顯示與驅(qū)動(dòng)賦值結(jié)果一致。

  00 00 00 00 :空數(shù)據(jù)字節(jié)

  00 00 00 00 :空數(shù)據(jù)字節(jié)

  與斷路、幅值故障項(xiàng)類似,分別對(duì)電氣層、物理層和協(xié)議層各故障寄存器位賦值,用Wireshark抓取報(bào)文驗(yàn)證。實(shí)驗(yàn)中,報(bào)文顯示結(jié)果均與驅(qū)動(dòng)注入值相匹配,驗(yàn)證了驅(qū)動(dòng)對(duì)設(shè)備故障注入的有效性、可控性。

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

  隨著我國(guó)高鐵技術(shù)的不斷進(jìn)步發(fā)展,MVB總線技術(shù)在國(guó)內(nèi)的應(yīng)用將逐步擴(kuò)大。本文結(jié)合MVB總線協(xié)議特點(diǎn)和通信方式,探討適用于MVB總線設(shè)備的故障注入方法,并開(kāi)發(fā)出相應(yīng)的故障注入驅(qū)動(dòng),彌補(bǔ)了MVB總線故障注入手段的不足。

  故障注入驅(qū)動(dòng)對(duì)各類設(shè)備的高度兼容性、適應(yīng)性是故障注入技術(shù)的發(fā)展方向。本文提出的測(cè)試方法,可適用于大部分MVB總線設(shè)備,且與其他總線設(shè)備也具有共通性。如何利用此擴(kuò)展性,開(kāi)發(fā)出適用于各類總線設(shè)備測(cè)試的故障注入驅(qū)動(dòng),值得深入研究。

  參考文獻(xiàn)

  [1] 楊昌休.多功能車輛總線MVB關(guān)鍵技術(shù)的研究[D].成都:西南交通大學(xué),2012.

  [2] 宋娟,王立德,嚴(yán)翔,等.MVB協(xié)議分析裝置設(shè)計(jì)及其實(shí)時(shí)性分析[J].鐵道學(xué)報(bào),2011(11):41-45.

  [3] 石君友,李鄭,駱明珠,等.故障注入控制軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)控技術(shù),2008(4):65-67,70.

  [4] 李志宇,黃考利,連光耀.基于測(cè)試性設(shè)計(jì)的軟件故障注入研究綜述[J].計(jì)算機(jī)測(cè)量與控制,2013(5):1112-1114,1117. 

  [5] 孫天竹,吳小兵.采用故障注入技術(shù)提高系統(tǒng)可靠性[J].信息技術(shù),2004(6):85-86.

  


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