uds协议之can总线程序升级
1.什么是UDS協議
? ? ? ? UDS(Unified Diagnostic Services,統一的診斷服務)協議是在汽車電子ECU環境下的一種通用診斷協議,屬于應用層的協議。可在不同的汽車總線上實現(如CAN、LIN、Flexray和Internet等),但目前大部分汽車廠商都是基于can總線的uds應用。
更詳細的介紹可參考:
https://blog.csdn.net/u012252959/article/details/83063899?
https://zhuanlan.zhihu.com/p/72543808
2.如何通過UDS協議進行程序升級
? ? ? ? UDS協議其本質其實就是一種請求-響應(Request/Response)的交互協議,主要是對candata部分內容進行了統一定義,ECU會根據收到的不同請求內容,執行不同的操作或響應不同的數據。而這個“不同的請求內容”實際上就是我們所說的診斷服務ID及其附帶的一些參數。UDS的服務ID種類大致可分為如下幾類:
而我們進行程序升級要用到的服務ID毫無疑問就是0x34、0x36、0x37這三個服務了。
0x34請求下載服務參考:https://zhuanlan.zhihu.com/p/107889509
0x36數據傳輸服務參考:https://zhuanlan.zhihu.com/p/108100282
0x37請求退出傳輸服務參考:https://zhuanlan.zhihu.com/p/108124762
整個數據上傳、下載流程參考:https://blog.csdn.net/u012252959/article/details/83077069
除此之外,還需用到0x10會話控制服務,用于切換會話模式。(不同的會話模式、對服務的響應權限不一樣,比如必須在編程模式下,ECU才能響應上傳下載功能單元的服務)
下圖為會話模式的種類:
0x10會話控制服務參考:https://zhuanlan.zhihu.com/p/84609132?
除會話控制外,0x27安全訪問服務也有用到。一般情況下,需要通過安全服務的認證,ECU才允許進行數據下載操作。
安全服務認證方式首先由客戶端向ECU發送請求,獲取隨機碼(種子),客戶端收到隨機碼后,按照雙方約定好的算法進行計算得到秘鑰值,客戶端再將這個值發送給ECU,進行安全認證(如果算法相同,則計算出的結果相同,ECU回復肯定響應)。
具體可參考:https://zhuanlan.zhihu.com/p/88651234
此外,0x31例行控制服務也是必須的。比如:升級前需要通過該服務確認ECU的可編程性,每次進行程序塊下載前需要調用該服務進行程序擦除操作,下載完成后需要通過該服務檢查程序的完整性,檢測是否可以正常運行。(具體的routineIdentifier及其含義一般由車廠執行定義)
詳細可參考:?https://blog.csdn.net/weixin_44536482/article/details/94866212
3.升級流程
升級流程可參考:
4.升級數據CAN報文分析與UDS協議學習
0x10會話控制:
?
其中,0x791為客戶端發送至ECU的的CANID,0x799為ECU響應客戶端的CANID,一般由汽車廠商自行定義。0x7DF為uds定義的功能地址,用于一對多發送診斷服務請求。
數據請求中,02代表長度,10 代表0x10服務ID,01和03分別代表要切換的會話模式。?
0x27安全訪問:
0x31例行控制:
該數據包為多幀格式,其中10中的高位1表示該幀數據為連續幀,低位0和第二個字節(0x00D)為該包連續幀數據的長度。31為服務ID,01位啟動指令,之后的數據含義由汽車廠商執行定義(如此處 FF 00 表示擦除程序, 44 高位表示擦除首地址長度為4bytes,擦除數據長度為4byte,其后1byte 00 及 連續幀 F9 80 08 為擦除地址, 00 00 00 58為擦除長度)
其中21中的高位2表示該幀為連續幀,低位1為連續幀的序列,范圍從1增至F后歸零,依次反復。
其中30表示該幀為流控幀,用于告知發送方是否可以繼續傳輸消息、接收方一次能接收的數據最大量以及兩個連續幀之間的最小時間間隔。
0x34/0x36/0x37 數據下載:
如上圖所示,紅色表示寫入的數據內容。5A表示連續幀數據長度(包含數據內容長度0x58+兩個字節(36 01),其中36為服務ID,01為塊序列號,每發送一段數據塊后自增,增至FF后歸零)
上述Execl記錄的完整UDS升級抓包數據下載:https://download.csdn.net/download/fangye945a/19322702
總結
以上是生活随笔為你收集整理的uds协议之can总线程序升级的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【图像处理】——Python实现图像加噪
- 下一篇: 【图像处理】——图像滤波(Python+