《UDS協議從入門到精通》系列——圖解0x35:請求上傳

《UDS協議從入門到精通》系列——圖解0x35:請求上傳

  • 一、簡介
  • 二、數據包格式
    • 2.1 服務請求格式
    • 2.2 服務響應格式
      • 2.2.1 肯定響應
      • 2.2.2 否定響應
  • 三、通信示例

Tip📌:本文描述中但凡涉及到其他UDS服務的,將陸續提供鏈接跳轉方式以便快速了解他們。(各服務介紹持續更新中…)

學習UDS基礎知識以及其他相關內容?>>>>>>>>> 返回專欄總目錄 《UDS協議從入門到精通(UDS速查手冊)》<<<<<<<<<

一、簡介

Tip📌:該服務跟34使用方式上服務幾乎一致,推薦先閱讀《UDS協議從入門到精通》系列——圖解0x34:請求下載

??與0x34服務相反,該服務用于啟動數據上傳服務,傳輸方向是目標ECU(Server)→ Tester(Client),向目標ECU發送該請求的主要作用就是告知目標ECU“我(Tester)想要你存儲的數據,請你(目標ECU)發送給我”

二、數據包格式

2.1 服務請求格式

在這里插入圖片描述

??該服務不支持sub-function。部分參數的含義如下所示:

??dataFormatIdentifier(1Byte):這個單字節里面標識了數據格式相關的信息,每半個字節分別編碼,高半字節指定 “數據壓縮方法”,而低半字節則指定“數據加密方法”。如果該字節取值為0x00,則表示既不使用加密方法也不適用壓縮方法,其他取值情況有整車制造商或者供應商決定,可以用約定好用不同的取值代表數據是否有壓縮,是否有加密,用的又是什么算法等等。

??addressAndLengthFormatIdentifier(1Byte):該參數含義在圖中標識的已經比較清晰,不再贅述。比如memoryAddress參數占用m個字節,memorySize參數占用n個字節,則該參數取值為0x(nm)。

??memoryAddress(mByte):對于即將啟動的數據傳輸,該參數指明了從目標ECU內存讀取數據的邏輯地址。比如Tester請求將數據寫入ECU內存地址為0x12345678的地方(該地址占4個字節),則memoryAddress值為0x12345678,對應addressAndLengthFormatIdentifier參數低4Bits值為0x04。

??memorySize(nByte):對于即將啟動的數據傳輸,該參數指明了從ECU內存讀取數據的字節數。比如Tester請求讀取目標ECU數據的字節數為0x01234567(即memorySize占4字節),則memorySize值為0x01234567,對應的addressAndLengthFormatIdentifier高4Bits值為0x4。

2.2 服務響應格式

2.2.1 肯定響應

在這里插入圖片描述

??lengthFormatIdentifier(1Byte):該字節每半個字節單獨編碼,高4Bits為maxNumberOfBlockLength有效字節長度,低4Bits保留為0。

??maxNumberOfBlockLength:字節長度不定,取值長度取決于lengthFormatIdentifier的高半字節,表示0x36服務一次傳輸一個block的最大的字節數。比如該參數取值為0x202,則使用0x36服務時,一次最多發送字節數為0x202(字節數:0x202 >= 36 (1Byte)+ parameter(x個Bytes))。

??這些參數確保了Tester和目標ECU之間的數據傳輸能夠高效和安全地進行。通過maxNumberOfBlockLength參數,Tester可以預先知道目標ECU將發送的數據塊的最大長度,從而可以適當地調整自己的接收緩沖區,以避免數據丟失或溢出。

2.2.2 否定響應

在這里插入圖片描述

??可能出現的NRC及其含義如下:

NRC含義
0x13消息長度錯誤
0x22當前條件不滿足
0x31請求參數不受支持,參數錯誤
0x33未通過安全訪問
0x70由于某些故障導致無法上傳目標ECU的數據到Tester中

??NRC的處理流程如下所示(即推薦的錯誤情況檢查順序):
在這里插入圖片描述

三、通信示例

??基于對本服務以及0x36、0x37三個服務的學習,這里舉一個完整的例子,該示例實現:將數據從目標ECU上傳到Tester中。數據從目標ECU上傳到Tester的過程分三步:

  1. Tester通過0x35-請求上傳服務向目標ECU發送請求,該請求消息中將包括數據的格式信息(是否壓縮、加解密信息)、要從目標ECU的哪個地址獲取數據、要獲取多少字節的數據。目標ECU收到該請求后將通過響應告訴Tester:“我(目標ECU)每次最多能傳輸多少自字節”,即目標ECU會表明自己每次的上傳能力。
  2. Tester得知目標ECU每次上傳能力后,將按照目標ECU上傳能力做適配,目標ECU將通過0x36-數據傳輸服務將數據一塊塊的上傳到Tester
  3. Tester端收到期望的數據后,通過發送0x37-退出傳輸服務請求來終止數據上傳過程

