《UDS协议从入门到精通》系列——图解0x38:请求上传

《UDS协议从入门到精通》系列——图解0x38:请求上传

  • 一、简介
  • 二、数据包格式
    • 2.1 服务请求格式
    • 2.2 服务响应格式
      • 2.2.1 肯定响应
      • 2.2.2 否定响应
  • 三、通信示例

Tip📌:本文描述中但凡涉及到其他UDS服务的,将陆续提供链接跳转方式以便快速了解他们。(各服务介绍持续更新中…)

学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

一、简介

  UDS协议中的0x38服务,即RequestFileTransfer服务,是一种用于文件数据传输的服务。这个服务允许Tester发起从Tester到目标ECU或从目标ECU到Tester的文件数据传输,即上传或下载文件。此外,这个服务还能够获取关于服务器文件系统的信息。

  这个服务的目的是作为一个替代方案,用于那些支持数据上传和下载功能,并且实现了文件系统进行数据存储的目标ECU。如果目标ECU具备文件系统,那么在进行文件的下载或上传时,应该使用RequestFileTransfer服务来替代传统的RequestDownload或RequestUpload服务。

  在实际的文件传输过程中,数据传输和数据传输的终止是通过使用TransferData和RequestTransferExit服务来实现的,这与使用RequestDownload或RequestUpload服务时的操作相同。此外,这个服务还支持在目标ECU的文件系统中删除文件或目录的功能,但在这种情况下,TransferData和RequestTransferExit服务是不适用的。

  当目标ECU接收到RequestFileTransfer请求消息后,它将采取所有必要的行动来准备接收或发送数据,然后才会发送一个正响应消息。这意味着目标ECU在开始实际的数据传输之前,会先准备好相应的文件系统操作,确保数据传输可以顺利进行。

Tip📌:总之,0x38服务是一个多功能的文件传输服务,它不仅支持文件的上传和下载,还能获取文件系统信息,并且在必要时可以删除目标ECU上的文件或目录。该服务特别适用于那些具备文件系统的目标ECU,为它们提供了一个更加灵活和强大的文件管理解决方案。

二、数据包格式

2.1 服务请求格式

在这里插入图片描述

  该服务不支持sub-function。部分参数的含义如下所示:

  modeOfOperation:指的是对文件或目录执行的操作类型。操作类型包括添加、删除、替换或读取文件,以及读取目录等。具体如下表所示。

取值描述
0x00ISO/SAE保留
0x01添加文件
用于添加(下载)filePathAndName参数中定义的文件。
0x02删除文件
用于删除filePathAndName参数中定义的文件。
0x03替换文件
用于替换(下载)filePathAndName参数中定义的文件。如果文件不在指定位置,则应添加该文件。
0x04读取文件
用于读取(上传)filePathAndName参数定义位置的文件。
0x05读取目录
用于读取filePathAndName参数中定义的目录。此值意味着请求不包含文件名。
0x06 - 0xFFISO/SAE保留

  filePathAndNameLength:定义了文件路径和名称参数(filePathAndName)的长度,以字节为单位。

  filePathAndName:定义了目标ECU文件系统中文件的位置,以及文件的名称。根据modeOfOperation参数的不同,这个文件可以是将要被添加、删除、替换或读取的文件。如果modeOfOperation等于0x05(ReadDir),则这个参数指示将要被读取的目录。这个参数的每个字节都应以ASCII格式编码。

  dataFormatIdentifier:高半字节(nibble)指定压缩方法,低半字节指定加密方法。值0x00表示既不使用压缩也不使用加密。其他值由车辆制造商定义。如果modeOfOperation等于0x02(DeleteFile)或0x05(ReadDir),则这个参数不应包含在请求消息中。

  fileSizeParameterLength:这个参数定义了未压缩文件大小(fileSizeUncompressed)和压缩文件大小(fileSizeCompressed)参数的长度,以字节为单位。如果modeOfOperation等于0x02(DeleteFile)、0x04(ReadFile)或0x05(ReadDir),则这个参数不应包含在请求消息中。

  fileSizeUncompressed:定义了未压缩文件的大小,以字节为单位。如果modeOfOperation等于0x02(DeleteFile)、0x04(ReadFile)或0x05(ReadDir),则这个参数不应包含在请求消息中。

  fileSizeCompressed:这个参数定义了压缩文件的大小,以字节为单位。如果传输的是未压缩文件,则这个参数的所有字节应设置为与fileSizeUncompressed参数相同的大小信息。如果modeOfOperation等于0x02(DeleteFile)、0x04(ReadFile)或0x05(ReadDir),则这个参数不应包含在请求消息中。

