《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.mzph.cn/diannao/36068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

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 …

如何以智能方式安装 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 - 可缩放矢量图形 可伸缩矢量图形&…

【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;其中道路被视为一个三维模型…

使用 position:absolute; 定位的元素在ios上被遮盖

在ios上一个元素使用position:absolute;定位后&#xff0c;被其它元素遮盖 在使用absolute的元素上加一行代码 -webkit-transform: translate3d(0, 0, 0);

[渗透测试] 任意文件读取漏洞

任意文件读取漏洞 概述 漏洞成因 存在读取文件的功能&#xff08;Web应用开放了文件读取功能&#xff09;读取文件的路径客户端可控&#xff08;完全控制或者影响文件路径&#xff09;没有对文件路径进行校验或者校验不严格导致被绕过输出文件内容 漏洞危害 下载服务器中的…

Compiled blocks

目录 一&#xff0c;编译块 Compiled Block 二&#xff0c;编译循环 三&#xff0c;调用编译块 Invoke 四&#xff0c;Tips and notes 一&#xff0c;编译块 Compiled Block 在几何体网络内&#xff0c;可将网络的一部分放入编译块&#xff08;compiled block&#xff09;内…

jenkins nginx自动化部署 php项目

在当今快速发展的IT领域&#xff0c;自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署&#xff08;CI/CD&#xff09;的佼佼者&#xff0c;结合Docker容器技术和PHP编程语言&#xff0c;以及Ansible自动化工具&#xff0c;可以实现高效、可靠的自动…

基于DeepNLP AI Store真人点评和ShowCase分享社区-AI for Image Generator

来源 quora 社区: https://deepnlpaistore.quora.com/ github: https://rockingdingo.github.io/deepnlp/store/image_generator 内容 DeepNLP AI Store 网址&#xff1a;http://www.deepnlp.org/store/image-generator 网站针对图像生成类别 Image Generator下多个AI工具如 …

CS与MSF的权限互相传递/mimikatz抓取windows 2012明文密码

目录 CS和MSF的简单介绍 Metasploit Cobalt Strike 1、CS权限传递到MSF 2、MSF权限传递到CS 3、使用mimikatz抓取明文密码 通过修改注册表用户重新登录后抓取明文密码 今天的任务是两个 一个是CS与MSF的权限互相传递一个是抓取windows2012的明文密码 那就分别来完成 …

云计算基础技术

云计算基础技术概览 计算类产品主要提供算力&#xff0c;支持业务运行&#xff0c;例如网站、办公软件、数据分析等计算能力&#xff0c;目前典型的产品主要是虚拟化和容器&#xff0c;在公有云上的云主机本质也是虚拟机。网络类产品主要满足资源的网络连通性和隔离&#xff0c…

软考初级网络管理员__软件单选题

1.如下图所示&#xff0c;在IE“Intemet选项”对话框的()选项卡中可指定电子邮件程序。 常规 内容 高级 程序 2.在Excel的A1单元格中输入函数“ROUND(1/3,3)”,按回车键之后&#xff0c;A1中的值为()。 1 1/3 0.34 0.333 3.在输入Word文档过程中&#xff0c;为了防止意…

Pinia的基本用法

Pinia的安装和引入 1.安装Pinia npm install pinia2. 在vue项目的main.js文件中引入pinia import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst pinia createPinia() const app createApp(App)app.use(pinia) app.mount(#ap…

日志打印中对容器(包括多级容器)的通用输出

在日志打印中&#xff0c;往往有打印一个数组、集合等容器中的每个元素的需求&#xff0c;这些容器甚至可能嵌套起来&#xff0c;如果每个地方都用for循环打印&#xff0c;将会特别麻烦。基于这种需求&#xff0c;作者尝试实现一个通用的打印函数SeqToStr()&#xff0c;将容器序…

线上民族传统服饰商城

摘 要 随着互联网的不断发展和普及&#xff0c;电子商务成为了人们生活中不可或缺的一部分。传统的线下购物方式逐渐被线上购物所取代&#xff0c;人们越来越习惯在互联网上购物。而民族传统服饰作为我国丰富多样的民族文化的重要组成部分&#xff0c;具有独特的艺术价值和商业…