曹麗平 徐維 劉敏
【摘? 要】隨著汽車網(wǎng)聯(lián)化、智能化、電動(dòng)化的快速發(fā)展,車載以太網(wǎng)已成為新型網(wǎng)絡(luò)架構(gòu)中的骨干網(wǎng)絡(luò)。對(duì)汽車而言,汽車的自主度越高,系統(tǒng)故障導(dǎo)致的后果也將變得越來(lái)越嚴(yán)重,并且國(guó)內(nèi)車載以太網(wǎng)技術(shù)處于發(fā)展的初期,為保證這些系統(tǒng)安全可靠地運(yùn)行,車載以太網(wǎng)協(xié)議一致性測(cè)試顯得尤為重要。SOME/IP屬于車載以太網(wǎng)架構(gòu)中應(yīng)用層和傳輸層之間的中間件,對(duì)于SOME/IP而言,它是面向服務(wù)的通信。SOME/IP協(xié)議一致性測(cè)試包括SOME/IP Server測(cè)試及SOME/IP ETS測(cè)試,測(cè)試結(jié)果表明,該測(cè)試系統(tǒng)能夠有效檢測(cè)出DUT在服務(wù)請(qǐng)求及服務(wù)應(yīng)答過(guò)程中的錯(cuò)誤,為供應(yīng)商及主機(jī)廠完善產(chǎn)品協(xié)議規(guī)范提供幫助。
【關(guān)鍵詞】車載以太網(wǎng);協(xié)議一致性;SOME/IP;面向服務(wù)
中圖分類號(hào):U463.6? ? 文獻(xiàn)標(biāo)志碼:A? ? 文章編號(hào):1003-8639( 2023 )06-0055-04
Research on Conformance Testing System for Protocols in Automotive Ethernet SOME/IP
CAO Li-ping,XU Wei,LIU Min
(China Automotive Engineering Research Institute Co.,Ltd.,Chongqing 401120,China)
【Abstract】With the rapid development of automobile networking,intelligence and electrification,vehicle Ethernet has become the backbone network in the new network architecture. For cars,the higher the autonomy of the car,the more serious the consequences of system failures will become,and the domestic vehicle Ethernet technology is in the early stage of development. To ensure the safe and reliable operation of these systems,it is particularly important to test the consistency of on-board Ethernet protocol. SOME/IP belongs to the middleware between the application layer and the transmission layer in the vehicle Ethernet architecture. For SOME/IP,it is service-oriented communication. SOME/IP protocol conformance test includes SOME/IP Server test and SOME/IP ETS test,and the test results show that,the test system can effectively detect errors of DUT in the process of service request and service response,and provide help for suppliers and OEMs to improve product protocol specifications.
【Key words】vehicle Ethernet;protocol conformance test;SOME/IP;service oriented
隨著汽車電動(dòng)化、智能化、網(wǎng)聯(lián)化的快速發(fā)展,對(duì)傳統(tǒng)汽車電子電氣系統(tǒng)提出了新的需求和挑戰(zhàn)。智能座艙、智能駕駛等技術(shù)在車上大規(guī)模的應(yīng)用,使得車內(nèi)電子電氣系統(tǒng)變得越來(lái)越復(fù)雜,所需的控制器數(shù)目和算力也呈幾何倍數(shù)增長(zhǎng)。各系統(tǒng)的融合帶來(lái)了高帶寬、高速率的通信需求,傳統(tǒng)的CAN(FD)總線已不能完全滿足。車載以太網(wǎng)新型網(wǎng)絡(luò)通信技術(shù)的引入,已使這一融合變?yōu)椴糠脂F(xiàn)實(shí),車載以太網(wǎng)將成為車載網(wǎng)絡(luò)未來(lái)發(fā)展的趨勢(shì)。
本文主要研究車載以太網(wǎng)應(yīng)用層SOME/IP協(xié)議一致性測(cè)試。文中首先介紹SOME/IP的基本內(nèi)容,包括消息格式、序列化及通信機(jī)制,其次介紹SOME/IP SD的消息格式及工作機(jī)制,最后基于協(xié)議標(biāo)準(zhǔn)介紹一種協(xié)議一致性的測(cè)試方案。測(cè)試用例內(nèi)容參考OPEN ALLIANCE TC8 3.0,保證測(cè)試的標(biāo)準(zhǔn)性和通用性。測(cè)試系統(tǒng)以思博倫公司的C50為硬件基礎(chǔ),TTworkbench為軟件支撐,選用SOME/IP測(cè)試套件完成整個(gè)測(cè)試。
1? SOME/IP協(xié)議
1.1? SOME/IP概述
1)服務(wù)(Service)是什么?服務(wù)是一個(gè)離散的功能單元,可遠(yuǎn)程訪問(wèn)并獨(dú)立執(zhí)行和更新。對(duì)于SOME/IP而言,它的通信過(guò)程不再是面向信號(hào)的,是在接收方有需求的時(shí)候才發(fā)送。這種通信實(shí)現(xiàn)的方式是,當(dāng)某個(gè)ECU需要調(diào)用并實(shí)現(xiàn)其他ECU上的服務(wù)時(shí),前ECU扮演Client的角色,后ECU就扮演Server的角色,而SOME/IP就是實(shí)現(xiàn)這種遠(yuǎn)程服務(wù)調(diào)用的接口。
2)服務(wù)接口(Service Interface)是什么?接口:能夠被其它模塊調(diào)用的與應(yīng)用程序之間使用的標(biāo)準(zhǔn)的API接口;服務(wù)接口:服務(wù)與外界進(jìn)行聯(lián)系的接口,服務(wù)接口(Method、Event和Field)本身與底層通信技術(shù)無(wú)關(guān)。
3)SOME/IP是干什么的?解決服務(wù)提供方與服務(wù)消費(fèi)方之間的網(wǎng)絡(luò)通信問(wèn)題,SOME/IP報(bào)文打包了服務(wù)接口的內(nèi)容。
4)SOME/IP主要功能?遠(yuǎn)程調(diào)用(RPC)——基本的通信機(jī)制;序列化——定義數(shù)據(jù)表達(dá)方式;服務(wù)發(fā)現(xiàn)(SD)——服務(wù)發(fā)現(xiàn),發(fā)布/訂閱處理。
1.2? SOME/IP消息格式(圖1)
1)Service ID:服務(wù)的唯一識(shí)別號(hào),每個(gè)服務(wù)都被分配了一個(gè)唯一的Service ID。
2)Method ID:服務(wù)包含了一系列的方法(Method)、事件(Event)和字段(Field),均有唯一的1個(gè)Method ID,其中0—32767為方法(包括Method、Field.Getter以及Field.Setter),32768—65535為事件(包括Event和Field.Notify)。
3)Length:除Message ID和Length字段之外的所有數(shù)據(jù)長(zhǎng)度。
4)Client ID:用來(lái)識(shí)別一個(gè)具體的客戶端,在整車范圍內(nèi),Client ID必須是唯一的。
5)Session ID:可以用來(lái)識(shí)別來(lái)自同一客戶端的多次請(qǐng)求。
6)Protocol Version:SOME/IP的版本,目前為1。
7)Interface Version:主版本號(hào),用來(lái)識(shí)別服務(wù)接口,由用戶定義。比如,當(dāng)服務(wù)增加了新的功能或者發(fā)生變更,用戶可以定義新的版本號(hào),而客戶端或者服務(wù)端可以通過(guò)這個(gè)版本號(hào)來(lái)自動(dòng)判斷兼容性。
8)Message Type:用來(lái)識(shí)別不同的消息類,其消息類型詳見(jiàn)表1。
9)Return Code:用來(lái)指示請(qǐng)求是否被成功處理了,其消息類型詳見(jiàn)表2。
1.3? SOME/IP序列化
序列化是將數(shù)據(jù)結(jié)構(gòu)或?qū)ο笠罁?jù)事先定義好的規(guī)格轉(zhuǎn)換成二進(jìn)制串的過(guò)程;反序列化是將在序列化過(guò)程中所生成的二進(jìn)制串轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)或者對(duì)象的過(guò)程。根據(jù)傳輸對(duì)象的不同數(shù)據(jù)類型,有不同的序列化規(guī)則。
1)基本數(shù)據(jù)類型的序列化。SOME/IP支持的基本數(shù)據(jù)類型見(jiàn)表3。例:unit32類型數(shù)據(jù)0x12345678的序列化,見(jiàn)表4。
2)結(jié)構(gòu)體的序列化。將結(jié)構(gòu)體的數(shù)據(jù)元素順序排序,然后將各個(gè)元素依次進(jìn)行序列化,可增加Length Field來(lái)指示結(jié)構(gòu)體中數(shù)據(jù)元素的字節(jié)長(zhǎng)度,而嵌套的結(jié)構(gòu)體,也同樣需要增加Length Field。結(jié)構(gòu)體的序列化如圖2所示。
3)字符串的序列化。①格式為BOM+數(shù)據(jù)+結(jié)束語(yǔ)(固定長(zhǎng)度)。例:Member 1為utf8 18byte,“車載ETH”(E8BDA6,E8BDBD,45,54,48);Member 1為utf16LE 18byte,“序列化ABCA”(5E8F,5217,5316,0041,0042,0043)。字符串的序列化(固定長(zhǎng)度)如圖3所示。②格式為BOM+數(shù)據(jù)+結(jié)束語(yǔ)(動(dòng)態(tài)長(zhǎng)度)。例:Member 1為“浪費(fèi)”(E6B5AA,E8B4B9);Member 2為“badguy”(62,61,64,67,75,79)。字符串的序列化(動(dòng)態(tài)長(zhǎng)度)如圖4所示。
4)數(shù)組的序列化。數(shù)組是相同類型數(shù)據(jù)的集合,依據(jù)數(shù)組元素的順序排列,并進(jìn)行序列化。
5)聯(lián)合體的序列化。圖5為聯(lián)合體的序列化(動(dòng)態(tài)長(zhǎng)度)。
1.4? SOME/IP通信機(jī)制
SOME/IP是實(shí)現(xiàn)遠(yuǎn)程服務(wù)調(diào)用的接口,服務(wù)接口有Method、Event和Field。
有響應(yīng)的方法(Method with response):客戶端發(fā)送請(qǐng)求消息(Request)調(diào)用某一方法,服務(wù)端通過(guò)響應(yīng)消息(Response)將結(jié)果返回給客戶端。
無(wú)響應(yīng)的方法(Method fire & forget):客戶端發(fā)送請(qǐng)求消息(Request)調(diào)用某一方法,服務(wù)端不回復(fù)響應(yīng)。
Event——事件。Client端訂閱1個(gè)服務(wù),Server端發(fā)布該服務(wù)。
Field——字段。字段是客戶端可以遠(yuǎn)程訪問(wèn)的服務(wù)端中的變量??蛻舳丝梢酝ㄟ^(guò)遠(yuǎn)程調(diào)用Getter方法獲取Field的值,也可以通過(guò)遠(yuǎn)程調(diào)用Setter方法設(shè)置Field的值。另外,和Event相似,當(dāng)客戶端訂閱了某個(gè)事件組,若事件組中包含的Field發(fā)生了變化,服務(wù)端會(huì)主動(dòng)通過(guò)Notification消息通知客戶端。
1.5? SOME/IP SD消息格式
SOME/IP-SD[4]可以被當(dāng)做SOME/IP的一種特殊服務(wù),提供了ECU之間服務(wù)交互的方法與標(biāo)準(zhǔn),對(duì)Payload里的內(nèi)容進(jìn)行定義和實(shí)現(xiàn)。
1)報(bào)文格式——Event Entry(圖6)。Reboot Flag:重啟/上電時(shí)至1,直到Session ID完成1~0xFFFF的1個(gè)循環(huán)之后,并再次以0x0001開(kāi)頭,置0;Unicast Flag:是否支持單播接收;Length:包含Length以后的所有長(zhǎng)度;Type:報(bào)文格式;Options:Option1排在Array里第幾個(gè);Of opt 1:Option1的數(shù)目;Service ID:需要查找或公布的服務(wù);Instant ID:服務(wù)實(shí)例ID;Major Version:服務(wù)的主版本號(hào);TTL:發(fā)現(xiàn)服務(wù)時(shí)的搜索時(shí)間,提供服務(wù)時(shí)的有效時(shí)間;Minor Version:服務(wù)的次版本號(hào)。
2)報(bào)文格式——Eventgroup Entry(圖7)。Initial Data Requested Flag:在服務(wù)端發(fā)送的OFFER中,如果Explicit Initial Data Control Flag置位,那么客戶端可通過(guò)置位Initial Data Requested Flag來(lái)顯示請(qǐng)求初始數(shù)據(jù),這樣服務(wù)端會(huì)立即發(fā)送初始數(shù)據(jù);Counter:用于區(qū)分來(lái)自同一訂閱者對(duì)同一事件組的不同訂閱,如果沒(méi)有使用,填0;Eventgroup ID:事件組ID,包含若干Event和Field的邏輯分組。
3)報(bào)文格式——IPv4 Endpoint Option(圖8)。服務(wù)端在發(fā)送OFFER Entry時(shí)使用IPv4 Endpoint Option來(lái)指定提供服務(wù)的端點(diǎn)地址以及發(fā)送Event的源地址;客戶端在發(fā)送Subscribe Entry時(shí)使用IPv4 Endpoint Option來(lái)指定Event的接收地址。
4)報(bào)文格式——IPv4 Multicast Option(圖9)。服務(wù)端發(fā)送SubscribeAck時(shí),如果發(fā)送Event的目標(biāo)地址為組播地址,那么應(yīng)攜帶IPv4 Multicast Option。
2? SOME/IP一致性測(cè)試
2.1? 測(cè)試內(nèi)容
1)SOME/IP Server測(cè)試。依賴DUT自身的SOME/IP應(yīng)用功能,我們會(huì)在其中抽取一些典型的服務(wù)和方法,用來(lái)驗(yàn)證一些比較基礎(chǔ)的內(nèi)容,比如報(bào)文格式、基本的RPC和SD機(jī)制等。在測(cè)試中,測(cè)試系統(tǒng)Tester仿真客戶端發(fā)送的請(qǐng)求,并接收DUT的響應(yīng);當(dāng)觸發(fā)應(yīng)用產(chǎn)生了特定行為時(shí),部分測(cè)試可能需要其他特殊手段,例如,當(dāng)請(qǐng)求了訂閱,需要觸發(fā)DUT發(fā)送Event時(shí),不要觸發(fā)某種條件,如仿真I/O輸入,或者開(kāi)發(fā)1個(gè)測(cè)試用的軟件接口。SOME/IP Server測(cè)試集見(jiàn)表5。
2)SOME/IP ETS測(cè)試(表6)。突破被測(cè)控制器自身應(yīng)用的限制,能夠彌補(bǔ)上面提到的Server測(cè)試在覆蓋度方面的不足。簡(jiǎn)而言之,TC8定義了一個(gè)服務(wù),稱為ETS(Enhanced Testability Service)。ETS中包含的各種Method、Event、Field等覆蓋SOME/IP所支持的全部數(shù)據(jù)類型,并包含了一些特殊的Method,比如ResetInterface(用于重啟ETS服務(wù))等;被測(cè)控制器集成了ETS后,我們能夠?qū)OME/IP以及SOME/IP-SD進(jìn)行充分而且全面的驗(yàn)證。
2.2? ?SOME/IP一致性測(cè)試實(shí)現(xiàn)
本文對(duì)車載以太網(wǎng)SOME/IP協(xié)議一致性測(cè)試平臺(tái)選用的是Sprient的C50硬件系統(tǒng)及TTworkbench軟件系統(tǒng),SOME/IP測(cè)試環(huán)境如圖10所示。
1)連接測(cè)試端口(圖11),根據(jù)被測(cè)設(shè)備的端口類型,將要測(cè)試的以太網(wǎng)通信端口接到C50的測(cè)試端口上,當(dāng)前C50包含16個(gè)測(cè)試端口。
2)通過(guò)SSH進(jìn)入C50的系統(tǒng)內(nèi)部進(jìn)行測(cè)試端口的IP地址配置等操作,通常使用的軟件有Xshell、Putty、SSH等,本測(cè)試系統(tǒng)使用Putty進(jìn)入C50系統(tǒng)內(nèi)部進(jìn)行配置測(cè)試端口參數(shù)。C50內(nèi)部系統(tǒng)配置如圖12所示。
3)打開(kāi)TTworkbench,選擇測(cè)試包并加載,配置測(cè)試參數(shù),開(kāi)始測(cè)試執(zhí)行。TTworkbench測(cè)試環(huán)境配置如圖13所示。
2.3? 測(cè)試結(jié)果分析
測(cè)試Log用wireshark軟件打開(kāi),以SOMEIP_ETS_005_ checkByteOrder為例,C50創(chuàng)建一個(gè)帶有UINT8和UINT16參數(shù)的SOME/IP報(bào)文,發(fā)送TC8 ETS矩陣?yán)颿heckByteOrder Method請(qǐng)求,并檢查DUT回復(fù)的參數(shù)是否和矩陣保持一致。checkByteOrder Method請(qǐng)求與回復(fù)如圖14、圖15所示。
3? 結(jié)論
本文是針對(duì)車載以太網(wǎng)SOME/IP一致性測(cè)試提出的針對(duì)性測(cè)試方案,該測(cè)試系統(tǒng)提供的測(cè)試集覆蓋了TC8 3.0的所有測(cè)試用例。通過(guò)對(duì)被測(cè)件進(jìn)行實(shí)際測(cè)試,驗(yàn)證了測(cè)試系統(tǒng)的有效性,測(cè)試實(shí)例及結(jié)果證明:該測(cè)試系統(tǒng)能夠完全按照TC8測(cè)試用例流程來(lái)執(zhí)行測(cè)試,能有效檢測(cè)出被測(cè)件在SOME/IP通信過(guò)程中的基礎(chǔ)格式問(wèn)題及協(xié)議棧自身應(yīng)用問(wèn)題,能夠幫助供應(yīng)商及主機(jī)廠完善產(chǎn)品協(xié)議。
參考文獻(xiàn):
[1] 張弛,吳志紅,朱元,等. 基于AUTOSAR標(biāo)準(zhǔn)的ETH基礎(chǔ)通信及SOME/IP通信實(shí)現(xiàn)[J]. 信息通信,2020(2):7-12.
[2] 趙剛. 基于車載以太網(wǎng)的協(xié)議研究[D]. 天津:河北工業(yè)大學(xué),2015.
[3] 張春霞,李旭東,徐濤. 淺談面向服務(wù)架構(gòu)(SOA)的核心理念[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2010,19(6):251-256.
[4] 李志濤,姬志博,耿偉峰. 車載以太網(wǎng)SOME/IP測(cè)試的研究與分析[J]. 汽車電器,2022(6):95-98.
(編輯? 凌? 波)