肖玉 殷方雷 于興林 楊貴林
吉利汽車研究院(寧波)有限公司 浙江省寧波市 315336
隨著時代的進步,汽車ECU的軟件層級越來越豐富,軟件功能越來約完善,軟件定義汽車時代已經來臨,隨著大容量,高頻次的車輛軟件刷寫的需求越來越頻繁,在試制/工廠端,區別于售后,整車OTA功能尚未啟用,需要一種比OTA,更加便捷的、更加高效的遠程刷寫方式[4][5]。
第五代移動通信技術(簡稱5G),其數據傳輸速率遠遠高于以前的蜂窩網絡,最高可達10Gbit/s,比當前的有線互聯網要快,比先前的4GLTE蜂窩網絡快100倍。現階段的車輛軟件遠程刷寫多為直連式或者是4G網絡,軟件刷寫的傳輸速率和遠程距離均受到一定的限制。將5G網絡技術應用在汽車領域,無疑是一種必然的發展趨勢,也能夠在汽車領域應用非常廣泛。
本文通過對汽車總線DoIP協議原理論述,并結合當今最先進的5G網絡通信技術、VXLAN技術打通無線診斷數據傳輸通道,實現多車輛,多ECU的軟件群刷,并重點闡述如何實現5G終端之間“一對多”的車輛有序刷寫,并對遠程診斷數據傳輸過程中安全問題做了簡單的論述。
本文基于的車輛診斷通信協議為DoIP,DoIP全稱為基于IP網絡的診斷通信Diagnostic communication over Internet Protocol,由ISO 13400標準定義,是基于TCP/IP的汽車診斷協議。
DoIP診斷經由通用的統一診斷服務UDS協議引入診斷服務,通過傳輸控制協議TCP、用戶數據報協議UDP和以太網協議IP,完成外部測試設備與ECU間的診斷通信。
在OSI 7層模型中,ISO 13400規定了DoIP的傳輸層、網絡層、數據鏈路層和物理層。應用層和會話層部分和基于CAN總線診斷一樣采用ISO 14229實現,見表1。

表1 DoIP對應OSI七層模型
無論是本地刷寫還是遠程刷寫,車輛與刷寫設備都需要連接到DoIP網絡中,都會涉及到以下四個環節:
1)物理連接
物理層的連接,指DoIP網關與測試設備(Tester)的硬線連接,目的是建立DoIP通信通道,Tester 和DoIP 網關之間要建立正確的物理連接(按照OBD接口定義正確連接),然后通過以太網激活DoIP網關的診斷功能,并根據需要分配 Tester 及 DoIP 網關的 IP 地址。本方案中的物理層連接指的是DoIP網關與5G車載終端之間的硬線連接,5G終端可直插車輛OBD口,連接車輛DoIP網關。
2)以太網激活
以太網激活線處于激活狀態,外部設備連接、斷開車輛時,DoIP邊緣節點可以通過以太網激活線,打開或閉以太網控制器。激活線電壓高于5V并持續200ms后,即進入激活狀態。當激活電壓低于2V并持續200ms后,退出激活狀態。
3)車輛聲明
滿足上述的物理連接和以太網激活線的條件后,車輛DoIP網關、車載終端、遠程主機便處于同一個網絡中,可以建立TCP/IP通信了。此時,已到OSI七層模型中的第三層,傳輸層,這一層中涉及到的網絡協議為TCP、UDP。
TCP和UDP的Socket定義如下:
標準規定,當一個DoIP節點成功獲取到IP地址后,應在500ms內發送3條車輛聲明報文,向網絡中的所有DoIP節點廣播自己的車輛信息,車輛聲明消息(vehicle announcement message),附帶有VIN,EID,GID和邏輯地址信息,可根據車輛聲明信息做相應的解析,來更新車輛列表。聲明內容如表2[1]:

表2 車輛聲明內容
報文作為車輛聲明報文使用時,該報文的目 的 端 口 為 UDP_DISCOVERY(13400)。UDP可以通過網線或者是網絡來傳輸,同理TCP,本文論述的DoIP是TCP協議的一種,因此這就是為什么可以遠程刷寫車輛的原因[2]。
4)路由激活
遠程主機接受到上述多個5G車載終端傳輸過來的車輛聲明信息(VIN碼,IP地址)之后,將這些車輛信息更新程序中的車輛列表,同步顯示到上位機顯示界面上,供操作人員確認車輛,遠程上位機根據車輛列表里每輛車的遠程IP地址,自動發送路由激活指令,即PL type:0x0005,上位機收到每輛車的路由激活響應,PL type:0x0006 回復以后,表示遠程主機與目標車輛已經建立起一對多的DoIP診斷連接[3]。
以上過程完成后,便可以進行診斷通信-軟件刷寫流程(SWDL)了。
DoIP處 于OSI的L3-L4層, 而5G VXLAN服務是一種基于大二層的協議,在刷寫之前,需要配置遠程主機5G終端與多個車載終端之間的VXLAN轉發配置,建立一對多的TCP連接,對于終端而言,VXLAN轉發配置,如下圖1所示。

