日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DoIP 基础知识

發布時間:2023/12/9 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DoIP 基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DoIP diagnositic communication over internet protocal, 基于以太網的一種診斷協議,簡單的來說就是基于TCP/IP實現的協議,基本上是用于實現UDS協議通過以太網對ECU的診斷,刷寫。因為新能源汽車使用以太網架構,已經變成了一種流行的方式,所以UDS DoIP 基于以太網的實現,也變成了一種趨勢。同時也可以根據DoIP協議自行擴展。

DoIP 并不僅僅是UDS的載體,DoIP是診斷的入口。DoIP功能:車輛發現,狀態查詢,路由激活(含安全認證),診斷數據收發。

DoIP 網絡拓撲

DoIP 網絡中各個角色:

(1) ExternalTest Equipment :

車輛外部設備是指存在車輛網絡外部,通過DoIP協議與車輛內部子網DoIP Entity實現通訊建立的設備,通常為OBD診斷儀或者其他診斷客戶端。

(2)DoIP edge Node gateway:

DoIP邊緣節點是在車輛內部,與診斷口Ethernetactivation line直連的節點,并且其中有一個連接引腳是Activation line。
這個角色是一個Gateway,子網掛著若干ECU。這個角色可以同時支持DoIp的Server和client端。
server: 測試設備可以診斷該網關下的某個節點。????
在這里我認為被診斷的就是server端,發起診斷的就是客戶端。
在OTA場景中,DoIp edge node gateway的應用層可以跑一個OTA客戶端程序,進行對內網ECU的診斷和刷寫,此時就是一個client。

(3)DoIPGateway :

DoIP網關是在車輛網絡內部,實現與本模塊及所連接多個子網內ECU通訊訪問的節點。DoIP gateway與角色二 DoIP edge node gateway區別不是很大。實際的應用場景通常會讓MCU充當這個角色,而MPU充當DoIP edge node gateway的角色,也有反過來的情況,那么該角色通常單單的跑Server端程序。

(4)DoIP node

該角色很好理解,對支持以太網連接的同時支持DoIP協議的ECU認為是DoIP node。

本章小結

整個車輛網絡由四個角色組成,外部測試設備作為客戶端,對車內網的各個支持DoIP協議棧的ECU進行診斷。(部分CAN ECU通常掛載在MCU上,由MCU進行DoIP轉DoCAN的路由)車外網的外部測試設備通過OBD-II與車內網的edge gateway進行通信,edge gateway用來使能車內網的DoIP功能。在路由打通后,發送的診斷數據根據目的地址的不同分別流向車內網的不同ECU。

端口

從DoIP名字可以看出,該協議是在TCP/IP之上的,那么要想接收DoIP協議的報文,協議書規定需要監聽一個專門分配給DoIP協議棧使用的端口號即13400,UDP,TCP都要監聽此接受端口,而發送端口是在一個范圍內的隨機值[49152~65535],當然代碼中協議棧要對對端的發送端口進行緩存,用于回送數據。
指定了端口號,客戶端和服務端可以在此端口上進行收發數據。那么對該端口收到的數據是否真的是DoIP報文,就能對該網絡報文進行解析。(有可能是網絡攻擊,有可能是其它應用恰好使用了該端口號)
對收到的報文進行解析,就涉及到DoIP協議的構成,只有符合該寫一點規范才認為是合法有效的DoIP報文。

本章小結

一直監聽13400這個端口的數據,一但發現符合DoIP協議的數據,進行通信。

協議

DoIP報文由協議頭(header)+ 負載(payload)組成
協議頭[8 byte]由下面四個字段組成

Protocol version [1 byte]
Inverse protocol version [1 byte]
Payload type [2 byte]
Payload length [4 byte]
負載[N byte] 根據實際的payload type,負載數據會不同
3.3Protocol version與Inverse protocol version
通常Protocol version為0x02,目前0x02以上的值目前是reserved狀態
Inverse protocol version是Protocol version的取反的值,此例0x02去反后為0xFD
協議書上特別說明了Protocol version可以為0xFF,設這個值的作用是,當客戶端和服務端的協議版本不匹配,可以設置此值繞過協議頭版本不匹配而拒絕請求的case。
3.4 Payload type
payload type可以代表DoIP協議棧所能支持的功能,列舉如下(特意分開了Server支持的type及Client支持的type)


如上分開描述,是因為在代碼實現上,可以將邏輯拆分。

即Server端只關心自己支持的payload type,客戶端只關心自己支持的payload type,不支持的可以忽視掉。有利于模塊拆分及組合,有利于實現上一節所講個各個角色,將來通過配置文件的配置,來表示不同的角色。

3.5 Payload length

payload length這里分配了4字節,也就是所DoIP報文最大傳輸4 GB /4294967295 bytes,即0xFFFFFFFF。它只是個允許的范圍,通常來說通過DoIP進行診斷也就幾字節到幾十字節,而升級通常ECU的升級包也就幾MB。所以4 GB只是個理論上限。
該值可以做長度的有效性驗證,因為除了診斷數據,其它payload type都是有固定長度的。
還可以做什么?其實做開發時還要考慮遇到如下情況該怎么處理

  • 數據粘連
  • 數據截斷
  • 異常的超大size
  • 超過協議棧可以處理size
    3.6 Payload
    這里的負載是指的是DoIP協議的負載,當然當Payload type為診斷類型時,其負載除了DoIP自身的內容,
    還包含了UDS數據,供上層UDS模塊進行進一步的解析。
    因為每個Payload type負載都不同,這里不做解釋,在后續功能章節,進行詳細的介紹
  • Doip流程可分為三大步:

    建立連接,發現車輛-建立會話-發送診斷

    未清晰知識點:
    利用swich將MPU,MCU,其它以太網ECU統統通過以太網進行連接,并對外網與內網進行隔離。

    總結

    以上是生活随笔為你收集整理的DoIP 基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。