當(dāng)前位置:首頁 > 汽車電子1 > 糖果Autosar
[導(dǎo)讀]0x00UDS概述UDS(UniversityDiagnosticsSystem通用診斷系統(tǒng))是一個(gè)在整車系統(tǒng)上經(jīng)常使用的設(shè)備維護(hù)協(xié)議。其主要遵循的法規(guī)為:ISO-15765、ISO-14229,其主要協(xié)議模式脫胎于OBD(On-boarddiagnostics)診斷協(xié)議。經(jīng)常應(yīng)...

0x00 UDS概述

UDS(University Diagnostics System通用診斷系統(tǒng))是一個(gè)在整車系統(tǒng)上經(jīng)常使用的設(shè)備維護(hù)協(xié)議。其主要遵循的法規(guī)為:ISO-15765、ISO-14229,其主要協(xié)議模式脫胎于OBD(On-board diagnostics)診斷協(xié)議。經(jīng)常應(yīng)用在整車的各種ECU上面。是一個(gè)在整車ECU應(yīng)用層開發(fā)經(jīng)常使用的也是較為復(fù)雜的協(xié)議層之一。
本篇文章主要介紹了UDS協(xié)議相關(guān)的協(xié)議的宏觀介紹。閱讀本文之前,您需要了解的一些前置技能有:

技能名稱技能熟練度技能教程鏈接
CAN總線熟悉暫無
數(shù)據(jù)類型熟悉暫無
OBD了解暫無
整車縮寫了解暫無

0x10 層次類型

UDS主要分為五大協(xié)議層次:物理層、鏈路層、協(xié)議基層、協(xié)議網(wǎng)絡(luò)層、協(xié)議應(yīng)用層。此外,還有較為完善的協(xié)議時(shí)效管理與協(xié)議的錯(cuò)誤、正確反饋碼。
而整個(gè)協(xié)議的交互分為客戶端和服務(wù)端,而客戶端為診斷儀;服務(wù)端就是整車上的ECU。
需要注意的是:錯(cuò)誤反饋值嚴(yán)格根據(jù)反饋的錯(cuò)誤檢測流程決定。這種錯(cuò)誤檢測流程會在后期簡述。
為了方便講解,我暫時(shí)將協(xié)議基層、協(xié)議網(wǎng)絡(luò)層、協(xié)議應(yīng)用層統(tǒng)稱為協(xié)議層,具體的詳情會在后期簡述。

0x11 物理層

物理層主要的實(shí)現(xiàn)可以為任何協(xié)議的硬件決定,這個(gè)是由鏈路層的選擇支持的。例如常用CAN協(xié)議進(jìn)行載體,物理層就可以使用相應(yīng)的CAN芯片進(jìn)行構(gòu)架。如果使用LAN進(jìn)行載體則也可以使用相應(yīng)的芯片進(jìn)行構(gòu)架。

0x12 鏈路層

鏈路層是整個(gè)協(xié)議的實(shí)現(xiàn)基石(從軟件工程師的角度來講),鏈路層定義了當(dāng)前的系統(tǒng)基層數(shù)據(jù)定義與底層驅(qū)動的選擇和編寫。而整個(gè)鏈路層穩(wěn)定性對于當(dāng)前網(wǎng)絡(luò)的實(shí)現(xiàn)都是非常重要的地方。其決定了數(shù)據(jù)接收的正確性與誤碼率,也決定的反饋碼的傳輸正常,很多上層查詢不到的問題都有可能出在這里。

0x13協(xié)議層

協(xié)議層主要進(jìn)行以下幾大操作:數(shù)據(jù)接收、數(shù)據(jù)處理、數(shù)據(jù)反饋、時(shí)間限制。

數(shù)據(jù)接收

UDS主要依托于硬件協(xié)議進(jìn)行數(shù)據(jù)構(gòu)架,本文主要以汽車行業(yè)常用的CAN總線協(xié)議進(jìn)行數(shù)據(jù)構(gòu)架。CAN幀數(shù)的數(shù)據(jù)是固定的,對于大數(shù)據(jù)的傳輸是比較難受的,基于此,UDS具有一定的數(shù)據(jù)定義:標(biāo)準(zhǔn)幀(Normal Frame)、首幀(First Frame)、流控幀(Constraints Frame)、數(shù)據(jù)幀(Data Frame)。對于各個(gè)數(shù)據(jù)的定義主要是靠CAN單幀數(shù)據(jù)中的第一位字節(jié)數(shù)據(jù)中的前四位Bit數(shù)據(jù)決定。

數(shù)據(jù)幀定義數(shù)據(jù)幀標(biāo)識數(shù)據(jù)實(shí)體示例
標(biāo)準(zhǔn)幀0000 XX XX XX XX XX XX XX
首幀011X XX XX XX XX XX XX XX
流控幀1130 AA BB XX XX XX XX XX
數(shù)據(jù)幀1020 XX XX XX XX XX XX XX
而首幀中,AABB則是相關(guān)的時(shí)控參數(shù),這個(gè)會在之后再講。

數(shù)據(jù)處理