??在鑰匙電開啟,發動機關閉,車速為0的背景下,Tester和目標ECU間的通信過程如下圖所示:

Tester 目標ECU 通過0x35-請求上傳服務向目標ECU發送請求 35 11 33 20 10 00 00 01 FF 1 發起上傳數據的請求: 34:Service ID 11:標識數據壓縮及加解密算法信息 33:表明地址和大小信息占用幾個字節, 高低四位都是3,即地址和大小信息都占3字節 20 10 00:取目標ECU中地址0x201000的數據 00 01 FF:要獲取數據大小是0x0001FF(511字節) 75 20 00 81 2 目標ECU通過響應表明自己的上傳能力: 74:Service ID + 40 20:高四位表示每次最大傳輸長度2字節,低四位默認0 00 81:每次最多傳輸0x0081(129字節)數據 通過36服務傳輸每個數據塊,共計要傳輸:511?127=5次,4次不能傳完,要再來一次 36 01 3 請求第一塊數據: 36:Service ID 01:標識請求的數據塊序號 76 01 (xx xx ... xx 實際數據共127字節) 4 通過0x36服務響應發送數據: 76:Service ID + 0x40 01:標識這是第幾個數據塊(block) 剩下的127字節:實際數據 前面目標ECU回復的最大 接收能力是包括36和01兩個字節的 ... ...(傳輸第2塊數據) ... ...(傳輸第3塊數據) ... ...(傳輸第4塊數據) 36 05 5 請求最后一個數據塊: 36:Service ID 05:最后一個數據塊的序號 76 05 (xx xx xx 實際數據還剩511 - 127*4 = 3字節) 6 通過0x36服務響應發送數據: 76:Service ID + 0x40 05:標識這是第幾個數據塊(block) 最后剩下3字節實際數據 通過0x37-退出傳輸服務來終止數據傳輸過程 37 7 發送退出傳輸請求, 不跟其他參數也可以,由制造商決定 77 8 給出正響應, 不跟其他參數也可以,由制造商決定 Tester 目標ECU

>>>>>>>>> 返回專欄總目錄 《UDS協議從入門到精通(UDS速查手冊)》<<<<<<<<<

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/36068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36068.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/36068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決Java中的NoSuchElementException異常的常見方法

解決Java中的NoSuchElementException異常的常見方法 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;在Java編程中&#xff0c;NoSuchElementException異常是一個…

AMSR-E/Aqua 第 3 級全球地表土壤水分月平均值 V005 (AMSRE_AVRMO)

AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Averages V005 (AMSRE_AVRMO) at GES DISC AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Standard Deviation V005 (AMSRE_STDMO) at GES DISC 簡介 GES DISC 的 AMSR-E/Aqua 第 3 級全球地表土壤水…

操作系統入門 -- 內存管理

操作系統入門 – 內存管理 1.內存種類 1.1 虛擬內存&#xff08;VIRT&#xff09; 進程需要的虛擬內存大小&#xff0c;包括進程使用的庫、代碼、數據以及malloc、new分配的堆空間和棧空間等。若進程申請了10MB內存但實際使用了1MB&#xff0c;則物理空間會增長10MB。 1.2 …

Resource punkt not found.的解決方法

這個問題本來不想記錄&#xff0c;但是在好幾個機子上都碰到了&#xff08;用到了LangChain讀Word文檔&#xff09;。簡單記錄一下。看到報錯以后運行&#xff1a; import nltk # nltk.set_proxy(http://192.168.1.68:10811) nltk.download() 中間這句我注釋掉了&#xff0c;…

接軌國際安全標準:等保認證在提升企業全球競爭力中的核心作用

隨著全球化進程的加速和數字經濟的蓬勃發展&#xff0c;信息安全已成為企業拓展國際市場、參與國際競爭的重要基石。網絡安全等級保護&#xff08;簡稱“等保”&#xff09;認證&#xff0c;作為衡量企業信息安全管理水平的重要標尺&#xff0c;不僅體現了企業的技術實力和合規…

速盾:ddos攻擊類型有哪些?

DDoS攻擊&#xff08;分布式拒絕服務攻擊&#xff09;是一種通過利用多個被感染的計算機或網絡設備&#xff0c;以大量的請求或數據包來占用目標系統資源&#xff0c;導致其無法正常提供服務的攻擊方式。DDoS攻擊常常被黑客用來影響目標的可用性&#xff0c;造成經濟損失或打擊…

如何以智能方式安裝 Python

Python易于使用&#xff0c;對初學者友好&#xff0c;功能強大&#xff0c;幾乎可以為任何應用程序創建強大的軟件。 但與任何其他軟件一樣&#xff0c;Python 的設置和管理可能很復雜。 在本文中&#xff0c;我們將介紹如何正確設置 Python。 您將學習如何選擇合適的版本、…

學習筆記——動態路由——RIP(附加度量值配置)

