《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速查手册)》<<<<<<<<<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748157.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python e怎么表示

exp()方法返回x的指数&#xff0c;ex。 语法 以下是 exp() 方法的语法: import math math.exp( x ) 注意&#xff1a;exp()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的指数&#xff0c;…

pd虚拟机 Parallels Desktop 19 for Mac 破解版小白安装使用指南

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分&#xff08;14个向量&#xff0c;4个进程&#xff09; 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题&#xff1a;为什么不能对这个循环并行化&#xff0…

Unity | Shader基础知识(第十六集:简单的全息扫描效果)

目录 一、前言 二、准备模型 三、 场景准备 四、代码准备 五、透明度设置 六、补充介绍 1.Pass语法介绍 2.ColorMask 七、作者的碎碎念 一、前言 这节课的内容是接着弧形边缘光的效果之后做的。 Unity | Shader基础知识(第十四集&#xff1a;简单效果练习)_unity shade…

Kivy tutorial 005: A drawing app

Kivy tutorial 005: A drawing app – Kivy Blog Central themes: Canvas instructions 中心主题&#xff1a; canvas 结构 The next couple of tutorials will move to a new application in order to showcase some more of Kivy’s core components. In this tutorial we…

windows USB设备驱动开发通用技术

通用串行总线 (USB) 设备通过配置、接口、备用设置和终结点来定义其功能和功能&#xff0c;下面提供这些概念的高级概述。 常见 USB 方案 获取用于通信的设备句柄 &#xff0c;并使用检索到的句柄或对象发送数据传输。 USB 描述符检索 以获取有关设备配置的信息、接口、设置及…

python基础语法 003-3 数据类型元组

1 元组 1.1 元组含义 1.1.1 元组的表示 #元组的表示方法:() names ("xiaoyun", "xiaoming") print(names)--结果------- (xiaoyun, xiaoming) 1.1.2 空元组 #空元组 names () print(type(names)) print(len(names))----------------结果--------- &l…

Profibus DP主站转Modbus模块连接马达保护器案例

一、概述 在工业自动化控制系统中&#xff0c;Profibus DP和Modbus是常见的通信协议&#xff0c;在同一现场还有可能遇到Modbus协议&#xff0c;ModbusTCP协议&#xff0c;Profinet协议&#xff0c;Profibus协议&#xff0c;Profibus DP协议&#xff0c;EtherCAT协议&#xff…

vant组件 顶部下拉刷新和页面底部下拉获取数据+顶部搜索框

1.html部分&#xff08;顶部tab切换无&#xff0c;只有主体list部分&#xff09; <div class"yd" ><!-- yd端 --><!-- 搜索框 --><van-searchv-model"ydsearchvalue"show-actionplaceholder"请输入搜索关键词"search"…

【ARM】Ulink不同的系列对于芯片的支持和可以支持keil软件

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 了解不同版本的ULINK可以支持的芯片架构&#xff0c;和ULINK可以和哪个系列的keil软件进行在线调试 2、 问题场景 用于了解不同ULINK仿真器对于芯片的支持是不一样的&#xff0c;并不是ULINK可以支持所有的keil软件…

qmt量化交易策略小白学习笔记第44期【qmt编程之期货行情数据】

qmt编程之获取期货行情数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 获取行情数据 提示 使用该接口时&#xff0c;需要先订阅实时行情(subscribe_quote)或下载过历史行情(download_hi…

贪心算法——加工木棍(C++)

上大学&#xff0c;一天是一天&#xff0c;两天也是一天。 ——2024年6月27日 之前考试周断更了&#xff0c;今天重新开始&#xff01; 题目描述 有n根木棍&#xff0c;已知每根木棍的长度和重量。这些木棍在木工机器上加工&#xff0c;机器准备加工木棍需要一些时间&#xf…

YOLOv8数据集标注

1 简介 数据集是必不可少的部分&#xff0c;数据集的优劣直接影响训练效果。一般来说&#xff0c;一个完整的数据集应该包括训练集、测试集和验证集。通常&#xff0c;数据集会被划分为训练集和测试集&#xff0c;比如将数据集的70%用作训练集&#xff0c;30%用作测试集。在进行…

深度学习在蛋白质结构预测的新突破:AlphaFold、RoseTTAFold与ESMFold

在蛋白质结构预测和功能预测领域&#xff0c;基于机器学习的方法最近取得了显著的进展。特别是深度学习技术在这个领域中展现出了强大的能力&#xff0c;代表性的技术有 DeepMind 的 AlphaFold 和 RoseTTAFold。这些技术利用了大量的生物数据和先进的神经网络架构&#xff0c;极…

【科学计算与可视化】3. Matplotlib 绘图基础

安装 pip install matplotlib 官方文档 https://matplotlib.org/stable/api/pyplot_summary.html 主要介绍一些图片绘制的简要使用&#xff0c;更加详细和进阶需要可参考 以上官方文档。 1 绘制基础 方法名说明title()设置图表的名称xlabel()设置 x 轴名称ylabel()设置 y 轴…

在vscode 中ssh连接虚拟ubuntu,不能使用code打开文件

这是参考别人的文章&#xff1a;https://blog.csdn.net/weixin_44465434/article/details/130035032找到vscode的版本信息&#xff0c;提交后面是需要的打开home/(用户)/.bashrc&#xff0c;添加环境变量 export PATH"~/.vscode-server/bin/5437499feb04f7a586f677b155b03…

6.22套题

B. Dark 题意&#xff1a;每次能在数列中能使相邻两个数-1&#xff0c;求当数列没有连续非0值的最小贡献 解法:设表示前i个数中前i-1个数是否为0&#xff0c;当前数是j的最小贡献。表示i1以后减掉d的最小贡献。 C. 幸运值 D. 凤凰院真凶

Docker 日志

日志记录是任何生产应用程序中至关重要的一部分。当出现问题时&#xff0c;日志可以是恢复服务的关键工具&#xff0c;所以它们需要做好。在 Linux 系统上&#xff0c;我们期望通过一些常见方式与应用程序日志交互&#xff0c;有些方式更好。如果您在一台计算机上运行应用程序进…

文华财经盘立方均线-支撑压力自动画线多空声音预警指标公式源码

文华财经盘立方多空均线-支撑压力自动画线指标公式源码&#xff1a; //MA5:MA(C,5); //MA10:MA(C,10); MA20:MA(C,20),COLORRED; MA60:MA(C,60),COLORGREEN; TY:CLOSE; HD:FILTER(BACKSET(FILTER(REF(TY,10)HHV(TY,2*101),10),101),10); LD:FILTER(BACKSET(FILTER(REF(T…

openlayer 图层绘制成多种颜色的一个图层

技术栈&#xff1a; 因为是旧项目的优化功能&#xff0c;这里主要介绍实现思路。技术栈&#xff1a;openlayer 6.5^、jquery、layui组件。 背景&#xff1a; 在创建一个地图对象后&#xff0c;如何创建此处省略。这里主要讲解如何根据接口的数据来把水深测量时间的图层根据不同…