本發(fā)明涉及CAN總線節(jié)點(diǎn)的故障注入測(cè)試技術(shù)領(lǐng)域,特別是涉及一種CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法和系統(tǒng)。
背景技術(shù):
CAN(Controller Area Network,控制器局域網(wǎng))總線具有可靠性高、實(shí)時(shí)性好、成本合理等優(yōu)點(diǎn),已在汽車、船舶、航天、醫(yī)療、工業(yè)測(cè)控與工業(yè)自動(dòng)化等領(lǐng)域得到大量的應(yīng)用,成為了工業(yè)界使用最為廣泛的現(xiàn)場(chǎng)總線之一。在實(shí)際的CAN總線運(yùn)行過程中,會(huì)遇到很多異常狀態(tài)下的激勵(lì),并且無法預(yù)料到CAN總線的響應(yīng)和在極端條件下其數(shù)據(jù)傳輸時(shí)的穩(wěn)定性。因此,在CAN總線開發(fā)流程中,為了盡可能的驗(yàn)證CAN總線的可靠性,容錯(cuò)性及其故障狀態(tài),則需要把故障注入思想引入到CAN總線測(cè)試中。
傳統(tǒng)的CAN總線的故障注入方法關(guān)注更多的是電氣層的故障,比如CAN總線中的短路故障、斷路故障、短接故障、CAN節(jié)點(diǎn)中的電阻電容特性故障、差分電阻故障以及總線終端電阻故障等。在執(zhí)行電氣層的故障注入測(cè)試時(shí),需要額外搭建控制器控制電路、繼電器驅(qū)動(dòng)電路和繼電器電路來直接或是間接模擬電氣層的不同故障,提高了測(cè)試的成本。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)上述問題,提供一種測(cè)試成本低的CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法和系統(tǒng)。
一種CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法,包括以下步驟:
顯示故障注入界面,并實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?/p>
在檢測(cè)到所述被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔瑫r(shí),判斷是否接收到作用于所述故障注入界面的故障注入指令;
若是,則根據(jù)所述故障注入指令生成位翻轉(zhuǎn)故障值;
將所述位翻轉(zhuǎn)故障值注入所述信息幀,并輸出注入所述翻轉(zhuǎn)故障值后的信息幀。
一種CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入系統(tǒng),包括:
信息幀檢測(cè)模塊,用于顯示故障注入界面,并實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?/p>
注入指令檢測(cè)模塊,用于在檢測(cè)到所述被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔瑫r(shí),判斷是否接收到作用于所述故障注入界面的故障注入指令;
故障值生成模塊,用于在接收到作用于所述故障注入界面的故障注入指令時(shí),根據(jù)所述故障注入指令生成位翻轉(zhuǎn)故障值;
故障值注入模塊,用于將所述位翻轉(zhuǎn)故障值注入所述信息幀,并輸出注入所述翻轉(zhuǎn)故障值后的信息幀。
上述CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法和系統(tǒng),顯示故障注入界面,并實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?。在檢測(cè)到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔瑫r(shí),判斷是否接收到作用于所述故障注入界面的故障注入指令;若是,則根據(jù)故障注入指令生成位翻轉(zhuǎn)故障值,將位翻轉(zhuǎn)故障值注入信息幀,并輸出注入翻轉(zhuǎn)故障值后的信息幀。使用軟件故障注入取代真實(shí)的硬件故障注入,通過軟件故障注入方式模擬被測(cè)CAN節(jié)點(diǎn)電氣層故障引起的位翻轉(zhuǎn)錯(cuò)誤,可以很大程度上省去搭建硬件故障注入模擬電路的麻煩,測(cè)試成本低,還降低了測(cè)試工程師的測(cè)試時(shí)間和精力。
附圖說明
圖1為一實(shí)施例中CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法的流程圖;
圖2為另一實(shí)施例中CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法的流程圖;
圖3為一實(shí)施例中CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入系統(tǒng)的結(jié)構(gòu)圖;
圖4為另一實(shí)施例中CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入系統(tǒng)的結(jié)構(gòu)圖;
圖5為一實(shí)施例中用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)的設(shè)計(jì)架構(gòu)圖;
圖6為一實(shí)施例中用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)的硬件實(shí)施示意圖;
圖7為一實(shí)施例中用于CAN總線數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)的命令行參數(shù)架構(gòu)圖。
具體實(shí)施方式
在一個(gè)實(shí)施例中,一種CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法,如圖1所示,包括以下步驟:
步驟S130:顯示故障注入界面,并實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?/p>
故障注入界面用于測(cè)試人員進(jìn)行位翻轉(zhuǎn)故障注入操作,通過顯示故障注入界面啟動(dòng)故障注入模式。檢測(cè)被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔姆绞讲⒉晃ㄒ?,本?shí)施例中,實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?,包括:通過輪詢的方式不斷查看接收緩沖區(qū),檢測(cè)是否有接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?。具體地,可設(shè)置兩個(gè)或是兩個(gè)以上的CAN通道進(jìn)行信息幀的收發(fā),CAN0通道為其中一個(gè)CAN通道,CAN1通道為另一個(gè)CAN通道。通過輪詢的方式不斷的去查看CAN0通道接收緩沖區(qū),看是否有接收到被測(cè)CAN節(jié)點(diǎn)傳輸過來的信息幀,避免出現(xiàn)信息遺漏,提高檢測(cè)及時(shí)性。
步驟S150:在檢測(cè)到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔瑫r(shí),判斷是否接收到作用于故障注入界面的故障注入指令。
測(cè)試人員可通過故障注入界面輸入故障注入指令,可以理解,故障注入指令的具體類型并不唯一。當(dāng)檢測(cè)到存在被測(cè)CAN節(jié)點(diǎn)傳輸過來的信息幀時(shí),若接收到故障注入指令,則進(jìn)行步驟S160,若否,則說明不需要進(jìn)行位翻轉(zhuǎn)故障注入,把從CAN0通道中接收到的數(shù)據(jù)幀直接從CAN1通道中發(fā)送出去。
步驟S160:根據(jù)故障注入指令生成位翻轉(zhuǎn)故障值。
根據(jù)接收的故障注入指令不同,對(duì)應(yīng)生成的位翻轉(zhuǎn)故障值的類型也有所不同。本實(shí)施例中,在生成位翻轉(zhuǎn)故障值之后,可通過全局變量的方式傳遞,用作后續(xù)步驟進(jìn)行位翻轉(zhuǎn)故障注入。
在一個(gè)實(shí)施例中,位翻轉(zhuǎn)故障值包括信息幀數(shù)據(jù)段故障值、ID段故障值、遠(yuǎn)程標(biāo)識(shí)位段故障值、擴(kuò)展標(biāo)識(shí)位段故障值和信息幀長度段故障值中的至少一種。以位翻轉(zhuǎn)故障值同時(shí)包括信息幀數(shù)據(jù)段故障值、ID段故障值、遠(yuǎn)程標(biāo)識(shí)位段故障值、擴(kuò)展標(biāo)識(shí)位段故障值和信息幀長度段故障值為例,分別用作后續(xù)對(duì)接收到的信息幀執(zhí)行對(duì)應(yīng)協(xié)議字段,如信息幀數(shù)據(jù)段、ID段、遠(yuǎn)程標(biāo)識(shí)位段、擴(kuò)展標(biāo)識(shí)位段和信息幀長度段的故障注入。其中,信息幀數(shù)據(jù)段包括8個(gè)字節(jié),信息幀數(shù)據(jù)段故障值包括各字節(jié)的故障值。
步驟S170:將位翻轉(zhuǎn)故障值注入信息幀,并輸出注入翻轉(zhuǎn)故障值后的信息幀。
讀取對(duì)應(yīng)的信息幀,并注入指定的位翻轉(zhuǎn)故障值,隨后再把注入故障后的信息幀從CAN1通道中發(fā)送出去,以便于檢測(cè)CAN總線系統(tǒng)在注入位翻轉(zhuǎn)故障后的響應(yīng)情況。
在一個(gè)實(shí)施例中,如圖2所示,步驟S130之后,該方法還包括步驟S140。
步驟S140:當(dāng)接收到作用于故障注入界面的指令操作幫助指令后,顯示預(yù)存的故障注入指令操作提示信息。
步驟S140具體可在步驟S150之前,也可在步驟S150之后。測(cè)試人員同樣可通過故障注入界面輸入指令操作幫助指令,當(dāng)測(cè)試人員不熟或者是不懂如何操作故障注入指令時(shí),則可以通過輸入幫助指令查看顯示的提示信息,供測(cè)試人員查詢故障注入指令或是其他指令的具體使用方式,提高了測(cè)試操作便利性。
在一個(gè)實(shí)施例中,步驟S170之后,該方法還包括步驟S180。
步驟S180:當(dāng)接收到作用于故障注入界面的清除故障指令后,清除位翻轉(zhuǎn)故障值。
測(cè)試人員同樣可通過故障注入界面輸入清除故障指令。當(dāng)需要停止對(duì)接收到的信息幀執(zhí)行故障注入時(shí),則可以通過在線清除所設(shè)置的位翻轉(zhuǎn)故障值。清除位翻轉(zhuǎn)故障值之后,會(huì)把從CAN0通道接收到的信息幀直接從CAN1通道中發(fā)送出去,從而實(shí)現(xiàn)無故障的傳輸模式。
通過提供故障清除功能,測(cè)試人員可從故障注入模式切換至無故障的傳輸模式,還可重新輸入故障注入指令對(duì)位翻轉(zhuǎn)故障值再次進(jìn)行設(shè)置,提高了測(cè)試便利性。
在一個(gè)實(shí)施例中,繼續(xù)參照?qǐng)D2,步驟S130之前,該方法還包括步驟S110和步驟S120。
步驟S110:顯示參數(shù)設(shè)置界面,并接收作用于參數(shù)設(shè)置界面的參數(shù)設(shè)置指令。
參數(shù)設(shè)置界面用于測(cè)試人員進(jìn)行通道參數(shù)設(shè)置操作,通過顯示參數(shù)設(shè)置界面啟動(dòng)參數(shù)設(shè)置模式。測(cè)試人員可通過參數(shù)設(shè)置界面輸入?yún)?shù)設(shè)置指令??梢岳斫?,參數(shù)設(shè)置指令的類型并不唯一,不同類型的參數(shù)設(shè)置指令用于對(duì)CAN傳輸通道進(jìn)行不同的參數(shù)設(shè)置。
步驟S120:根據(jù)參數(shù)設(shè)置指令對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置。
根據(jù)接收的參數(shù)設(shè)置指令進(jìn)行通道傳輸參數(shù)設(shè)置,避免影響到后面線程對(duì)信息幀的接收。對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置,具體可包括傳輸通道的波特率、傳輸通道的工作模式、傳輸通道的濾波模式、傳輸通道接收信息幀的驗(yàn)收碼以及傳輸通道接收信息幀的屏蔽碼等參數(shù)進(jìn)行設(shè)置。
步驟S120之后,在接收到作用于參數(shù)設(shè)置界面的注入模式啟動(dòng)指令后執(zhí)行步驟S130,啟動(dòng)故障注入模式。可以理解,在其他實(shí)施例中,也可以是在完成對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置之后直接執(zhí)行步驟S130。
在一個(gè)實(shí)施例中,步驟S110中顯示參數(shù)設(shè)置界面之后,該方法還可包括步驟:接收作用于參數(shù)設(shè)置界面的系統(tǒng)退出指令后,退出系統(tǒng)程序。測(cè)試人員可通過參數(shù)設(shè)置界面輸入系統(tǒng)退出指令,結(jié)束對(duì)系統(tǒng)軟件的繼續(xù)使用。
在一個(gè)實(shí)施例中,步驟S130中顯示故障注入界面之后,該方法還可包括步驟S190。
步驟S190:當(dāng)接收到作用于故障注入界面的故障注入退出指令后,釋放故障注入所占用的內(nèi)存資源并退出線程運(yùn)行,返回參數(shù)設(shè)置界面。
步驟S190具體可在步驟S140之前,也可在步驟S140之后。測(cè)試人員可通過故障注入界面輸入故障注入退出指令,主線程在接收到故障注入退出指令后,以全局變量的方式把故障注入退出指令傳遞給接收線程,隨后接收線程便釋放故障注入所占用的內(nèi)存資源,并且退出線程運(yùn)行,減少內(nèi)存被占用的資源,同時(shí)返回參數(shù)設(shè)置界面,便于測(cè)試人員重新設(shè)置通道傳輸參數(shù)。
此外,在一個(gè)實(shí)施例中,該方法還可包括對(duì)接收的指令進(jìn)行合法性驗(yàn)證,并在驗(yàn)證不通過時(shí)輸出錯(cuò)誤提示信息的步驟。
具體地,可根據(jù)預(yù)設(shè)的驗(yàn)證規(guī)則,在參數(shù)設(shè)置模式和故障注入模式下均對(duì)接收的指令進(jìn)行合法性驗(yàn)證,包括對(duì)參數(shù)設(shè)置指令、注入模式啟動(dòng)指令、系統(tǒng)退出指令、指令操作幫助指令、故障注入指令、清除故障指令、故障注入退出指令進(jìn)行合法性驗(yàn)證。當(dāng)指令驗(yàn)證通過后則執(zhí)行對(duì)應(yīng)的步驟,若指令驗(yàn)證不通過則輸出對(duì)應(yīng)的錯(cuò)誤提示信息,然后退回到原工作模式等待測(cè)試人員繼續(xù)輸入指令。
上述CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法,使用軟件故障注入取代真實(shí)的硬件故障注入,通過軟件故障注入方式模擬被測(cè)CAN節(jié)點(diǎn)電氣層故障引起的位翻轉(zhuǎn)錯(cuò)誤,可以很大程度上省去搭建硬件故障注入模擬電路的麻煩,測(cè)試成本低,還降低了測(cè)試工程師的測(cè)試時(shí)間和精力。
在一個(gè)實(shí)施例中,一種CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入系統(tǒng),如圖3所示,包括信息幀檢測(cè)模塊130、注入指令檢測(cè)模塊150、故障值生成模塊160和故障值注入模塊170。
信息幀檢測(cè)模塊130用于顯示故障注入界面,并實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?/p>
故障注入界面用于測(cè)試人員進(jìn)行位翻轉(zhuǎn)故障注入操作,通過顯示故障注入界面啟動(dòng)故障注入模式。檢測(cè)被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔姆绞讲⒉晃ㄒ唬緦?shí)施例中,實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔ǎ和ㄟ^輪詢的方式不斷查看接收緩沖區(qū),檢測(cè)是否有接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?。具體地,可設(shè)置兩個(gè)或是兩個(gè)以上的CAN通道進(jìn)行信息的收發(fā),CAN0通道為其中一個(gè)CAN通道,CAN1通道為另一個(gè)CAN通道。通過輪詢的方式不斷的去查看CAN0通道接收緩沖區(qū),看是否有接收到被測(cè)CAN節(jié)點(diǎn)傳輸過來的信息幀,避免出現(xiàn)信息遺漏,提高檢測(cè)及時(shí)性。
注入指令檢測(cè)模塊150用于在檢測(cè)到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔瑫r(shí),判斷是否接收到作用于故障注入界面的故障注入指令。
測(cè)試人員可通過故障注入界面輸入故障注入指令,可以理解,故障注入指令的具體類型并不唯一。當(dāng)檢測(cè)到存在被測(cè)CAN節(jié)點(diǎn)傳輸過來的信息幀時(shí),若沒有接收到故障注入指令,則說明不需要進(jìn)行位翻轉(zhuǎn)故障注入,把從CAN0通道中接收到的數(shù)據(jù)幀直接從CAN1通道中發(fā)送出去。
故障值生成模塊160用于在接收到作用于故障注入界面的故障注入指令時(shí),根據(jù)故障注入指令生成位翻轉(zhuǎn)故障值。
根據(jù)接收的故障注入指令不同,對(duì)應(yīng)生成的位翻轉(zhuǎn)故障值的類型也有所不同。本實(shí)施例中,在生成位翻轉(zhuǎn)故障值之后,可通過全局變量的方式傳遞,用作后續(xù)進(jìn)行位翻轉(zhuǎn)故障注入。在一個(gè)實(shí)施例中,位翻轉(zhuǎn)故障值包括信息幀數(shù)據(jù)段故障值、ID段故障值、遠(yuǎn)程標(biāo)識(shí)位段故障值、擴(kuò)展標(biāo)識(shí)位段故障值和信息幀長度段故障值中的至少一種。
故障值注入模塊170用于將位翻轉(zhuǎn)故障值注入信息幀,并輸出注入翻轉(zhuǎn)故障值后的信息幀。
讀取對(duì)應(yīng)的信息幀,并注入指定的位翻轉(zhuǎn)故障值,隨后再把注入故障后的信息幀從CAN1通道中發(fā)送出去,以便于檢測(cè)CAN總線系統(tǒng)在注入位翻轉(zhuǎn)故障后的響應(yīng)情況。
在一個(gè)實(shí)施例中,如圖4所示,該系統(tǒng)還包括提示信息顯示模塊140。
提示信息顯示模塊140用于在信息幀檢測(cè)模塊130檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?,?dāng)接收到作用于故障注入界面的指令操作幫助指令后,顯示預(yù)存的故障注入指令操作提示信息。
測(cè)試人員同樣可通過故障注入界面輸入指令操作幫助指令,當(dāng)測(cè)試人員不熟或者是不懂如何操作故障注入指令時(shí),則可以通過輸入幫助指令查看顯示的提示信息,供測(cè)試人員查詢故障注入指令或是其他指令的具體使用方式,提高了測(cè)試操作便利性。
在一個(gè)實(shí)施例中,該系統(tǒng)還包括故障值清除模塊180。
故障值清除模塊180用于在故障值注入模塊170輸出注入翻轉(zhuǎn)故障值后的信息幀之后,當(dāng)接收到作用于故障注入界面的清除故障指令后,清除位翻轉(zhuǎn)故障值。
測(cè)試人員同樣可通過故障注入界面輸入清除故障指令。當(dāng)需要停止對(duì)接收到的信息幀執(zhí)行故障注入時(shí),則可以通過在線清除所設(shè)置的位翻轉(zhuǎn)故障值。清除位翻轉(zhuǎn)故障值之后,把從CAN0通道接收到的信息幀直接從CAN1通道中發(fā)送出去,從而實(shí)現(xiàn)無故障的傳輸模式。
通過提供故障清除功能,測(cè)試人員可從故障注入模式切換至無故障的傳輸模式,還可重新輸入故障注入指令對(duì)位翻轉(zhuǎn)故障值再次進(jìn)行設(shè)置,提高了測(cè)試便利性。
在一個(gè)實(shí)施例中,繼續(xù)參照?qǐng)D4,該系統(tǒng)還包括設(shè)置指令接收模塊110和通道參數(shù)設(shè)置模塊120。
設(shè)置指令接收模塊110用于在信息幀檢測(cè)模塊130顯示故障注入界面,并實(shí)時(shí)檢測(cè)是否接收到被測(cè)CAN節(jié)點(diǎn)傳輸?shù)男畔?,顯示參數(shù)設(shè)置界面,并接收作用于參數(shù)設(shè)置界面的參數(shù)設(shè)置指令。
參數(shù)設(shè)置界面用于測(cè)試人員進(jìn)行通道參數(shù)設(shè)置操作,通過顯示參數(shù)設(shè)置界面啟動(dòng)參數(shù)設(shè)置模式。測(cè)試人員可通過參數(shù)設(shè)置界面輸入?yún)?shù)設(shè)置指令??梢岳斫猓瑓?shù)設(shè)置指令的類型并不唯一,不同類型的參數(shù)設(shè)置指令用于對(duì)CAN傳輸通道進(jìn)行不同的參數(shù)設(shè)置。
通道參數(shù)設(shè)置模塊120用于根據(jù)參數(shù)設(shè)置指令對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置。
根據(jù)接收的參數(shù)設(shè)置指令進(jìn)行通道傳輸參數(shù)設(shè)置,避免影響到后面線程對(duì)信息幀的接收。對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置,具體可包括傳輸通道的波特率、傳輸通道的工作模式、傳輸通道的濾波模式、傳輸通道接收信息幀的驗(yàn)收碼以及傳輸通道接收信息幀的屏蔽碼等參數(shù)進(jìn)行設(shè)置。
在對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置之后,通道參數(shù)設(shè)置模塊120在接收到作用于參數(shù)設(shè)置界面的注入模式啟動(dòng)指令后控制信息幀檢測(cè)模塊130顯示故障注入界面,啟動(dòng)故障注入模式。可以理解,在其他實(shí)施例中,也可以是在完成對(duì)CAN傳輸通道的傳輸參數(shù)進(jìn)行設(shè)置之后直接啟動(dòng)故障注入模式。
在一個(gè)實(shí)施例中,該系統(tǒng)還包括系統(tǒng)退出模塊,系統(tǒng)退出模塊用于在設(shè)置指令接收模塊110顯示參數(shù)設(shè)置界面之后,接收作用于參數(shù)設(shè)置界面的系統(tǒng)退出指令后,退出系統(tǒng)程序。測(cè)試人員可通過參數(shù)設(shè)置界面輸入系統(tǒng)退出指令,結(jié)束對(duì)系統(tǒng)軟件的繼續(xù)使用。
在一個(gè)實(shí)施例中,該系統(tǒng)還包括故障注入退出模塊190。
故障注入退出模塊190用于在信息幀檢測(cè)模塊130顯示故障注入界面之后,當(dāng)接收到作用于故障注入界面的故障注入退出指令后,釋放故障注入所占用的內(nèi)存資源并退出線程運(yùn)行,返回參數(shù)設(shè)置界面。
測(cè)試人員可通過故障注入界面輸入故障注入退出指令,主線程在接收到故障注入退出指令后,以全局變量的方式把故障注入退出指令傳遞給接收線程,隨后接收線程便釋放故障注入所占用的內(nèi)存資源,并且退出線程運(yùn)行,減少內(nèi)存被占用的資源,同時(shí)返回參數(shù)設(shè)置界面,便于測(cè)試人員重新設(shè)置通道傳輸參數(shù)。
此外,在一個(gè)實(shí)施例中,該系統(tǒng)還可包括指令驗(yàn)證模塊,指令驗(yàn)證模塊用于對(duì)接收的指令進(jìn)行合法性驗(yàn)證,并在驗(yàn)證不通過時(shí)輸出錯(cuò)誤提示信息。
具體地,可根據(jù)預(yù)設(shè)的驗(yàn)證規(guī)則,在參數(shù)設(shè)置模式和故障注入模式下均對(duì)接收的指令進(jìn)行合法性驗(yàn)證,包括對(duì)參數(shù)設(shè)置指令、注入模式啟動(dòng)指令、系統(tǒng)退出指令、指令操作幫助指令、故障注入指令、清除故障指令、故障注入退出指令進(jìn)行合法性驗(yàn)證。當(dāng)指令驗(yàn)證通過后則執(zhí)行對(duì)應(yīng)的步驟,若指令驗(yàn)證不通過則輸出對(duì)應(yīng)的錯(cuò)誤提示信息,然后退回到原工作模式等待測(cè)試人員繼續(xù)輸入指令。
上述CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入系統(tǒng),使用軟件故障注入取代真實(shí)的硬件故障注入,通過軟件故障注入方式模擬被測(cè)CAN節(jié)點(diǎn)電氣層故障引起的位翻轉(zhuǎn)錯(cuò)誤,可以很大程度上省去搭建硬件故障注入模擬電路的麻煩,測(cè)試成本低,還降低了測(cè)試工程師的測(cè)試時(shí)間和精力。
為便于更好地理解上述CAN總線數(shù)據(jù)鏈路層的位翻轉(zhuǎn)故障注入方法和系統(tǒng)的實(shí)施方式,下面結(jié)合具體的軟件系統(tǒng)進(jìn)行詳細(xì)的解釋說明。
如圖5所示為一實(shí)施例中用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)設(shè)計(jì)架構(gòu)圖,軟件系統(tǒng)架構(gòu)由三個(gè)子模塊構(gòu)成,分別是CAN通道參數(shù)設(shè)置模塊、CAN信息幀故障注入模塊和系統(tǒng)退出模塊。基于CAN總線的協(xié)議層故障注入器需要有兩個(gè)或是兩個(gè)以上的CAN通道,CAN0通道是指其中一個(gè)CAN通道,而CAN1通道是指其另一個(gè)CAN通道。
CAN通信參數(shù)設(shè)置模塊用于設(shè)置故障注入工具中CAN傳輸通道的傳輸參數(shù),比如傳輸通道的波特率、傳輸通道的工作模式、傳輸通道的濾波模式、傳輸通道接收信息幀的驗(yàn)收碼以及傳輸通道接收信息幀的屏蔽碼等。通道參數(shù)設(shè)置的正確與否會(huì)直接影響到后面線程接收模塊對(duì)信息幀的接收,因此,必須預(yù)先設(shè)定好傳輸通道參數(shù)。
系統(tǒng)退出模塊的作用則是退出系統(tǒng),結(jié)束對(duì)系統(tǒng)軟件的繼續(xù)使用。
CAN信息幀的故障注入模塊下又分為線程接收模塊、指令操作幫助模塊、故障注入模塊、清除故障模塊以及故障注入退出模塊。每一個(gè)具體模塊的功能說明如下所示:
線程接收模塊:它是通過輪詢的方式不斷的去查看CAN0通道接收緩沖區(qū),看是否有接收到被測(cè)CAN節(jié)點(diǎn)傳輸過來的信息幀,如果存在,則讀取對(duì)應(yīng)的信息幀,并注入指定的位翻轉(zhuǎn)故障,隨后再把注入故障后的信息幀從CAN1通道中發(fā)送出去。值的注意的是,線程接收模塊的故障值是故障注入模塊通過全局變量的方式傳遞過來。
指令操作幫助模塊:當(dāng)測(cè)試人員不熟或者是不懂如何操作故障注入指令時(shí),則可以通過最直接有效的help幫助指令供測(cè)試人員查詢故障注入指令或是其他指令的具體使用方式。
故障注入模塊:它是數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)的核心,它通過設(shè)置全局變量的方式與線程接收模塊進(jìn)行通信,也即故障注入模塊設(shè)置的故障值通過全局變量的方式傳遞給線程接收模塊,線程接收模塊便可對(duì)接收到的信息幀執(zhí)行對(duì)應(yīng)協(xié)議字段,比如ID段、遠(yuǎn)程標(biāo)識(shí)位段、擴(kuò)展標(biāo)識(shí)位段、信息幀長度段以及信息幀數(shù)據(jù)段等的故障注入。
清除故障模塊:當(dāng)需要停止對(duì)接收到的信息幀執(zhí)行故障注入時(shí),則可以通過在線調(diào)用清除故障模塊去清除在故障注入模塊中所設(shè)置的故障值。這樣,故障注入工具會(huì)把從CAN0通道接收到的信息幀直接從CAN1通道中發(fā)送出去,從而實(shí)現(xiàn)無故障的傳輸模式。
故障注入退出模塊:當(dāng)需要重新設(shè)置通道傳輸參數(shù)時(shí),則可以通過調(diào)用故障注入退出模塊退回參數(shù)設(shè)置模式,以此同時(shí),故障注入退出模塊還會(huì)全局變量的方式給線程接收模塊發(fā)送指令,去釋放線程接收模塊中所占用的內(nèi)存資源,并且退出線程運(yùn)行。
如圖6所示為用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)具體的硬件實(shí)施案例。CAN總線仿真模塊用于仿真被測(cè)CAN節(jié)點(diǎn)周邊的其他網(wǎng)絡(luò)節(jié)點(diǎn),仿真CAN節(jié)點(diǎn)與真實(shí)被測(cè)CAN節(jié)點(diǎn)之間用硬件接口卡連接起來,從而形成一個(gè)整體的CAN通信網(wǎng)絡(luò)。在硬件接口卡和被測(cè)CAN節(jié)點(diǎn)之間,接入“用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)”。通過這種接入方式,數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)可以從CAN0通道中截獲被測(cè)CAN節(jié)點(diǎn)發(fā)送出來的信息幀,并可隨意修改信息幀中的位信息,模擬被測(cè)CAN節(jié)點(diǎn)中各種電氣層故障引起的在仲裁域、控制域以及數(shù)據(jù)域中的位翻轉(zhuǎn)錯(cuò)誤,隨后再把注入故障后的信息幀從CAN1通道中發(fā)送出去,最終可以檢測(cè)CAN總線系統(tǒng)在注入位翻轉(zhuǎn)故障后的響應(yīng)情況。
整個(gè)系統(tǒng)軟件的案例實(shí)施都是基于命令行的操作方式進(jìn)行,通過這種方式使得測(cè)試人員可以更加方便快捷的使用數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)來執(zhí)行故障注入的測(cè)試。用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)的命令參數(shù)架構(gòu)如圖7所示。
用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)可以工作在參數(shù)設(shè)置模式和故障注入模式下,當(dāng)打開系統(tǒng)軟件,系統(tǒng)首先會(huì)先進(jìn)入到參數(shù)設(shè)置模式。在參數(shù)設(shè)置模式下,可供測(cè)試人員調(diào)用的控制指令有“config”、“faultinject”和“quit”。
“config”指令(即參數(shù)設(shè)置指令)用來設(shè)定CAN通道傳輸參數(shù),其后通過指定字母的方式來設(shè)置每一個(gè)具體的通道傳輸參數(shù),具體如下:
1)字母c用來指定所需設(shè)置的傳輸通道,‘0’表示通道0,‘1’表示通道1,‘2’表示同時(shí)設(shè)置通道0和通道1。
2)字母b用來設(shè)定CAN傳輸通道具體的傳輸波特率,‘0’表示5Kbps,‘1’表示10Kbps,‘2’表示20Kbps,‘3’表示40Kbps,‘4’表示50Kbps,‘5’表示80Kbps,‘6’表示100Kbps,‘7’表示125Kbps,‘8’表示200Kbps,‘9’表示250Kbps,‘10’表示400Kbps,‘11’表示500Kbps,‘12’表示666Kbps,‘13’表示800Kbps,‘14’表示1000Kbps。
3)字母j用來設(shè)定CAN傳輸通道具體的工作方式,‘0’表示CAN傳輸通道工作在正常模式,‘1’表示CAN傳輸通道工作在只聽模式。
4)字母f用來設(shè)定CAN傳輸通道的濾波方式,‘0’表示CAN通道工作在雙濾波方式,‘1’表示CAN通道工作在單濾波方式。在單濾波模式下只有一個(gè)長度為4個(gè)字節(jié)的濾波器,接收到的報(bào)文只需要跟這個(gè)濾波器進(jìn)行比較來決定是否可以放入接收緩沖區(qū)中。在雙濾波模式下有兩個(gè)短濾波器,一條接收的報(bào)文要和兩個(gè)濾波器比較來決定是否放入接收緩沖區(qū)中。至少要有一個(gè)濾波器表示為“接收”,接收的報(bào)文才有效。
5)字母m用來設(shè)定CAN傳輸通道接收數(shù)據(jù)的屏蔽碼,具體屏蔽碼碼值由8位0-f的16進(jìn)制字符構(gòu)成。
6)字母i是用來設(shè)定CAN傳輸通道接收數(shù)據(jù)驗(yàn)收碼,具體的驗(yàn)收碼碼值由8位0-f的16進(jìn)制字符構(gòu)成。
“quit”指令(即系統(tǒng)退出指令)是用來退出系統(tǒng),停止對(duì)故障注入系統(tǒng)的繼續(xù)使用。
“faultinject”指令(即注入模式啟動(dòng)指令)會(huì)使得軟件系統(tǒng)進(jìn)入到故障注入模式,在故障注入模式下,可以執(zhí)行的指令有“help”,“fault”,“clearfault”,“quit”。
當(dāng)測(cè)試人員在不懂或是忘記如何操作故障注入指令時(shí),“help”幫助指令(即指令操作幫助指令)可以直接有效的幫助測(cè)試人員快速掌握故障注入指令或是其他指令的具體使用方式;
當(dāng)測(cè)試人員需要執(zhí)行故障注入的操作時(shí),則可以通過調(diào)用“fault”指令(即故障注入指令)來執(zhí)行,其后跟隨的字母a、b、c、d、e、f、g、h、i、r、x、l是分別用來指定要注入故障值的具體的協(xié)議字段。具體如下:
1)字母a用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第1個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
2)字母b用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第2個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
3)字母c用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第3個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
4)字母d用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第4個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
5)字母e用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第5個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
6)字母f用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第6個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
7)字母g用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第7個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
8)字母h用來設(shè)定CAN協(xié)議數(shù)據(jù)幀中數(shù)據(jù)段的第8個(gè)字節(jié)的故障值,具體的故障碼由2位0-f的16進(jìn)制字符構(gòu)成。
9)字母i用來設(shè)定CAN協(xié)議中ID段的故障值,具體的故障碼由8位0-f的16進(jìn)制字符構(gòu)成。
10)字母r用來設(shè)定CAN協(xié)議中遠(yuǎn)程標(biāo)識(shí)位段的故障值,其中0表示遠(yuǎn)程幀,1表示數(shù)據(jù)幀,其他則為非法數(shù)據(jù)。
11)字母x用來設(shè)定CAN協(xié)議中擴(kuò)展標(biāo)識(shí)位段的故障值,其中0表示標(biāo)準(zhǔn)幀,1表示擴(kuò)展幀,其他則為非法數(shù)據(jù)。
12)字母l用來設(shè)定CAN協(xié)議中數(shù)據(jù)幀長度段的故障值,具體的故障碼由1位0-9的10進(jìn)制字符構(gòu)成。
當(dāng)測(cè)試人員需要清除前面設(shè)定好的故障值時(shí),則通過調(diào)用“clearfault”指令(即清除故障指令)來完成即可,這樣可以使得用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)進(jìn)入無故障的注入模式,也即故障注入系統(tǒng)會(huì)把從CAN0通道中接收到的數(shù)據(jù)幀直接從CAN1通道中發(fā)送出去。
當(dāng)測(cè)試人員需要重新設(shè)置CAN通道的傳輸參數(shù)時(shí),則可以通過在線調(diào)用“quit”指令(故障注入退出指令)來退出當(dāng)前的故障注入模式,回到參數(shù)設(shè)置模式。而不必通過再次進(jìn)入系統(tǒng)的方式來重新設(shè)置通道傳輸參數(shù)。
用于CAN總線協(xié)議層位翻轉(zhuǎn)故障注入系統(tǒng)具體的實(shí)施工作流程如下所示:
打開系統(tǒng)軟件,系統(tǒng)會(huì)進(jìn)入的參數(shù)設(shè)置模式并等待測(cè)試人員輸入指令,測(cè)試人員在此界面下可以調(diào)用的指令有“config”,“quit”和“faultinject”等?!癱onfig”指令用于配置CAN通道傳輸?shù)木唧w參數(shù),比如通道傳輸?shù)牟ㄌ芈?、通道接收信息幀的屏蔽碼以及驗(yàn)收碼等;當(dāng)測(cè)試人員需要退出系統(tǒng)時(shí),則可以通過調(diào)用“quit”指令退出系統(tǒng),停止對(duì)系統(tǒng)的繼續(xù)使用;另外,當(dāng)測(cè)試人員調(diào)用“faultinject”指令時(shí),系統(tǒng)首先會(huì)啟動(dòng)一個(gè)接收線程,這個(gè)線程會(huì)通過輪詢的方式不斷的去讀取CAN0通道的信息幀接收緩沖區(qū),查看是否已接收有信息幀,由于此時(shí)故障注入模塊還未注入具體的故障值,因此,線程接收模塊會(huì)把從CAN0通道中接收到的數(shù)據(jù)幀直接從CAN1通道中發(fā)送出去。以此同時(shí),軟件系統(tǒng)會(huì)進(jìn)入到故障注入模式下等待測(cè)試人員輸入具體的故障注入指令。
在故障注入模式下,測(cè)試人員可以調(diào)用的指令有“help”,“fault”,“clearfault”和“quit”?!癶elp”幫助指令可以直接有效的幫助測(cè)試人員快速掌握故障注入指令的具體使用方式;“fault”指令則可以把其設(shè)置的具體協(xié)議字段,比如CAN信息幀的ID段、信息幀長度段、信息幀數(shù)據(jù)段等,的故障值通過全局變量的方式傳遞給線程接收模塊,線程接收模塊會(huì)把全局變量傳遞過來的故障值注入到從CAN0通道接收到的信息幀中,隨后再把注入故障后的信息幀從CAN1通道中發(fā)送出去;當(dāng)測(cè)試人員需要清除設(shè)定故障值時(shí),只需要調(diào)用“clearfault”指令,即可清除前面設(shè)置的故障值,在這種情況下,線程接收模塊會(huì)把從CAN0通道接收到的信息幀從CAN1通道中直接發(fā)送出去,使得數(shù)據(jù)鏈路層故障注入器進(jìn)入無故障注入模式;當(dāng)測(cè)試人員希望重新設(shè)置傳輸通道的具體參數(shù)時(shí),則可以通過在線調(diào)用“quit”指令來退出當(dāng)前的故障注入模式,值的注意的是,在退出故障注入模式之前,故障注入器會(huì)通過全局變量的方式給線程接收模塊發(fā)送一個(gè)退出線程的指令,線程接收模塊接收到此指令后會(huì)釋放器所占用的內(nèi)存資源并且會(huì)結(jié)束線程的繼續(xù)運(yùn)行,隨后便可回到參數(shù)設(shè)置模式,繼續(xù)傳輸通道參數(shù)的設(shè)置。
除此之外,不管是在參數(shù)設(shè)置模式還是在故障注入模式,用于CAN總線的數(shù)據(jù)鏈路層位翻轉(zhuǎn)故障注入系統(tǒng)都會(huì)對(duì)測(cè)試人員輸入的指令值進(jìn)行合法性檢測(cè),如果指令值在合理的范圍之內(nèi),系統(tǒng)會(huì)繼續(xù)執(zhí)行,否則,系統(tǒng)軟件會(huì)給測(cè)試人員一個(gè)錯(cuò)誤提示,并且退回到原工作模式等待用戶繼續(xù)輸入指令。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。