DOIP--详解2
首先來介紹一下支持ethernet及DoIP的車載網(wǎng)絡(luò)架構(gòu)。
帶ethernet節(jié)點(diǎn)的車載網(wǎng)絡(luò)架構(gòu)示意圖
上面這張圖簡要描述了帶ethernet節(jié)點(diǎn)的車載網(wǎng)絡(luò)和外部網(wǎng)絡(luò)中的測試設(shè)備之間的關(guān)聯(lián)。在車載網(wǎng)絡(luò)中,必須有且只有一個(gè)DoIP edge node gateway,它作為汽車對外部診斷設(shè)備的唯一接口。此外,還可能存在以下幾種類型的節(jié)點(diǎn):
對于外部測試設(shè)備來說,它們必須只能和DoIP edge node gateway直接連接并通信,與車載網(wǎng)絡(luò)中其他ECU的通信必須由DoIP edge node gateway路由。
數(shù)據(jù)鏈路層與物理層
根據(jù)ISO-13400的要求,DoIP通信在物理層支持100BASE-TX (100 Mbit/s Ethernet) 和10BASE-T (10 Mbit/s Ethernet) 兩種制式。DoIP設(shè)備的MAC地址也符合IEEE 802.3 的要求。
傳輸層與網(wǎng)絡(luò)層
ISO-13400規(guī)定,DoIP通信在傳輸層上必須同時(shí)支持UDP和TCP,并將UDP和TCP的使用場合進(jìn)行了定義,對所使用的端口號(hào)也進(jìn)行了定義。后面稍微詳細(xì)說明一下。
ISO-13400規(guī)定,DoIP通信在網(wǎng)絡(luò)層上使用IPv6協(xié)議,但是為了后向兼容的原因,也支持IPv4。此外,對于IPv4來說,還要支持地址解析協(xié)議(ARP ),對于IPv6來說,還要支持鄰居發(fā)現(xiàn)協(xié)議(NDP) ,這兩個(gè)協(xié)議是用于在只知道IP地址的情況下獲取MAC地址的。
?
DoIP的數(shù)據(jù)格式
DoIP的數(shù)據(jù)格式
上圖展示了DoIP的數(shù)據(jù)格式,在DoIP技術(shù)(一)中我們已經(jīng)對DoIp數(shù)據(jù)的五部分進(jìn)行了簡要介紹,其中第五部分的數(shù)據(jù)又可以再細(xì)分為三部分
在本篇中,我將對這幾部分?jǐn)?shù)據(jù)的取值范圍進(jìn)行舉例說明:
DoIP數(shù)據(jù)的前兩個(gè)部分分別是DoIP版本和DoIP版本逐比特取反,DoIP版本的取值范圍如下:
0x00: reserved
0x01: DoIP ISO/DIS 13400-2:2010
0x02: DoIP ISO 13400-2:2012
0x03…0xFE: reserved by this part of ISO 13400
0xFF: default value for vehicle identifcation request messages
?
DoIP數(shù)據(jù)的第三個(gè)部分是data type,即描述數(shù)據(jù)包中的數(shù)據(jù)類型,取值范圍如下圖所示:
DoIP數(shù)據(jù)類型概覽
上面這個(gè)表格不但定義了代表不同數(shù)據(jù)類型的值,還說明了具體的數(shù)據(jù)類型應(yīng)該是通過UDP還是TCP來發(fā),并定義了應(yīng)該在哪個(gè)端口上發(fā)。
其中最常用的數(shù)據(jù)類型應(yīng)該是0x8001,0x8002,0x8003了,代表的含義分別是診斷消息、診斷消息正響應(yīng)和診斷消息負(fù)響應(yīng)。
0x0001至0x0004用于汽車標(biāo)識(shí)上報(bào)或請求,只能通過UDP報(bào)文來發(fā)送這種命令,主要用于在汽車和診斷儀進(jìn)入網(wǎng)絡(luò)之后、診斷連接建立之前的車輛發(fā)現(xiàn)過程。
0x0005 和0x0006標(biāo)識(shí)的Routing activation request 和 response用于在socket建立之后,進(jìn)行診斷通信的請求。
0x0007和0x0008用于Alive check,用于檢查當(dāng)前建立的診斷連接socket是否仍然在使用中,如果不再使用,則關(guān)閉socket釋放資源。
?
DoIP數(shù)據(jù)的第三個(gè)部分是data length,這個(gè)很簡單,就是標(biāo)識(shí)后面的user data到底有多少。
DoIP數(shù)據(jù)的第五部分很簡單,分別用來標(biāo)識(shí)數(shù)據(jù)的發(fā)送者和接收者,以及具體的診斷數(shù)據(jù)。
下圖是一個(gè)DoIP數(shù)據(jù)完整結(jié)構(gòu)的舉例:
DoIP數(shù)據(jù)完整結(jié)構(gòu)舉例
byte 0:ISO13400 版本
byte 1:ISO13400 版本逐比特取反
byte 2~3:數(shù)據(jù)類型,0x8001,表明這是一個(gè)診斷信息的數(shù)據(jù)包
byte 4~7:數(shù)據(jù)長度,在這個(gè)例子中的值是7,表示后面有7個(gè)字節(jié)的數(shù)據(jù)
byte 8~9:源地址
byte 10~11:目的地址
byte 12~13:具體的診斷命令,SID是22,表示讀取,DID是0xF8 10
這個(gè)數(shù)據(jù)段作為SDU傳遞給下層協(xié)議,逐層封裝成為完整的以太網(wǎng)幀發(fā)送出去。
?
總結(jié):
這篇文章主要介紹了DoIP數(shù)據(jù)的結(jié)構(gòu),即DoIP數(shù)據(jù)各個(gè)字節(jié)位置表示什么含義。在下一篇文章中,我將對DoIP節(jié)點(diǎn)內(nèi)部對診斷邏輯連接的管理以及DoIP通信的建立過程進(jìn)行介紹。
總結(jié)
- 上一篇: 解决:设置中打开蓝牙,測试机不会自己主动
- 下一篇: java局部内部类 final_Java