摘 要:隨著軟件在汽車領(lǐng)域的占比越來(lái)越高,車載軟件的通信及刷新速率低的問(wèn)題逐漸突出。文章介紹了ISO 13400 DoIP協(xié)議和ISO 14229診斷協(xié)議,分析DoIP幀格式和通信原理,設(shè)計(jì)刷新過(guò)程和診斷通信流程,實(shí)現(xiàn)了基于DoIP協(xié)議的診斷刷新功能,極大提高了ECU刷新的時(shí)間性能和效率。
關(guān)鍵詞:以太網(wǎng) DoIP ECU刷新 診斷協(xié)議
隨著車聯(lián)網(wǎng)技術(shù)的發(fā)展和車載軟件日益復(fù)雜化,傳統(tǒng)的車載CAN總線通信速率無(wú)法滿足新技術(shù)對(duì)車輛數(shù)據(jù)傳輸帶寬的需求,而車載以太網(wǎng)以帶寬高、開(kāi)放性好、兼容性強(qiáng)、可靠性高、同時(shí)又滿足車載嚴(yán)格法規(guī)要求的優(yōu)勢(shì),成為下一代車載網(wǎng)絡(luò)技術(shù)中最有前景的應(yīng)用[1]?;谝蕴W(wǎng)的DoIP刷新技術(shù)充分利用了以太網(wǎng)高帶寬的優(yōu)點(diǎn),使設(shè)備與ECU之間及ECU內(nèi)部芯片之間,建立起高通信速率的傳輸通道,實(shí)現(xiàn)基于以太網(wǎng)和UDS協(xié)議的通信。本文將重點(diǎn)介紹DoIP診斷刷新系統(tǒng)的研究和實(shí)現(xiàn)。
1 DoIP診斷通信原理
1.1 DoIP協(xié)議介紹
DoIP(Diagnostic communication over Internet Protocol)是一種基于互聯(lián)網(wǎng)協(xié)議的診斷。基于該診斷協(xié)議,主機(jī)廠和售后工程可以對(duì)車輛進(jìn)行診斷、刷新等操作[2]。
DoIP協(xié)議形成了ISO 13400標(biāo)準(zhǔn)《道路車輛—基于互聯(lián)網(wǎng)協(xié)議的診斷通信(DoIP)》。該標(biāo)準(zhǔn)分成3個(gè)部分:
(1)通用信息和用例定義;
(2)傳輸協(xié)議和網(wǎng)絡(luò)層服務(wù);
(3)基于IEEE802.3的車用有線接口。
即ISO 13400標(biāo)準(zhǔn)介紹了其物理層、數(shù)據(jù)鏈路層、傳輸層、網(wǎng)絡(luò)層等內(nèi)容。OSI模型將數(shù)據(jù)通信分為七層,DoIP是位于OSI模型中的應(yīng)用層,通過(guò)TCP/UDP協(xié)議傳輸。應(yīng)用層和會(huì)話層部分采用ISO 14229實(shí)現(xiàn),物理層與數(shù)據(jù)鏈路層遵循ISO 13400標(biāo)準(zhǔn)。具體參考表1所示[3]。
1.2 DoIP報(bào)文格式
DoIP協(xié)議支持IPv4與IPv6協(xié)議,以及對(duì)應(yīng)的地址解析ARP協(xié)議、NDP協(xié)議以及控制報(bào)文協(xié)議ICMP。所有統(tǒng)一網(wǎng)段的DoIP都必須使用相同的IP協(xié)議版本。由于DoIP在OSI模型中位于應(yīng)用層,故DoIP報(bào)文前要封裝ETH首部、IP首部及TCP/UDP首部。DoIP報(bào)文包括協(xié)議版本號(hào)、版本號(hào)取反、負(fù)載類型、負(fù)載長(zhǎng)度及DoIP數(shù)據(jù)。以太網(wǎng)報(bào)文封裝格式如圖1所示。
版本號(hào)占1個(gè)字節(jié),標(biāo)識(shí) DoIP 協(xié)議版本編號(hào),取值范圍為0x00 至 0xFF,通常取 0x02(DoIP 2012)。
版本號(hào)取反占1個(gè)字節(jié),是版本號(hào)與 0xFF 邏輯運(yùn)算異或的值。如版本號(hào)為 0x02,則版本號(hào)取反則為 0xFD。版本號(hào)取反值與版本號(hào)值配合起到協(xié)議驗(yàn)證的作用,以確保接收DoIP報(bào)文的準(zhǔn)確性。
負(fù)載類型占2個(gè)字節(jié),用于判斷數(shù)據(jù)用途,常用診斷數(shù)據(jù)類型有0x8001、0x8002和0x8003分別表示診斷消息、診斷消息正響應(yīng)、診斷消息負(fù)響應(yīng)。
負(fù)載長(zhǎng)度占4個(gè)字節(jié),標(biāo)識(shí)后面的實(shí)際診斷數(shù)據(jù)長(zhǎng)度。
負(fù)載,占用最大字節(jié)數(shù)為4Gbytes,實(shí)際診斷數(shù)據(jù)可以少于最大字節(jié)數(shù),診斷數(shù)據(jù)又包括源地址、目標(biāo)地址和診斷命令,其中診斷命令是指UDS或OBD中規(guī)定的具體的診斷請(qǐng)求或響應(yīng)。
1.3 DoIP診斷通信流程建立
DoIP通信的兩端即客戶端和服務(wù)端,采用套接字(Socket)通信方式,服務(wù)器端先初始化Socket,然后與端口綁定(bind),對(duì)端口進(jìn)行監(jiān)聽(tīng)(listen),調(diào)用accept阻塞,等待客戶端連接[4]。此時(shí)如果客戶端初始化一個(gè)Socket,然后連接服務(wù)器(connect),如果連接成功,這時(shí)客戶端與服務(wù)端的連接就建立了。客戶端發(fā)送數(shù)據(jù)請(qǐng)求,服務(wù)器端接收請(qǐng)求并處理請(qǐng)求,然后把回應(yīng)數(shù)據(jù)發(fā)送給客戶端,客戶端讀取數(shù)據(jù),最后關(guān)閉連接,一次交互結(jié)束。TCP Socket交互狀態(tài)如圖2所示。
2 基于DoIP協(xié)議的刷新功能設(shè)計(jì)
2.1 主從刷新流程實(shí)現(xiàn)
本文設(shè)計(jì)的刷新功能,以整車上TBOX為上層主節(jié)點(diǎn),承擔(dān)刷新發(fā)起的任務(wù)控制器中的SOC為主節(jié)點(diǎn),MCU為從節(jié)點(diǎn),刷新過(guò)程是通過(guò)以太網(wǎng)通道和DoIP協(xié)議實(shí)現(xiàn),配備專門的VLAN進(jìn)行通信,不響應(yīng)其他MAC和IP的DoIP指令。以升級(jí)MCU軟件為例,整個(gè)交互流程如圖3所示。
SOC控制MCU升級(jí)的流程并監(jiān)控其升級(jí)狀態(tài),SOC可以根據(jù)版本判斷是否需要升級(jí)MCU,如果不需要升級(jí)則直接返回升級(jí)成功。SOC根據(jù)當(dāng)前狀態(tài)計(jì)算升級(jí)進(jìn)度,并將進(jìn)度反饋給上層主節(jié)點(diǎn)。
2.2 DoIP診斷報(bào)文設(shè)計(jì)
如2.2章節(jié)所述,DoIP發(fā)送的診斷報(bào)文有三類,分別為診斷消息(0x8001),診斷肯定應(yīng)答(0x8002)和診斷否定響應(yīng)(0x8003)。其中SOC作為客戶端,需要支持0x8001的發(fā)送以及0x8002和0x8003的解析處理,MCU作為服務(wù)端,需要支持0x8001的解析和發(fā)送,以及0x8002和0x8003的發(fā)送。
DoIP診斷通信流程和CAN不一樣,CAN是一條診斷請(qǐng)求對(duì)應(yīng)一條診斷響應(yīng),但DoIP遵循如下流程:
SOC發(fā)送一條診斷請(qǐng)求(0x8001),該請(qǐng)求中搭載了UDS診斷數(shù)據(jù),MCU收到后對(duì)DoIP報(bào)頭、診斷數(shù)據(jù)長(zhǎng)度等做判斷,先返回一個(gè)DoIP層的響應(yīng),如果各個(gè)條件都滿足,則返回肯定響應(yīng)(0x8002),否則返回否定響應(yīng)(0x8003)。
當(dāng)MCU返回肯定響應(yīng)后,再將診斷請(qǐng)求報(bào)文中搭載的UDS診斷信息上報(bào)給UDS應(yīng)用程序進(jìn)行處理,處理完成后,不論是UDS肯定響應(yīng)還是UDS否定響應(yīng),都用診斷報(bào)文(0x8001)將UDS診斷響應(yīng)數(shù)據(jù)發(fā)送給SOC,至此一次診斷數(shù)據(jù)交互才完成。
2.3 刷新服務(wù)實(shí)現(xiàn)
軟件刷新過(guò)程,在主節(jié)點(diǎn)SOC和從節(jié)點(diǎn)MCU之間交互,各自解析報(bào)文,再根據(jù)診斷服務(wù)流程做出響應(yīng)[5]。圖4為詳細(xì)刷新流程。
在只有一個(gè)刷新包時(shí),按照?qǐng)D4的流程圖完成。如果有多個(gè)刷新包,將循環(huán)執(zhí)行“刷新及校驗(yàn)過(guò)程”直至完成。如果在刷新準(zhǔn)備階段失敗,SOC會(huì)重試當(dāng)前步驟的請(qǐng)求,重試仍然失敗,上報(bào)上級(jí)保障碼,結(jié)束本次刷新。若在刷新及校驗(yàn)過(guò)程出現(xiàn)失敗,MCU將回復(fù)否定響應(yīng),自身進(jìn)行回滾,SOC需要在MCU回滾完成后再?gòu)谋倦A段最開(kāi)始進(jìn)行重試操作。
3 DoIP主從刷新技術(shù)應(yīng)用效果
軟件開(kāi)發(fā)完成后使用Wireshark工具,監(jiān)控刷新MCU軟件過(guò)程,分析每幀報(bào)文內(nèi)容和通信時(shí)間,如圖5抓取數(shù)據(jù)截圖所示。通過(guò)測(cè)試驗(yàn)證軟件設(shè)計(jì)符合需求,整個(gè)刷新過(guò)程相比CAN總線時(shí)間上縮短一半,實(shí)現(xiàn)高效刷新的量產(chǎn)目標(biāo)。
4 結(jié)論
本文對(duì)ECU內(nèi)部芯片間的DoIP診斷通信應(yīng)用進(jìn)行了研究和實(shí)現(xiàn),詳細(xì)闡釋了DoIP技術(shù)及其相關(guān)通信原理、協(xié)議和流程。DoIP技術(shù)充分利用了以太網(wǎng)高帶寬和高可靠性的優(yōu)點(diǎn),在車載軟件刷新技術(shù)中具有重要意義。隨著軟件刷新中DoIP技術(shù)在控制器間和控制器之內(nèi)的應(yīng)用及普及,將大力推進(jìn)車載軟件智能化,也很大程度地提高用戶體驗(yàn)。
參考文獻(xiàn):
[1]呼布?xì)J,秦貴和,等.下一代汽車網(wǎng)略:車載以太網(wǎng)技術(shù)現(xiàn)狀與發(fā)展[J].計(jì)算機(jī)工程與應(yīng)用,2016(24).
[2]周洋,姚西峰,王天軍,等.基于DoIP的終檢線模擬測(cè)試系統(tǒng)[J].汽車實(shí)用技術(shù),2020(3):130-133.
[3]Road vehicles-Diagnostic communication over Internet Protocol(DoIP)-Part 1: General information and use case definition: ISO 13400-1:2011[S].2011.
[4]Road vehicles-Diagnostic communication over Internet Protocol(DoIP)-Part 2: Transport protocol and network layer services: ISO 13400-2:2012[S].2012.
[5]Road vehicles-Unified diagnostic services(UDS)-Part 1: Specification and requirements: ISO 14229-1:2013[S].2013.