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