2.2 服务响应格式

2.2.1 肯定响应

在这里插入图片描述

  modeOfOperation:回显请求消息中的值,反映了Tester请求的操作类型。

  lengthFormatIdentifier:定义了maxNumberOfBlockLength参数的长度(以字节为单位)。如果modeOfOperation参数等于0x02(DeleteFile),则这个参数不应包含在响应消息中。

  maxNumberOfBlockLength:用于在请求FileTransfer的正响应消息中通知Tester,在每个TransferData请求消息中应包含多少数据字节(maxNumberOfBlockLength),或者在数据上传时,目标ECU将在每个TransferData正响应中包含多少数据字节。这个长度反映了包括服务标识符(SID)和TransferData请求消息或正响应消息中的数据参数在内的完整消息长度。

  该参数允许Tester在开始向目标ECU传输数据之前适应目标ECU的接收缓冲区大小,或者指示在数据上传时将在每个TransferData正响应中包含多少数据字节。目标ECU必须接受长度等于其报告的maxNumberOfBlockLength的TransferData请求。目标ECU特定于接受小于maxNumberOfBlockLength的TransferData请求长度(如果有)。

Tip📌:在给定块内的最后一个TransferData请求可能需要小于maxNumberOfBlockLength。不允许目标ECU写入未包含在TransferData消息中的额外数据字节(即填充字节),因为这会影响后续TransferData请求数据将被写入的内存地址。

  此外,如果modeOfOperation参数等于0x02(DeleteFile),则这个参数不应包含在响应消息中。

  dataFormatIdentifier:回显请求消息中的值。如果modeOfOperation参数等于0x02(DeleteFile),则这个参数不应包含在响应消息中。如果modeOfOperation参数等于0x05(ReadDir),则这个参数的值应等于0x00。

  fileSizeOrDirInfoParameterLength:这个参数定义了fileSizeUncompressedOrDirInfoLength和fileSizeCompressed参数的长度,以字节为单位。如果modeOfOperation参数等于0x01(AddFile)、0x02(DeleteFile)或0x03(ReplaceFile),则这个参数不应包含在响应消息中。

  fileSizeUncompressedOrDirInfoLength:定义了将要上传的未压缩文件的大小,或者将要读取的目录信息的长度,以字节为单位。如果modeOfOperation参数等于0x01(AddFile)、0x02(DeleteFile)或0x03(ReplaceFile),则这个参数不应包含在响应消息中。

  fileSizeCompressed:定义了压缩文件的大小,以字节为单位。如果modeOfOperation参数等于0x01(AddFile)、0x02(DeleteFile)、0x03(ReplaceFile)或0x05(ReadDir),则这个参数不应包含在响应消息中。

2.2.2 否定响应

在这里插入图片描述

  可能出现的NRC及其含义如下:

NRC含义
0x13消息长度错误
0x22当前条件不满足
0x31请求参数不受支持,参数错误
0x33未通过安全访问
0x70由于某些故障导致无法上传目标ECU的数据到Tester中

  NRC的处理流程如下所示(即推荐的错误情况检查顺序):

在这里插入图片描述

三、通信示例

  这个示例仅限于描述 RequestFileTransfer 请求和其正响应。即不包括 TransferDataRequestTransferExit 服务的具体使用。在 RequestFileTransfer 的上下文中,TransferDataRequestTransferExit 服务的使用方式与在 RequestDownloadRequestUpload 服务中的使用方式相同。

  提前假定如下信息:
