肖玉 殷方雷 于興林 楊貴林
吉利汽車研究院(寧波)有限公司 浙江省寧波市 315336
隨著時(shí)代的進(jìn)步,汽車ECU的軟件層級(jí)越來越豐富,軟件功能越來約完善,軟件定義汽車時(shí)代已經(jīng)來臨,隨著大容量,高頻次的車輛軟件刷寫的需求越來越頻繁,在試制/工廠端,區(qū)別于售后,整車OTA功能尚未啟用,需要一種比OTA,更加便捷的、更加高效的遠(yuǎn)程刷寫方式[4][5]。
第五代移動(dòng)通信技術(shù)(簡稱5G),其數(shù)據(jù)傳輸速率遠(yuǎn)遠(yuǎn)高于以前的蜂窩網(wǎng)絡(luò),最高可達(dá)10Gbit/s,比當(dāng)前的有線互聯(lián)網(wǎng)要快,比先前的4GLTE蜂窩網(wǎng)絡(luò)快100倍?,F(xiàn)階段的車輛軟件遠(yuǎn)程刷寫多為直連式或者是4G網(wǎng)絡(luò),軟件刷寫的傳輸速率和遠(yuǎn)程距離均受到一定的限制。將5G網(wǎng)絡(luò)技術(shù)應(yīng)用在汽車領(lǐng)域,無疑是一種必然的發(fā)展趨勢(shì),也能夠在汽車領(lǐng)域應(yīng)用非常廣泛。
本文通過對(duì)汽車總線DoIP協(xié)議原理論述,并結(jié)合當(dāng)今最先進(jìn)的5G網(wǎng)絡(luò)通信技術(shù)、VXLAN技術(shù)打通無線診斷數(shù)據(jù)傳輸通道,實(shí)現(xiàn)多車輛,多ECU的軟件群刷,并重點(diǎn)闡述如何實(shí)現(xiàn)5G終端之間“一對(duì)多”的車輛有序刷寫,并對(duì)遠(yuǎn)程診斷數(shù)據(jù)傳輸過程中安全問題做了簡單的論述。
本文基于的車輛診斷通信協(xié)議為DoIP,DoIP全稱為基于IP網(wǎng)絡(luò)的診斷通信Diagnostic communication over Internet Protocol,由ISO 13400標(biāo)準(zhǔn)定義,是基于TCP/IP的汽車診斷協(xié)議。
DoIP診斷經(jīng)由通用的統(tǒng)一診斷服務(wù)UDS協(xié)議引入診斷服務(wù),通過傳輸控制協(xié)議TCP、用戶數(shù)據(jù)報(bào)協(xié)議UDP和以太網(wǎng)協(xié)議IP,完成外部測試設(shè)備與ECU間的診斷通信。
在OSI 7層模型中,ISO 13400規(guī)定了DoIP的傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。應(yīng)用層和會(huì)話層部分和基于CAN總線診斷一樣采用ISO 14229實(shí)現(xiàn),見表1。
表1 DoIP對(duì)應(yīng)OSI七層模型
無論是本地刷寫還是遠(yuǎn)程刷寫,車輛與刷寫設(shè)備都需要連接到DoIP網(wǎng)絡(luò)中,都會(huì)涉及到以下四個(gè)環(huán)節(jié):
1)物理連接
物理層的連接,指DoIP網(wǎng)關(guān)與測試設(shè)備(Tester)的硬線連接,目的是建立DoIP通信通道,Tester 和DoIP 網(wǎng)關(guān)之間要建立正確的物理連接(按照OBD接口定義正確連接),然后通過以太網(wǎng)激活DoIP網(wǎng)關(guān)的診斷功能,并根據(jù)需要分配 Tester 及 DoIP 網(wǎng)關(guān)的 IP 地址。本方案中的物理層連接指的是DoIP網(wǎng)關(guān)與5G車載終端之間的硬線連接,5G終端可直插車輛OBD口,連接車輛DoIP網(wǎng)關(guān)。
2)以太網(wǎng)激活
以太網(wǎng)激活線處于激活狀態(tài),外部設(shè)備連接、斷開車輛時(shí),DoIP邊緣節(jié)點(diǎn)可以通過以太網(wǎng)激活線,打開或閉以太網(wǎng)控制器。激活線電壓高于5V并持續(xù)200ms后,即進(jìn)入激活狀態(tài)。當(dāng)激活電壓低于2V并持續(xù)200ms后,退出激活狀態(tài)。
3)車輛聲明
滿足上述的物理連接和以太網(wǎng)激活線的條件后,車輛DoIP網(wǎng)關(guān)、車載終端、遠(yuǎn)程主機(jī)便處于同一個(gè)網(wǎng)絡(luò)中,可以建立TCP/IP通信了。此時(shí),已到OSI七層模型中的第三層,傳輸層,這一層中涉及到的網(wǎng)絡(luò)協(xié)議為TCP、UDP。
TCP和UDP的Socket定義如下:
標(biāo)準(zhǔn)規(guī)定,當(dāng)一個(gè)DoIP節(jié)點(diǎn)成功獲取到IP地址后,應(yīng)在500ms內(nèi)發(fā)送3條車輛聲明報(bào)文,向網(wǎng)絡(luò)中的所有DoIP節(jié)點(diǎn)廣播自己的車輛信息,車輛聲明消息(vehicle announcement message),附帶有VIN,EID,GID和邏輯地址信息,可根據(jù)車輛聲明信息做相應(yīng)的解析,來更新車輛列表。聲明內(nèi)容如表2[1]:
表2 車輛聲明內(nèi)容
報(bào)文作為車輛聲明報(bào)文使用時(shí),該報(bào)文的目 的 端 口 為 UDP_DISCOVERY(13400)。UDP可以通過網(wǎng)線或者是網(wǎng)絡(luò)來傳輸,同理TCP,本文論述的DoIP是TCP協(xié)議的一種,因此這就是為什么可以遠(yuǎn)程刷寫車輛的原因[2]。
4)路由激活
遠(yuǎn)程主機(jī)接受到上述多個(gè)5G車載終端傳輸過來的車輛聲明信息(VIN碼,IP地址)之后,將這些車輛信息更新程序中的車輛列表,同步顯示到上位機(jī)顯示界面上,供操作人員確認(rèn)車輛,遠(yuǎn)程上位機(jī)根據(jù)車輛列表里每輛車的遠(yuǎn)程IP地址,自動(dòng)發(fā)送路由激活指令,即PL type:0x0005,上位機(jī)收到每輛車的路由激活響應(yīng),PL type:0x0006 回復(fù)以后,表示遠(yuǎn)程主機(jī)與目標(biāo)車輛已經(jīng)建立起一對(duì)多的DoIP診斷連接[3]。
以上過程完成后,便可以進(jìn)行診斷通信-軟件刷寫流程(SWDL)了。
DoIP處 于OSI的L3-L4層, 而5G VXLAN服務(wù)是一種基于大二層的協(xié)議,在刷寫之前,需要配置遠(yuǎn)程主機(jī)5G終端與多個(gè)車載終端之間的VXLAN轉(zhuǎn)發(fā)配置,建立一對(duì)多的TCP連接,對(duì)于終端而言,VXLAN轉(zhuǎn)發(fā)配置,如下圖1所示。
圖1 終端VXLAN設(shè)置
整個(gè)系統(tǒng)由若干車載終端(視車輛數(shù)量而定)、主機(jī)終端、遠(yuǎn)程群刷主機(jī)、服務(wù)器。
由于軟件刷寫過程中涉及到車輛重啟的過程,需要DHCP服務(wù)維持,因此需要本終端附加充電功能,不能直接通過OBD去點(diǎn)。本終端利用OBD針腳16、8有12V供電回路,改造后的終端可直連OBD進(jìn)行供電,并自帶電池,使得整個(gè)刷寫過程本終端一直處于供電的狀態(tài),而保證車輛端的DoIP實(shí)體DHCP服務(wù)一直處于維持狀態(tài),保證通信過程的穩(wěn)定性[6]。
本終端VXLAN配置上,需要跟下述的遠(yuǎn)程服務(wù)器主機(jī)終端完成數(shù)據(jù)雙向透傳,如2.4小節(jié)論述。
一對(duì)多的刷寫機(jī)制,服務(wù)器主機(jī)搭配的5G終端,需要配置一對(duì)多的VXLAN轉(zhuǎn)發(fā)機(jī)制,成功配置后,該遠(yuǎn)程主機(jī)可以通過VXLAN服務(wù)獲取這一批車輛中所有經(jīng)UDP協(xié)議廣播出來的車輛聲明信息,實(shí)現(xiàn)主機(jī)-特定車輛的一對(duì)一,穩(wěn)定的TCP鏈接,進(jìn)行后續(xù)的刷寫。
負(fù)責(zé)處理接收到的車輛聲明報(bào)文,更新車輛列表,啟動(dòng)群刷程序,進(jìn)行實(shí)際的遠(yuǎn)程群刷流程。
負(fù)責(zé)實(shí)時(shí)的下發(fā)本業(yè)務(wù)所需的車輛配置文件、ECU刷寫文件等至遠(yuǎn)程群刷主機(jī),以及收集車輛刷寫結(jié)果文件等數(shù)據(jù)
總體方案部署如下圖2所示:
圖2 遠(yuǎn)程群刷方案整體部署
根據(jù)5G終端傳遞過來的VIN碼,對(duì)應(yīng)到遠(yuǎn)程主機(jī)中的配置文件(Broadcast文件,一車一檔),根據(jù)Broadcast文件的生成規(guī)則,做相應(yīng)的解析,獲取車輛需刷寫的ECU列表、各ECU軟件層級(jí)、軟件包排序等,從而對(duì)應(yīng)該車輛的整車SWDL執(zhí)行序列。
由于所有車輛的刷寫服務(wù)均在遠(yuǎn)程主機(jī)中完成,如何做到DoIP報(bào)文傳輸不會(huì)出錯(cuò)?根據(jù)上一步驟中的車輛列表,TCP傳遞中,根據(jù)車輛的IP地址建立穩(wěn)定的唯一的傳輸通道,上位機(jī)需要同時(shí)啟動(dòng)多個(gè)Socket服務(wù),根據(jù)車輛的數(shù)量,本方案中由于用到了5G VXLAN技術(shù),車輛列表理論上并不是無限多,需要考慮下行帶寬,不超過1G。
路由激活步驟執(zhí)行完畢后,就可以進(jìn)行診斷通信了,即整車刷寫流程啟動(dòng)(SWDL)。將刷寫包(VBF/HEX/S19等類型)有序的刷寫進(jìn)ECU,完成車輛軟件升級(jí)的過程。
每輛車的SWDL過程由上位機(jī)軟件自動(dòng)的執(zhí)行或者操作人員手動(dòng)確認(rèn)執(zhí)行,這一環(huán)節(jié)可由軟件進(jìn)行靈活的配置,適配多種場景,并且每輛車的SWDL過程均是同步進(jìn)行的。此步功能邏輯如下圖3所示:
圖3 車輛列表更新與路由激活
對(duì)車輛ECU而言的SWDL過程,為傳統(tǒng)的ISO14229系列中的34、36、37服務(wù),
1)34服務(wù)——請(qǐng)求下載
2)36服務(wù)——傳輸數(shù)據(jù)
3)37服務(wù)——請(qǐng)求退出傳輸
在這里不多加贅述了。對(duì)于主機(jī)廠而言,還會(huì)附加一些獨(dú)有加密、認(rèn)證過程,接下來論述安全訪問,0x27、0x29服務(wù)。
由于本文所述的軟件刷寫場景屬于無線診斷,而0x27的安全訪問控制手段缺乏靈活性,UDS 2020版本中增加了0x29服務(wù),用于ECU對(duì)診斷儀(本文所述的應(yīng)用場景指5G車載終端、遠(yuǎn)程主機(jī)這條通路)的身份認(rèn)證。0x29引入了PKI和證書認(rèn)證體系,可以靈活地給診斷的參與者分配權(quán)限[7]。
0x29服務(wù)一般在如下場景中使用:
1)需要讀取特定內(nèi)存地址的數(shù)據(jù);
2)上傳或下載控制器數(shù)據(jù);
3)關(guān)于車身安全或者會(huì)影響車身控制器屬性。
傳統(tǒng)的0x27服務(wù)不能滿足這些需求,因此新版本UDS協(xié)議新增0x29服務(wù),來實(shí)現(xiàn)基于以太網(wǎng)的身份認(rèn)證。
該服務(wù)有兩種模式實(shí)現(xiàn)其功能:
1)基于PKI證書交換的非對(duì)稱解密;
2)基于不帶PKI證書的質(zhì)詢-響應(yīng)過程,其使用帶有軟件身份驗(yàn)證令牌的非對(duì)
稱解密或?qū)ΨQ解密;
注:PKI(公鑰基礎(chǔ)設(shè)施Public Key Infrastructure)是一種遵循標(biāo)準(zhǔn)的利用公鑰加密技術(shù)為電子商務(wù)提供一套安全基礎(chǔ)平臺(tái)的技術(shù)和規(guī)范。它能夠?yàn)樗芯W(wǎng)絡(luò)應(yīng)用提供加密和數(shù)字簽名等密碼服務(wù)及所必需的密鑰和證書管理體系,簡單來說,PKI 是利用公鑰理論和技術(shù)建立的提供安全服務(wù)的基礎(chǔ)設(shè)施。
本方案單條DoIP通信鏈路的車輛軟件刷寫機(jī)制如下圖4所示:
圖4 遠(yuǎn)程主機(jī)軟件刷寫流程圖
多車同時(shí)啟動(dòng)上述流程,完成群刷。
遠(yuǎn)程主機(jī)中的執(zhí)行軟件按照上述邏輯,有序的將各個(gè)ECU的刷寫包按照Broadcast文件中配置好的刷寫序列刷寫進(jìn)ECU,完成整車的軟件升級(jí),上一章節(jié)路由激活中已經(jīng)論述了刷寫之前,所有車輛與遠(yuǎn)程主機(jī)之間的DoIP會(huì)話連接,所有車輛按照上圖所示的流程一起完成軟件下載,對(duì)這一批車輛而言,完成了群刷。
車輛功能的啟用離不開車輛軟件實(shí)時(shí)的升級(jí)機(jī)制,隨著汽車網(wǎng)絡(luò)互聯(lián)的迅速發(fā)展,車內(nèi)ECU種類、軟件層級(jí)越來越多,刷寫包越來越大,傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)、刷寫機(jī)制越來越不能滿足需求,刷寫節(jié)拍在下線檢測中的要求越來越高,5G作為工業(yè)4.0時(shí)代的催化通信技術(shù),通過完美轉(zhuǎn)型成為車輛軟件升級(jí)的有效手段,相信在隨后的幾年中將會(huì)在遠(yuǎn)程診斷、遠(yuǎn)程刷寫、OTA、車聯(lián)網(wǎng)等領(lǐng)域快速普及應(yīng)用[8]。