數(shù)據(jù)處理主要是根據(jù)當(dāng)前的接收數(shù)據(jù),將其根據(jù)應(yīng)用層相應(yīng)的指令進(jìn)行數(shù)據(jù)處理。

數(shù)據(jù)反饋

數(shù)據(jù)反饋則是對于當(dāng)前的指令數(shù)據(jù)處理完成之后,將其處理結(jié)果反饋給當(dāng)前的數(shù)據(jù)接收端,這個(gè)數(shù)據(jù)反饋分為正反饋(正確反饋)和負(fù)反饋(錯(cuò)誤反饋)。且嚴(yán)格根據(jù)時(shí)序限制進(jìn)行數(shù)據(jù)傳輸。

時(shí)間限制

協(xié)議層主要的時(shí)間限制為兩項(xiàng),一項(xiàng)為流控幀對于數(shù)據(jù)幀發(fā)送時(shí)間的時(shí)控參數(shù)限制(網(wǎng)絡(luò)層),另一項(xiàng)為應(yīng)用系統(tǒng)在線時(shí)效和模式時(shí)控參數(shù)限制(應(yīng)用層)。前者主要原因?yàn)楸苊猱?dāng)前數(shù)據(jù)重放錯(cuò)誤,后者主要避免當(dāng)前模式錯(cuò)誤定義。

0x20 數(shù)據(jù)類型

數(shù)據(jù)主要分為單幀和多幀。而多幀則根據(jù)傳輸流程分為:首幀、多幀、流控幀。

0x21 單幀

單幀則很簡單,主要給一些不怎么長的指令集進(jìn)行傳輸,優(yōu)點(diǎn)在于快準(zhǔn)狠,一幀即可代表一個(gè)指令,對于軟件測試模擬也比較方便。但是缺點(diǎn)在于很多場景下無法使用,例如大量數(shù)據(jù)的傳輸。其主要的數(shù)據(jù)格式定義為:

數(shù)據(jù)定義長度bit備注
幀格式定義0~3相應(yīng)的協(xié)議數(shù)據(jù)定義
幀長度4~7后面的有效字節(jié)長度
數(shù)據(jù)實(shí)體8~63數(shù)據(jù)根據(jù)幀長度定義
對于單幀的反饋也是相似的,也就不在闡述了。

0x22 多幀

首幀

首幀的是整個(gè)多幀傳輸流程的起始,一般由客戶端先發(fā)出,包括了當(dāng)前指令請求的長度和先前的幾個(gè)數(shù)據(jù)。其主要的數(shù)據(jù)格式定義為:

數(shù)據(jù)定義長度bit備注
幀格式定義0~3相應(yīng)的協(xié)議數(shù)據(jù)定義
幀長度4~15整個(gè)多幀的有效數(shù)據(jù)長度
數(shù)據(jù)實(shí)體16~63一部分?jǐn)?shù)據(jù)

流控幀

流控幀是當(dāng)前的首幀接收端接收后,判斷當(dāng)前數(shù)據(jù)沒有出錯(cuò)的情況下,發(fā)送的一種數(shù)據(jù)響應(yīng),主要包含了當(dāng)前多幀的數(shù)據(jù)發(fā)送最短間隔時(shí)間與流控幀發(fā)送次數(shù)。其主要的數(shù)據(jù)格式定義為:

數(shù)據(jù)定義長度bit備注
幀格式定義0~3相應(yīng)的協(xié)議數(shù)據(jù)定義
流控幀狀態(tài)4~7一般為0,具體詳見ISO14229
流控幀最短發(fā)送次數(shù)8~15塊大小
數(shù)據(jù)發(fā)送最短間隔時(shí)間16~24流控幀的時(shí)控主要參數(shù)
填空25~63一般為協(xié)定值
塊大?。寒?dāng)前發(fā)送的數(shù)據(jù)幀是有一定的次序的,而一旦發(fā)到一定次序,則數(shù)據(jù)接收端就會發(fā)送一次流控幀,否則發(fā)送端就會判斷當(dāng)前多幀發(fā)送失敗。
數(shù)據(jù)發(fā)送最短間隔時(shí)間:當(dāng)前兩幀數(shù)據(jù)幀的發(fā)送間隔時(shí)間,單位為毫秒。

數(shù)據(jù)幀

數(shù)據(jù)幀是當(dāng)前的服務(wù)端發(fā)出流控幀之后,在一定時(shí)間內(nèi)由客戶端進(jìn)行發(fā)出。數(shù)據(jù)幀就是大量幀格式的主要組成部分,也是經(jīng)常在編程上面會出錯(cuò)的地方。其主要的數(shù)據(jù)格式定義為:

數(shù)據(jù)定義長度bit備注
幀格式定義0~3相應(yīng)的協(xié)議數(shù)據(jù)定義
數(shù)據(jù)幀長度4~7與流控幀[815]相關(guān),00xF循環(huán)
數(shù)據(jù)實(shí)體8~63剩下的全部數(shù)據(jù)

0x30 模式類型