在这里插入图片描述
==========> Tester发送请求:

在这里插入图片描述

==========> 目标ECU发送正响应:

在这里插入图片描述

>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

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

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

相关文章

MySQL数据库存储引擎

MySQL数据库存储引擎 存储引擎概念 存储引擎也称为表类型 通过不同的技术比如说&#xff0c;存储机制&#xff0c;索引技巧&#xff0c;锁定水平等等&#xff0c;来提供不同的功能。 查看MySQL支持的存储引擎 show engines\G&#xff1b; 常用引擎比较 对事务有需求 innodb …

蚂蚁- 定存

一&#xff1a;收益变动&&收益重算 1.1: 场景组合 1: 澳门元个人活期&#xff0c;日终余额大于0&#xff0c;当日首次、本周本月非首次系统结息&#xff0c;结息后FCDEPCORE_ASYN_CMD_JOB捞起进行收益计算 【depc_account_revenue_detail】收益日 > 【depc_accoun…

【Unity Linux】模型导致的Unity项目崩溃

模型需勾选Strip Bones。如不勾选&#xff0c;则开启项目崩溃。 也可以删除有问题模型的.meta文件。 &#xff08;Unity默认会自动勾选&#xff0c;所以不会崩溃&#xff09; 或打开.meta文件&#xff0c;将optimizeBones的值&#xff0c;由0改为1。&#xff08;对应面板上的…

实时智能全托管-云器Lakehouse重新定义多维数据分析

导读 本文将分享云器Lakehouse如何重新定义实时多维分析&#xff0c;帮助客户实现实时、智能、全托管的数据平台。主要内容包括以下几大部分&#xff1a; 多维数据分析的发展趋势和场景解析 技术解析&#xff1a;新一代数平台Lakehouse如何支持实时分析需求 价值解析&#x…

java 统计xmind的结点数(测试用例case数)