六、附加度量值配置 RIP協議cost開銷值&#xff1a;默認值為0&#xff0c;路由信息每傳遞一次&#xff0c;值增加1&#xff0c;最大15,(路由器不能超過15臺)16代表不可達。 入接口附加度量值 rip metricin 5 //可以修改開銷改變路徑。只能增加&#xff0c;不能減小 …

count(*) over (partition by ……)用法詳解

select id,count(*) over(partition by pro_id) from sal; 以pro_id分組&#xff0c;統計分組后每個pro_id的記錄總數及對應的id&#xff1b; 類似還有count(*) over(order by ……)、sum(amount) over(partition by ……)等&#xff0c;略有區別

降低企業運營成本的API服務有哪些?

通過API服務&#xff0c;企業可以實現許多功能和服務的自動化和優化&#xff0c;從而有效降低企業的運營成本。API服務可以幫助企業簡化流程、減少人工操作、提高效率&#xff0c;并提供數據支持和決策依據&#xff0c;從而實現成本的有效控制和降低。無論是人力資源管理、客戶…

【D3.js in Action 3 精譯】1.2.2 可縮放矢量圖形(一)

譯注 由于 1.2.2 小節介紹 SVG 的篇幅過多&#xff0c;為了方便查閱&#xff0c;后續將分多個小節依次進行翻譯。為了確保整個 1.2.2 小節的完整性&#xff0c;特意將上一篇包含的 SVG 小節的內容整理出來重新編排。敬請留意。 1.2.2 SVG - 可縮放矢量圖形 可伸縮矢量圖形&…

kaoYan-English

英語的提高是個日積月累&#xff0c;可以花一個月時間突擊政治。但英語不可。關鍵在于單詞和閱讀理解 提高英語成績的捷徑&#xff0c;多做閱讀題。閱讀理解的分值高&#xff0c;閱讀理解在鞏固詞匯&#xff0c;培養語感有不可替代作用。 選資料&#xff0c;貼合考研難度的&a…

x264 編碼器 i_intra_cost 計算過程

介紹 是uint16_t類型指針變量,用來存儲每個宏塊的幀內代價值,在 frame.h 文件中x264_frame_t結構體中聲明。在*frame_new 函數中將lowres_costs[0][0]指向給i_intra_cost,并 memset 為-1;//代碼有刪減 frame->i_intra_cost = frame->lowres_costs[0][0]; memset( fra…

Raspbian命令行連接WiFi網絡

Raspbian命令行連接WiFi網絡 1. 源由2. 環境3. 信號4. 連接5. 檢查6. 斷開 1. 源由 “懶人”多福&#xff0c;是什么原因&#xff0c;大家知道不&#xff0c;哈哈。 如果大家關注過之前《Ardupilot開源代碼之Rover上路計劃》&#xff0c;為了筆記本電腦在不斷網的情況下進行配…

Rust 中使用 :: 這種語法的幾種情況

文章目錄 1. 訪問模塊成員&#xff1a;2. 訪問關聯函數或靜態方法&#xff1a;3. 訪問 trait 的關聯類型或關聯常量4. 指定泛型類型參數 1. 訪問模塊成員&#xff1a; mod utils {pub fn do_something() { /* ... */ } }let result utils::do_something();2. 訪問關聯函數或靜…

【Spring Cloud Alibaba AI】簡單使用

本文基于官方文檔。 Spring AI 官方文檔&#xff1a;Spring AI :: Spring AI Reference 中文文檔&#xff1a;Spring AI 簡介 - spring 中文網 (springdoc.cn) Spring AI 是 Spring 官方社區項目&#xff0c;旨在簡化 Java AI 應用程序開發&#xff0c;讓 Java 開發者像使用…

達夢數據庫死鎖排查和解決

達夢數據庫死鎖排查和解決 鏈接: 達夢數據庫死鎖排查和解決

道路元素位置和方向的坐標系統: 點 線 面 連接點

道路元素位置和方向的坐標系統: 下圖道路元素在地球坐標系中的位置&#xff0c;該位置由三個坐標軸&#xff08;x, y, z&#xff09;組成的笛卡爾坐標系來確定。這種描述特別適用于三維建模和地理信息系統&#xff08;GIS&#xff09;中&#xff0c;其中道路被視為一個三維模型…

XSLT 轉換:深入解析與實際應用

XSLT 轉換:深入解析與實際應用 引言 XSLT(Extensible Stylesheet Language Transformations)是一種用于將XML文檔轉換為其他格式(如HTML、XML或文本)的語言。它由W3C制定,是XML技術棧的重要組成部分。XSLT轉換不僅限于格式轉換,還可以用于數據提取、報告生成、復雜計算…

陳皓(左耳朵皓子):程序算法與人生選擇

寫于2012&#xff0c;雖然過去很久了&#xff0c;現在讀來依然很受啟發&#xff0c;或許這就是好文的標準吧&#xff0c;不隨著時間的流逝而減弱。 每年一到要找工作的時候&#xff0c;我就能收到很多人給我發來的郵件&#xff0c;總是問我怎么選擇他們的offer&#xff0c;去騰…