模式是UDS中的一個(gè)非常重要的軟件抽象,UDS在應(yīng)用層中抽象了3大模式:普通模式、擴(kuò)展模式、編程模式。而擴(kuò)展和編程模式中,又分為普通權(quán)限模式和特權(quán)模式。模式之間的主要區(qū)別如下:

模式名稱授權(quán)模式具有權(quán)限
普通模式普通權(quán)限模式無法讀取內(nèi)部數(shù)據(jù),執(zhí)行較為簡單的指令(重啟、模式切換、會話保持)
普通模式特權(quán)模式無此模式
擴(kuò)展模式普通權(quán)限模式可以讀取內(nèi)部的ECU狀態(tài)值,ECU錯(cuò)誤值,廠商SN號等
擴(kuò)展模式特權(quán)模式可以讀寫內(nèi)部的ECU錯(cuò)誤值、廠商SN號等
編程模式普通權(quán)限模式可以讀取一些廠商內(nèi)部值
編程模式特權(quán)模式可以讀寫廠商內(nèi)部值、可以刷新當(dāng)前的固件版本
而在普通權(quán)限模式下,可以使用相應(yīng)的應(yīng)用層指令可以將其切換呈特權(quán)模式,但是會有自有的密鑰算法進(jìn)行交互,且有很嚴(yán)格的時(shí)序和錯(cuò)誤次數(shù)的要求。這個(gè)我會在之后的應(yīng)用層的詳細(xì)講解中進(jìn)行介紹。

0x40 時(shí)效類型

時(shí)效類型主要為應(yīng)用會話過期時(shí)效與幀交互過期時(shí)效。

0x41應(yīng)用會話過期時(shí)效

應(yīng)用會話是指當(dāng)前客戶端與服務(wù)端的交互中,應(yīng)用層完成指令的間隔。單位一般為秒,例如五秒。一般主要使用在普通模式與擴(kuò)展模式的切換和普通模式與編程模式的切換作為時(shí)間限制。
整個(gè)會話期間,要求客戶端一直進(jìn)行應(yīng)用層的指令發(fā)送,就算僅僅使用CAN幀進(jìn)行發(fā)送也無法算作會話成功。

0x42 幀交互過期時(shí)效

此與流控幀的時(shí)序控制相關(guān),一般由服務(wù)端進(jìn)行發(fā)送,單位為毫秒。主要是在數(shù)據(jù)幀的發(fā)送期間使用,但是需要注意的是,這個(gè)時(shí)序控制并不是限制最大時(shí)間,而是限制最小發(fā)送時(shí)間。也就是說,如果發(fā)送的是10ms的時(shí)序控制時(shí)間,則客戶端的每一個(gè)數(shù)據(jù)幀的最小的發(fā)送時(shí)間就是10ms,如果在9ms的時(shí)候發(fā)送了數(shù)據(jù)幀,則很多時(shí)候會服務(wù)器端會將其丟棄。附多幀發(fā)送的時(shí)序圖:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-uRMnfXox-1574862939925)(https://www.abcde.engineer/wp-content/uploads/2019/05/2d46212699373f8ce6170de603e2731b.png)]

0x50 反饋類型

反饋類型主要分為:正反饋和負(fù)反饋,可能因?yàn)榉g或者是我自己的感受,總是覺得這兩個(gè)稱呼很難受。其實(shí)正反饋就是正確的指令的編碼返回,而負(fù)反饋則是當(dāng)指令的編碼錯(cuò)誤或者流程原因?qū)е铝藷o法執(zhí)行指令的情況下,給客戶端反饋的錯(cuò)誤代碼簡短的錯(cuò)誤記錄。他們的格式基本上如下:

0x51 正反饋

反饋幀格式:

幀格式定義位置bit備注
正反饋位置2當(dāng)其為1時(shí)就是正反饋,否則就可能不是正反饋
客戶端指令0~2、3~7一般都是客戶端傳輸過來的指令
相應(yīng)的狀態(tài)數(shù)據(jù)8~63根據(jù)相應(yīng)的指令格式進(jìn)行反饋

0x52 負(fù)反饋

反饋幀格式:

幀格式定義位置bit備注
負(fù)反饋位置1~7固定為全一
客戶端指令8~15固定為客戶端指令
相應(yīng)的錯(cuò)誤狀態(tài)16~63根據(jù)ISO14229相關(guān)的錯(cuò)誤狀態(tài)定義反饋

0x60 總結(jié)與后記

0x61 總結(jié)

這篇文章只是作為UDS的一篇較為簡淺的介紹,僅介紹了關(guān)于反饋、模式、命令層、數(shù)據(jù)幀格式相關(guān)的一些簡單的數(shù)據(jù)定義。UDS是一個(gè)較為龐大完整的系統(tǒng)。所以后續(xù)還需要更新,將其填補(bǔ)完整。

0x62 后記

后面還會將其進(jìn)行擴(kuò)展,將一些反饋幀、各層的詳細(xì)描述、模式的相關(guān)的切換方式、反饋相關(guān)的流程與錯(cuò)誤記錄。敬請期待~



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