mac电脑解压出来的xmind的数据主要在content.json上 开头结尾有[],里面是json import org.json.JSONArray; import org.json.JSONObject; import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream;public class XMindLeafCounter2 {public stat…

【观察】戴尔科技+AMD:释放技术创新“乘数效应”,助力制造业打造“新质生产力”...

在今年的政府工作报告中&#xff0c;“人工智能”首次被写入报告&#xff0c;同时“大力推进现代化产业体系建设&#xff0c;加快发展新质生产力”也被列为2024年的首项政府工作任务&#xff0c;其重要性不言而喻。 尤其是最近几年&#xff0c;以人工智能、大模型、大数据、云计…

【漏洞复现】万户-ezOFFICE download_ftp.jsp 任意文件下载漏洞

免责声明&#xff1a; 本文内容旨在提供有关特定漏洞或安全漏洞的信息&#xff0c;以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步&#xff0c;并非出于任何恶意目的。阅读者应该明白&#xff0c;在利用本文提到的漏洞信息或进行相关测…

讲座学习截图——《CAD/CAE/CAM几何引擎-软件概述》(一)

目录 引出CAD/CAE/CAM几何引擎-软件概述 郝建兵CADCAECAM 几何模型内核ACIS 两个老大之一Open CascadeParasolid 两个老大之一Autodesk的内核 总结其他自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式…

linux中find命令和exec的强大组合用法

如何将 find 命令与 exec 一起使用 Find 是一个已经非常强大的命令&#xff0c;用于根据许多条件搜索文件。exec 命令使您能够处理 find 命令的结果。 我在这里分享的例子只是一瞥。find-exec 命令组合在一起为您提供了在 Linux 命令行中执行操作的无限可能。 find 和 exec 命令…

[leetcode]longest-arithmetic-subsequence-of-given-difference. 最长定差子序列

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int longestSubsequence(vector<int> &arr, int difference) {int ans 0;unordered_map<int, int> dp;for (int v: arr) {dp[v] dp[v - difference] 1;ans max(ans, dp[v]);}return ans…

基于单片机的智能温控风扇设计

摘 要 : 本次设计是基于单片机的智能温控风扇 。 以 STC89C52 单片机为核心 &#xff0c; 可以实现对风扇的有效控制 。 可以根据需要设置不同的温度 &#xff0c;如果温度在设定值最大值和最小值之间时则启动风扇弱风档&#xff0c; 如果温度超过设定的数值时将会变到大风档…

【Android面试八股文】Framework面试:Handler怎么进行线程通信的?原理是什么?

文章目录 Handler整体思想Handler工作流程Handler工作流程图总结Handler整体思想 在多线程的应用场景中,将工作线程中需更新 UI 的操作信息 传递到 UI 主线程,从而实现 工作线程对 UI 的更新处理,最终实现异步消息的处理。 Handler工作流程 Handler 机制的工作流程主要包括…

pytest测试框架pytest-html插件生成HTML格式测试报告

Pytest提供了丰富的插件来扩展其功能&#xff0c;pytest-html插件帮助我们生成HTML格式的测试报告&#xff0c;为我们提供直观、有效的测试结果展示。 为了使用 pytest-html&#xff0c;需要满足以下条件&#xff1a; Python 3.6 或更高版本 pytest-html安装 使用pip命令安…

【scrapy】3.XPath解析

目录 一、XPath介绍 1.基本介绍 2.HTML树状结构图 3.节点之间的关系 &#xff08;1&#xff09;Xpath中的绝对路径与相对路径 二、XPath的语法介绍 1.元素属性定位 1.1 根据属性名定位元素&#xff1a; 1.2 根据属性名和属性值定位元素&#xff1a; 1.3 根据部分属性…

C语言力扣刷题1——最长回文字串[双指针]

力扣算题1——最长回文字串[双指针] 一、博客声明二、题目描述三、解题思路1、思路说明2、知识补充a、malloc动态内存分配b、free释放内存c、strlen求字符数组长度d、strncpy函数 四、解题代码&#xff08;附注释&#xff09; 一、博客声明 找工作逃不过刷题&#xff0c;为了更…

Swagger与RESTful API

1. Swagger简介 在现代软件开发中&#xff0c;RESTful API已成为应用程序间通信的一个标准。这种架构风格通过使用标准的HTTP方法来执行网络上的操作&#xff0c;简化了不同系统之间的交互。API&#xff08;应用程序编程接口&#xff09;允许不同的软件系统以一种预定义的方式…

一键进阶ComfyUI!懂AI的设计师现在都在用的节点式Stable Diffusion

前言 _ 万字教程&#xff01;奶奶看了都会的 ComfyUI 入门教程 推荐阅读 一、川言川语 大家好&#xff0c;我是言川。 阅读文章 > ](https://www.uisdc.com/comfyui-3) 目前使用 Stable Diffusion 进行创作的工具主要有两个&#xff1a;WebUI 和 ComfyUI。而更晚出现的…

2000—2022年青藏高原遥感生态指数数据集

该数据集是基于多套MODIS数据集&#xff0c;选取NDVI、LST、WET、NDBSI四项指标&#xff0c;采用主成分分析法&#xff0c;生成2000-2022年500米空间分辨率的遥感生态指数&#xff08;RSEI&#xff09;数据集。 遥感生态指数&#xff1a;是一种基于遥感技术的生态环境质量综合评…

容联云容犀Desk在线客服:全渠道+全场景+全智能辅助,提升客户体验

如今&#xff0c;客户体验已经从基础的对话、交易、业务办理&#xff0c;转变为深度的生活联结、情感共鸣、价值认可。客户期待的转变&#xff0c;也让更多企业越发重视“以客户为中心”的业务增长战略。 容犀Desk营销服统一体验工作空间应运而生&#xff0c;其核心能力在线客…

wsl ubuntu 安装Anaconda3步骤

如何在Ubuntu上安装Anaconda3呢?本章记录整个安装过程。 1、下载脚本 https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh 下载之后,将脚本上传到Ubuntu里。 2、安装脚本 bash Anaconda3-2021.11-Linux-x86_64.sh根据提示进行安装,提示输…