OSEK/VDX直接網(wǎng)絡(luò)管理一致測(cè)試方法設(shè)計(jì)
隨著近年汽車產(chǎn)業(yè)的快速發(fā)展,電子產(chǎn)品廣泛應(yīng)用于汽車控制,如發(fā)動(dòng)機(jī)控制系統(tǒng)、轉(zhuǎn)向系統(tǒng)、制動(dòng)系統(tǒng)等裝置中都采用電子控制單元ECU(Electronic Control Unit)[1]。一些高檔的轎車大約有70個(gè)ECU,ECU之間傳遞的信息超過(guò)2500條[2]。為了使ECU之間實(shí)現(xiàn)信息共享,誕生了在汽車控制系統(tǒng)中應(yīng)用的互聯(lián)網(wǎng)絡(luò),即車載網(wǎng)絡(luò)。隨著汽車中電子單元的增加,網(wǎng)絡(luò)越來(lái)越復(fù)雜,ECU在通信時(shí),可能由于其他節(jié)點(diǎn)未上線或出現(xiàn)故障而造成信息丟失,所以需要專門的網(wǎng)絡(luò)管理組件對(duì)車載網(wǎng)絡(luò)進(jìn)行管理,以達(dá)到車載網(wǎng)絡(luò)信息傳輸準(zhǔn)確性、安全性的目的。
OSEK/VDX (Open Systems and the Corresponding Interfaces for Automotive Electronics/Vehicle Distributed eXecutive) 是歐洲主要的汽車廠商和研究機(jī)構(gòu)聯(lián)合提出的一種基于汽車電子開(kāi)放式系統(tǒng)及其接口的軟件標(biāo)準(zhǔn)。鑒于汽車網(wǎng)絡(luò)的安全性和可靠性,OSEK/VDX中的網(wǎng)絡(luò)管理NM(Network Management)規(guī)范提供了標(biāo)準(zhǔn)的管理策略,通過(guò)接口和服務(wù)來(lái)實(shí)現(xiàn)汽車網(wǎng)絡(luò)中ECU節(jié)點(diǎn)的監(jiān)控和管理[3]。OSEK/VDX規(guī)范對(duì)網(wǎng)絡(luò)管理提出直接網(wǎng)絡(luò)管理和間接網(wǎng)絡(luò)管理兩種實(shí)現(xiàn)機(jī)制。
OSEK/VDX規(guī)范是通過(guò)自然語(yǔ)言和圖表形式進(jìn)行描述的,程序開(kāi)發(fā)人員在根據(jù)規(guī)范編寫應(yīng)用程序時(shí),可能因?yàn)閷?duì)規(guī)范的不同理解、編寫代碼時(shí)的失誤等原因,導(dǎo)致應(yīng)用程序與規(guī)范的不一致。對(duì)于安全性有極高要求的汽車電子系統(tǒng)而言,這種現(xiàn)象是不允許的。因此,有必要通過(guò)一致性測(cè)試來(lái)判斷開(kāi)發(fā)的應(yīng)用程序是否符合預(yù)定規(guī)范。近年來(lái),學(xué)術(shù)界對(duì)OSEK OS(OSEK Operation System)的一致性測(cè)試方法提出了一些解決方案。參考文獻(xiàn)[4]提出了一種OSEK OS服務(wù)調(diào)用規(guī)范的一致性測(cè)試方法,參考文獻(xiàn)[5]設(shè)計(jì)了一種OSEK OS一致性測(cè)試用例生成的方法,但是很少對(duì)OSEK NM的一致性測(cè)試做相應(yīng)研究。
本文在深入研究OSEK網(wǎng)絡(luò)管理規(guī)范的基礎(chǔ)上提出了一種OSEK NM一致性測(cè)試方法,設(shè)計(jì)出一種基于直接網(wǎng)絡(luò)管理功能的測(cè)試架構(gòu),并定義了測(cè)試方案、測(cè)試報(bào)文的數(shù)據(jù)結(jié)構(gòu)和測(cè)試流程。
1 OSEK直接網(wǎng)絡(luò)管理基本原理
在OSEK NM規(guī)范中,直接網(wǎng)絡(luò)管理是一種自組織形式網(wǎng)絡(luò)管理。網(wǎng)絡(luò)中節(jié)點(diǎn)之間沒(méi)有主從之分,每個(gè)節(jié)點(diǎn)都被網(wǎng)絡(luò)中其他的節(jié)點(diǎn)監(jiān)控,同時(shí)該節(jié)點(diǎn)也監(jiān)控網(wǎng)絡(luò)中的其他節(jié)點(diǎn)。直接網(wǎng)絡(luò)管理通過(guò)邏輯環(huán)對(duì)車載網(wǎng)絡(luò)進(jìn)行管理與監(jiān)控,如圖1所示為直接網(wǎng)絡(luò)管理邏輯環(huán)的體系結(jié)構(gòu)。連接在總線上的A、B、C 3個(gè)節(jié)點(diǎn)都擁有自己唯一的網(wǎng)絡(luò)管理身份標(biāo)識(shí)ID,且IDAIDBIDC,根據(jù)ID的大小,以A→B→C→A的順序傳輸特定的網(wǎng)絡(luò)管理報(bào)文,形成一個(gè)虛擬邏輯環(huán)。在邏輯環(huán)中連接的所有節(jié)點(diǎn)按照邏輯環(huán)規(guī)定的方向發(fā)送特定的網(wǎng)絡(luò)管理報(bào)文,實(shí)現(xiàn)直接網(wǎng)絡(luò)管理功能。
圖2所示為直接網(wǎng)絡(luò)管理的狀態(tài)模型。通過(guò)網(wǎng)絡(luò)管理服務(wù)的調(diào)用和網(wǎng)絡(luò)通信狀況的改變,引起網(wǎng)絡(luò)管理狀態(tài)的遷移,如調(diào)用StartNM()服務(wù)可啟動(dòng)網(wǎng)絡(luò)管理功能,使節(jié)點(diǎn)的狀態(tài)從NMOff轉(zhuǎn)為NMOn。
在直接網(wǎng)絡(luò)管理中,為了滿足通信和網(wǎng)絡(luò)管理的需要,網(wǎng)絡(luò)管理協(xié)議數(shù)據(jù)單元NMPDU(NM Protocol Data Unit)包括地址域、控制域和數(shù)據(jù)域。圖3是網(wǎng)絡(luò)管理協(xié)議數(shù)據(jù)單元的基本格式。其中,Source ID表示網(wǎng)絡(luò)管理報(bào)文的源地址,即發(fā)送該網(wǎng)絡(luò)管理報(bào)文的節(jié)點(diǎn)地址;
Destination ID表示網(wǎng)絡(luò)管理報(bào)文的目標(biāo)地址,即接收該網(wǎng)絡(luò)管理報(bào)文的節(jié)點(diǎn)地址;Option Code表示操作碼,用來(lái)設(shè)置網(wǎng)絡(luò)管理報(bào)文的類型,其有Ring、Alive、LimpHome三種。 Data表示數(shù)據(jù)場(chǎng),用于定義網(wǎng)絡(luò)管理報(bào)文中的附加信息。
直接網(wǎng)絡(luò)管理中各類型報(bào)文的作用:
(1)Ring報(bào)文:一個(gè)基本的監(jiān)視報(bào)文,當(dāng)網(wǎng)絡(luò)狀態(tài)為正常狀態(tài)時(shí),網(wǎng)絡(luò)節(jié)點(diǎn)在定時(shí)器的觸發(fā)下,根據(jù)節(jié)點(diǎn)ID的大小順序地傳送Ring報(bào)文。
(2)Alive報(bào)文:一個(gè)在非正常狀態(tài)下的特殊報(bào)文,當(dāng)一個(gè)新的節(jié)點(diǎn)要加入網(wǎng)絡(luò)時(shí),節(jié)點(diǎn)向網(wǎng)絡(luò)中發(fā)送Alive報(bào)文。
(3)LimpHome報(bào)文:當(dāng)接收/發(fā)送錯(cuò)誤計(jì)數(shù)器超過(guò)其閾值或總線出現(xiàn)嚴(yán)重錯(cuò)誤時(shí),節(jié)點(diǎn)進(jìn)入NMLimpHome狀態(tài),并周期地發(fā)送LimpHome報(bào)文。
2 OSEK NM的一致性測(cè)試方法
OSEK NM的一致性測(cè)試是一種功能性測(cè)試,在一致性測(cè)試中,測(cè)試者不必關(guān)心被測(cè)IUT(Implementation Under Test)內(nèi)部的具體實(shí)現(xiàn),只需關(guān)心其表現(xiàn)出來(lái)的外部行為[6-7]。
2.1 測(cè)試的體系結(jié)構(gòu)
根據(jù)OSEK NM規(guī)范,將網(wǎng)絡(luò)管理的測(cè)試體系結(jié)構(gòu)分為兩個(gè)部分,即被測(cè)系統(tǒng)及測(cè)試系統(tǒng)。
(1)被測(cè)系統(tǒng),是IUT的載體,在測(cè)試系統(tǒng)中實(shí)現(xiàn)網(wǎng)絡(luò)管理功能。
(2)測(cè)試系統(tǒng),用來(lái)執(zhí)行測(cè)試案例程序,該設(shè)備通過(guò)網(wǎng)絡(luò)跟被測(cè)設(shè)備相互通信。
整個(gè)網(wǎng)絡(luò)管理測(cè)試方案分為兩個(gè)子塊,即測(cè)試管理模塊和輔助測(cè)試模塊。測(cè)試管理模塊由測(cè)試案例組成,在測(cè)試系統(tǒng)中運(yùn)行;輔助測(cè)試模塊作為被測(cè)系統(tǒng)的應(yīng)用程序在被測(cè)設(shè)備中運(yùn)行,用來(lái)配合測(cè)試管理模塊完成網(wǎng)絡(luò)管理功能的測(cè)試。在網(wǎng)絡(luò)管理功能測(cè)試中,輔助測(cè)試模塊起到兩方面的作用,一方面用來(lái)響應(yīng)測(cè)試系統(tǒng)的發(fā)來(lái)的請(qǐng)求,另一方面作為被測(cè)系統(tǒng)的應(yīng)用程序,通過(guò)調(diào)用NM API函數(shù),控制IUT的運(yùn)行模式,并收集被測(cè)系統(tǒng)中IUT當(dāng)前的狀態(tài)信息,返回給測(cè)試系統(tǒng)。
測(cè)試管理模塊和輔助測(cè)試模塊之間的數(shù)據(jù)信息交換通過(guò)應(yīng)用報(bào)文完成,該報(bào)文為測(cè)試管理協(xié)議數(shù)據(jù)單元(TM_PDU)。該方式下,2個(gè)測(cè)試模塊之間的通信獨(dú)立于底層網(wǎng)絡(luò)管理通信協(xié)議,不影響網(wǎng)絡(luò)管理功能。
在OSEK 直接網(wǎng)絡(luò)管理中,網(wǎng)絡(luò)出錯(cuò)處理機(jī)制是很重要的一部分。根據(jù)OSEK NM規(guī)范,OSEK NM可以處理一些常見(jiàn)的網(wǎng)絡(luò)錯(cuò)誤,如通信超時(shí)、BusOff等,所以本文在網(wǎng)絡(luò)管理功能測(cè)試系統(tǒng)中增加了模擬和制造網(wǎng)絡(luò)錯(cuò)誤的模塊。
綜上所述,在直接網(wǎng)絡(luò)管理的測(cè)試架構(gòu)中,測(cè)試系統(tǒng)必須具備以下功能:
(1)測(cè)試系統(tǒng)必須具備網(wǎng)絡(luò)管理功能,發(fā)送網(wǎng)絡(luò)管理報(bào)文,并能模擬一個(gè)或多個(gè)網(wǎng)絡(luò)管理節(jié)點(diǎn)的網(wǎng)絡(luò)關(guān)系行為。
(2)測(cè)試系統(tǒng)能接受并分析NMPDU,判斷被測(cè)系統(tǒng)中的IUT是否符合網(wǎng)絡(luò)管理規(guī)范,即帶有OSEK 直接網(wǎng)絡(luò)管理功能。
(3)測(cè)試系統(tǒng)能夠通過(guò)測(cè)試設(shè)備中一種特定的測(cè)試軟件編程來(lái)控制相應(yīng)的硬件設(shè)備,使總線出現(xiàn)特定的網(wǎng)絡(luò)故障(如Vector公司的CAN總線干擾儀CANstress)。
2.2 測(cè)試方案和測(cè)試管理報(bào)文的定義
在直接網(wǎng)絡(luò)管理模塊正常工作時(shí),ECU應(yīng)用程序通過(guò)調(diào)用NM API接口函數(shù)來(lái)控制OSEK NM的相關(guān)動(dòng)作,如功能開(kāi)啟、關(guān)閉及睡眠等。而在直接網(wǎng)絡(luò)管理的測(cè)試過(guò)程中,整個(gè)測(cè)試系統(tǒng)必須能夠模擬這一過(guò)程。為了實(shí)現(xiàn)這一功能,在測(cè)試系統(tǒng)與被測(cè)系統(tǒng)之間有兩種類型的報(bào)文,即直接網(wǎng)絡(luò)管理報(bào)文和測(cè)試管理報(bào)文。測(cè)試管理報(bào)文是測(cè)試管理模塊和輔助測(cè)試模塊之間的數(shù)據(jù)通道,使測(cè)試管理模塊能夠間接控制IUT,從而實(shí)現(xiàn)測(cè)試功能。圖4所示為測(cè)試管理模塊和輔助測(cè)試模塊之間的兩種通信模式。
測(cè)試系統(tǒng)用圖4(a)所示的通信模式獲取被測(cè)系統(tǒng)中NM模塊當(dāng)前的狀態(tài)以及配置信息,用圖4(b)所示的通信模式控制輔助測(cè)試模塊調(diào)用NM服務(wù)函數(shù),圖中虛線箭頭表示根據(jù)需求服務(wù)的返回值可以選擇性的傳回測(cè)試系統(tǒng)。
測(cè)試管理報(bào)文的格式有apiCall和apiStatus兩種:
(1)apiCall:用來(lái)請(qǐng)求輔助測(cè)試模塊調(diào)用NM API,控制OSEK NM實(shí)現(xiàn)特定的動(dòng)作。報(bào)文名定義形式為CallXXX(其中“XXX”表示NM API名稱,如:StartNM);
(2)apiStatus:將調(diào)用NM API函數(shù)的返回值和當(dāng)前NM的狀態(tài)信息返回給測(cè)試系統(tǒng),相應(yīng)的報(bào)文有APIStatus,NetStatusMsg等。
測(cè)試管理報(bào)文兩種格式的數(shù)據(jù)單元映射到CAN報(bào)文的數(shù)據(jù)幀上,如表1所示。其中,報(bào)文名編號(hào)為不同功能測(cè)試管理報(bào)文的編號(hào);服務(wù)編號(hào)為NM API編號(hào),用以標(biāo)識(shí)該報(bào)文是控制某個(gè)API的調(diào)用或?qū)δ硞€(gè)API的響應(yīng);目的ID為標(biāo)識(shí)該測(cè)試管理報(bào)文要發(fā)送到的目標(biāo)網(wǎng)絡(luò)管理節(jié)點(diǎn);報(bào)文數(shù)據(jù)單元為apiStatus報(bào)文專有數(shù)據(jù)單元,用來(lái)存儲(chǔ)API函數(shù)調(diào)用的返回值或當(dāng)前網(wǎng)絡(luò)管理單元的配置和狀態(tài)信息。
2.3 測(cè)試的流程
OSEK NM測(cè)試可分為以下步驟:
(1)根據(jù)OSEK NM規(guī)范,抽象出需要測(cè)試的內(nèi)容。如從NMNormal→NMBusSleep轉(zhuǎn)換過(guò)程中,網(wǎng)絡(luò)管理內(nèi)部狀態(tài)的變化。
(2)根據(jù)測(cè)試內(nèi)容和測(cè)試方法,將直接網(wǎng)絡(luò)管理功能分為一個(gè)或多個(gè)功能模塊,針對(duì)各個(gè)功能模塊設(shè)計(jì)相應(yīng)的測(cè)試用例。
(3)在測(cè)試系統(tǒng)中執(zhí)行測(cè)試用例,并記錄執(zhí)行過(guò)程中測(cè)試系統(tǒng)獲取的網(wǎng)絡(luò)管理狀態(tài)數(shù)據(jù)。
(4)將測(cè)試結(jié)果數(shù)據(jù)與OSEK NM管理協(xié)議做對(duì)比,分析被測(cè)功能模塊是否與協(xié)議一致,并分析不一致的可能原因。
3 測(cè)試方法驗(yàn)證
3.1 測(cè)試用例設(shè)計(jì)
本文以網(wǎng)絡(luò)管理狀態(tài)從NMNormal轉(zhuǎn)向NMBusSleep為例進(jìn)行測(cè)試。測(cè)試用例分為三個(gè)部分,即初始狀態(tài)、測(cè)試步驟和期望結(jié)果。下面給出測(cè)試用例的詳細(xì)內(nèi)容:
(1)初始狀態(tài)
①操作模式為主動(dòng)模式(NMActive);
②本地NM設(shè)置networkstatus.bussleep=0;
③網(wǎng)絡(luò)管理狀態(tài)為NMNormal;
④測(cè)試系統(tǒng)狀態(tài)與被測(cè)節(jié)點(diǎn)一致,在整個(gè)網(wǎng)絡(luò)中已建立邏輯環(huán),并正常工作。
(2)測(cè)試步驟
①測(cè)試設(shè)備發(fā)送CallGotoMode(Sleep)報(bào)文;
②當(dāng)接收接下來(lái)IUT發(fā)來(lái)的第一條報(bào)文后使測(cè)試系統(tǒng)中其他的虛擬節(jié)點(diǎn)調(diào)用GotoMode(Sleep)服務(wù);
③當(dāng)接收到IUT發(fā)來(lái)的第二條報(bào)文后,測(cè)試設(shè)備發(fā)送CallGetStatus報(bào)文,等待NetStatusMsg報(bào)文的響應(yīng),讀取被測(cè)節(jié)點(diǎn)中IUT當(dāng)前的狀態(tài);
④等待TwaitBusSleep時(shí)間段后,再次發(fā)送CallGetStatus報(bào)文,等待NetStatusMsg報(bào)文的響應(yīng),讀取被測(cè)節(jié)點(diǎn)中IUT當(dāng)前的狀態(tài)。
(3)期望結(jié)果
①IUT發(fā)送的第一條網(wǎng)絡(luò)管理報(bào)文中,sleep.ind位被置位;
②IUT發(fā)送的第二條網(wǎng)絡(luò)管理報(bào)文中,sleep.ack位被置位,且當(dāng)前IUT的網(wǎng)絡(luò)狀態(tài)為NMTwbsNormal;
③接收到sleep.ack=1的報(bào)文TwaitBusSleep后節(jié)點(diǎn)進(jìn)入NMBusSleep狀態(tài);
④整個(gè)運(yùn)行過(guò)程中,IUT都處于NMActive狀態(tài)。
3.2 測(cè)試平臺(tái)搭建與測(cè)試
測(cè)試設(shè)備由裝有CANoe軟件的PC機(jī)、CANcaseXL和CANstress組成。CANoe是由Vector公司開(kāi)發(fā)的網(wǎng)絡(luò)分析、設(shè)計(jì)和測(cè)試的專用工具,支持多種總線系統(tǒng)。CANcaseXL為Vector提供的新一代CAN和LIN的USB 2.0接口卡,與CANoe軟件組合使用。CANstress是CAN總線干擾儀,它可以直接串連到CAN網(wǎng)絡(luò)中,實(shí)現(xiàn)各種觸發(fā)條件與邏輯的干擾。被測(cè)設(shè)備為帶有OSEK NM功能的汽車儀表,外接12 V直流電源為汽車儀表供電。
基于上述測(cè)試平臺(tái)進(jìn)行網(wǎng)絡(luò)管理功能測(cè)試。首先在CANoe軟件平臺(tái)上實(shí)現(xiàn)3個(gè)CAN節(jié)點(diǎn),并用CAPL語(yǔ)言對(duì)每個(gè)節(jié)點(diǎn)編程,實(shí)現(xiàn)基于OSEK 規(guī)范的直接網(wǎng)絡(luò)管理功能,在其中一個(gè)節(jié)點(diǎn)中添加測(cè)試管理功能模塊,運(yùn)行測(cè)試用例,實(shí)現(xiàn)總體測(cè)試管理控制。汽車儀表ECU軟件中添加輔助測(cè)試程序模塊,作為儀表的應(yīng)用軟件。最后,根據(jù)預(yù)先設(shè)計(jì)好的測(cè)試用例對(duì)NMNormal到NMBusSleep的狀態(tài)轉(zhuǎn)換進(jìn)行一致性測(cè)試,并記錄測(cè)試結(jié)果。
3.3 測(cè)試結(jié)果
圖5所示為直接網(wǎng)絡(luò)管理測(cè)試在CANoe的Trace窗口上的顯示結(jié)果。圖中對(duì)報(bào)文和數(shù)據(jù)的含義做了相應(yīng)的說(shuō)明。在測(cè)試系統(tǒng)的控制下,整個(gè)網(wǎng)絡(luò)進(jìn)入睡眠狀態(tài),并根據(jù)測(cè)試案例成功讀取到直接網(wǎng)絡(luò)管理的狀態(tài)信息。
通過(guò)對(duì)Trace窗口中的數(shù)據(jù)進(jìn)行分析可見(jiàn),測(cè)試結(jié)果跟測(cè)試案例中的預(yù)期結(jié)果一致,這說(shuō)明儀表節(jié)點(diǎn)中直接網(wǎng)絡(luò)管理睡眠流程符合OSEK NM規(guī)范。同時(shí)也驗(yàn)證了該測(cè)試方法的正確性。
本文提出了一種基于OSEK NM管理的一致性測(cè)試方法,并詳細(xì)敘述了測(cè)試系統(tǒng)的體系結(jié)構(gòu)、測(cè)試方案、測(cè)試管理報(bào)文的定義,以及測(cè)試流程。最后通過(guò)對(duì)儀表節(jié)點(diǎn)的直接網(wǎng)絡(luò)管理睡眠過(guò)程的測(cè)試,說(shuō)明了該方法的有效性。通過(guò)對(duì)基于OSEK規(guī)范的直接網(wǎng)絡(luò)管理的測(cè)試,能夠發(fā)現(xiàn)OSEK NM在正常工作中很難出現(xiàn)的錯(cuò)誤,并能有效地驗(yàn)證OSEK NM的正確性,對(duì)提高基于OSEK規(guī)范的直接網(wǎng)絡(luò)管理可靠性和穩(wěn)定性有重要的作用。
評(píng)論