圖1 終端VXLAN設置
整個系統由若干車載終端(視車輛數量而定)、主機終端、遠程群刷主機、服務器。
由于軟件刷寫過程中涉及到車輛重啟的過程,需要DHCP服務維持,因此需要本終端附加充電功能,不能直接通過OBD去點。本終端利用OBD針腳16、8有12V供電回路,改造后的終端可直連OBD進行供電,并自帶電池,使得整個刷寫過程本終端一直處于供電的狀態,而保證車輛端的DoIP實體DHCP服務一直處于維持狀態,保證通信過程的穩定性[6]。
本終端VXLAN配置上,需要跟下述的遠程服務器主機終端完成數據雙向透傳,如2.4小節論述。
一對多的刷寫機制,服務器主機搭配的5G終端,需要配置一對多的VXLAN轉發機制,成功配置后,該遠程主機可以通過VXLAN服務獲取這一批車輛中所有經UDP協議廣播出來的車輛聲明信息,實現主機-特定車輛的一對一,穩定的TCP鏈接,進行后續的刷寫。
負責處理接收到的車輛聲明報文,更新車輛列表,啟動群刷程序,進行實際的遠程群刷流程。
負責實時的下發本業務所需的車輛配置文件、ECU刷寫文件等至遠程群刷主機,以及收集車輛刷寫結果文件等數據
總體方案部署如下圖2所示:

圖2 遠程群刷方案整體部署
根據5G終端傳遞過來的VIN碼,對應到遠程主機中的配置文件(Broadcast文件,一車一檔),根據Broadcast文件的生成規則,做相應的解析,獲取車輛需刷寫的ECU列表、各ECU軟件層級、軟件包排序等,從而對應該車輛的整車SWDL執行序列。
由于所有車輛的刷寫服務均在遠程主機中完成,如何做到DoIP報文傳輸不會出錯?根據上一步驟中的車輛列表,TCP傳遞中,根據車輛的IP地址建立穩定的唯一的傳輸通道,上位機需要同時啟動多個Socket服務,根據車輛的數量,本方案中由于用到了5G VXLAN技術,車輛列表理論上并不是無限多,需要考慮下行帶寬,不超過1G。
路由激活步驟執行完畢后,就可以進行診斷通信了,即整車刷寫流程啟動(SWDL)。將刷寫包(VBF/HEX/S19等類型)有序的刷寫進ECU,完成車輛軟件升級的過程。
每輛車的SWDL過程由上位機軟件自動的執行或者操作人員手動確認執行,這一環節可由軟件進行靈活的配置,適配多種場景,并且每輛車的SWDL過程均是同步進行的。此步功能邏輯如下圖3所示:

圖3 車輛列表更新與路由激活
對車輛ECU而言的SWDL過程,為傳統的ISO14229系列中的34、36、37服務,
1)34服務——請求下載
2)36服務——傳輸數據
3)37服務——請求退出傳輸
在這里不多加贅述了。對于主機廠而言,還會附加一些獨有加密、認證過程,接下來論述安全訪問,0x27、0x29服務。
由于本文所述的軟件刷寫場景屬于無線診斷,而0x27的安全訪問控制手段缺乏靈活性,UDS 2020版本中增加了0x29服務,用于ECU對診斷儀(本文所述的應用場景指5G車載終端、遠程主機這條通路)的身份認證。0x29引入了PKI和證書認證體系,可以靈活地給診斷的參與者分配權限[7]。
0x29服務一般在如下場景中使用:
1)需要讀取特定內存地址的數據;
2)上傳或下載控制器數據;
3)關于車身安全或者會影響車身控制器屬性。
傳統的0x27服務不能滿足這些需求,因此新版本UDS協議新增0x29服務,來實現基于以太網的身份認證。
該服務有兩種模式實現其功能:
1)基于PKI證書交換的非對稱解密;
2)基于不帶PKI證書的質詢-響應過程,其使用帶有軟件身份驗證令牌的非對
稱解密或對稱解密;
注:PKI(公鑰基礎設施Public Key Infrastructure)是一種遵循標準的利用公鑰加密技術為電子商務提供一套安全基礎平臺的技術和規范。它能夠為所有網絡應用提供加密和數字簽名等密碼服務及所必需的密鑰和證書管理體系,簡單來說,PKI 是利用公鑰理論和技術建立的提供安全服務的基礎設施。
本方案單條DoIP通信鏈路的車輛軟件刷寫機制如下圖4所示:

圖4 遠程主機軟件刷寫流程圖
多車同時啟動上述流程,完成群刷。
遠程主機中的執行軟件按照上述邏輯,有序的將各個ECU的刷寫包按照Broadcast文件中配置好的刷寫序列刷寫進ECU,完成整車的軟件升級,上一章節路由激活中已經論述了刷寫之前,所有車輛與遠程主機之間的DoIP會話連接,所有車輛按照上圖所示的流程一起完成軟件下載,對這一批車輛而言,完成了群刷。
車輛功能的啟用離不開車輛軟件實時的升級機制,隨著汽車網絡互聯的迅速發展,車內ECU種類、軟件層級越來越多,刷寫包越來越大,傳統的網絡架構、刷寫機制越來越不能滿足需求,刷寫節拍在下線檢測中的要求越來越高,5G作為工業4.0時代的催化通信技術,通過完美轉型成為車輛軟件升級的有效手段,相信在隨后的幾年中將會在遠程診斷、遠程刷寫、OTA、車聯網等領域快速普及應用[8]。