UDS关于0x34服务请求下载学习

news2024/11/25 0:27:50

1.服务介绍

    客户端使用requestDownload服务启动从客户端到服务器的数据传输(下载)。在服务器收到requestDownload请求消息后,服务器应采取一切必要措施接收数据,然后再发送肯定响应消息。

2.请求消息

2.1请求消息定义

C1:此参数的存在取决于addressAndLengthFormatIdentifier的地址长度信息参数C2:此参数是否存在取决于AddressAndLengthformatIdentifier的内存大小长度信息。 

2.2请求消息子功能参数$Level(LEV_)定义

此服务不使用子函数参数。

2.3 请求消息数据参数定义

dataFormatIdentifier:

    该数据参数是一个单字节值,每个半字节分别编码。高半字节指定“压缩方法”,而低半字节则指定“加密方法”。值0x00指定既不使用压缩方法也不使用加密方法。0x00以外的值是特定于车辆制造商的。

addressAndLengthFormatIdentifier:

该参数是一个单字节值,每个半字节分别编码(参见H.1中的示例值):

—bit 7-4:内存的长度(字节数)Size参数

—bit 3-0:内存地址参数的长度(比特数)

memoryAddress:

    参数memoryAddress是要写入数据的服务器内存的起始地址。用于此地址的字节数由addressAndLengthFormatIdentifier的低位(位3 - 0)定义。
memoryAddress参数中的字节#m始终是服务器中引用的地址中最不重要的字节。地址的最高位字节可用作内存标识符。

    使用内存标识符的一个示例是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任一处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,可以将memoryAddress参数中未使用的字节指定为用于选择所需内存设备的内存标识符。此功能的使用应由车辆制造商/系统供应商定义

memorySize:

    服务器将使用此参数来比较内存大小与TransferData服务期间传输的数据总量。这增加了编程安全性。用于此大小的字节数由addressAndLengthFormatIdentifier的高位(位7 - 4)定义。如果使用数据压缩,则内存大小是否表示压缩或未压缩大小取决于汽车制造商。

3.肯定响应消息

3.1肯定响应消息定义

3.2 肯定响应消息数据参数定义 

lengthFormatIdentifier:

该参数是一个单字节值,每个半字节分别编码:

—位7-4:maxNumberOfBlockLength参数的长度(字节数)。

—bit 3-0:由文档保留,设置为“0”。此参数的格式与请求消息中包含的                         

                addressAndLengthFormatIdentifier参数的格式兼容,但较低的半字节必须设置为“零”。

maxNumberOfBlockLength:

      这个参数由requestDownload积极响应消息使用,用来通知客户端从客户端发出的每个TransferData请求消息中包含多少数据字节(maxNumberOfBlockLength)。这个长度反映了完整的消息长度,包括服务标识符和TransferData请求消息中的数据参数。此参数允许客户端在开始向服务器传输数据之前适应服务器的接收缓冲区大小。服务器需要接受长度等于其报告的maxNumberOfBlockLength的transferData请求。transferData请求的长度小于maxNumberOfBlockLength(如果有的话)是由服务器决定的。请注意,给定块内的最后一次transferData请求可能需要小于maxNumberOfBlockLength。服务器不允许写入额外的数据字节(即:pad字节)不包含在transferData消息中(无论是压缩格式还是未压缩格式),因为这将影响后续transferData请求数据写入的内存地址。

4. 支持的否定响应代码(NRC_)

    该服务应执行以下否定响应代码。下表中记录了每个响应代码发生的情况。如果错误场景适用于服务器,则应使用列出的否定响应。

  

否定码代名词描述
0x13消息长度不正确或格式无效如果信息长度错误,则应发送此NRC。
0x22条件不正确如果服务器在接收软件或校准模块下载的过程中收到该服务的请求,则应返回该NRC。如果在下载模块的过程中服务器和客户端之间的数据大小不匹配,则可能会发生这种情况。
0x31请求超出范围

如果:-指定的dataFormatIdentifier无效,则应返回该NRC。

1.指定的addressAndLengthFormatIdentifier无效。

2.指定的memoryAddress/memorySize无效。

0x33安全访问被拒绝如果服务器是安全的(对于支持Security Access服务的服务器),则在收到该服务的请求时,应返回该NRC。
0x70上传下载未接受该NRC表示,由于某些故障情况,无法完成下载到服务器内存的尝试。

5.例子 

例子详情在0x37服务中 

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

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

相关文章

javaSE -- 注解学习笔记

参考资料:https://blog.csdn.net/KingBoyWorld/article/details/105337011 https://blog.csdn.net/qq_42843172/article/details/107293408 1.注解是什么? java注解是一个写在接口、类、属性方法上的一个标签。跟注释不同,能够影响代码。 …

算法模板(5):数学(1):数学知识(1)

数论 整数的整除性 [x]表示不超过x的最大整数,叫做取整函数或高斯函数。设整数a,b不同时为零,则存在一对整数m,n,使得 ( a , b ) a m b n (a, b) am bn (a,b)ambn。注:a和b的最大公因数会写成 (a, b)…

vue3中使用Vuex

目录 什么是Vuex安装和配置Vuex安装Vuex配置Vuex 使用VuexState定义State访问State MutationsMutations 的特点定义Mutations触发Mutations 修改State中的状态 ActionAction 的特点和作用定义Action触发Action GetterGetter 的特点和作用定义Getter获取Getter ModuleModule 的特…

ARM基础(4):L1 Cache之I-Cache和D-cache详解

在上一篇文章ARM基础(3):MPU内存保护单元详解及例子中,我介绍了MPU,我们知道MPU允许按区域修改一级Cache的属性,这个Cache一般为L1 Cache,它位于CPU的内部,用来加快指令和数据的访问速度。同时,…

chatgpt赋能python:如何在Python和Java之间进行整合

如何在Python和Java之间进行整合 在现在这个编程的时代里,使用一种编程语言或一种技术通常不能满足所有的需求。因此,当你需要在Python和Java之间进行整合时,这篇文章就为你介绍了一些解决方案。 为什么需要Python和Java进行整合 Python和…

redis 字典的实现

1.数据结构 节点数据结构 因为是基于开链法的哈希表实现,所以需要维护了一个next节点 typedef struct dictEntry {void *key;union {void *val;uint64_t u64;int64_t s64;double d;} v;struct dictEntry *next; } dictEntry; 复制 哈希表数据结构 其中size是当…

景区旅游多商户版小程序v14.3.1+前端

🎈 限时活动领体验会员:可下载程序网创项目短视频素材 🎈 🎉 有需要的朋友记得关赞评,文章底部来交流!!! 🎉 ✨ 源码介绍 【新增】全新授权登录支持取消登录 【新增】商…

3.12生产者消费者模型 3.13条件变量 3.14信号量 C++实现生产者消费者模型

3.12生产者消费者模型 生产者消费者模型中的对象: 1、生产者 2、消费者 3、容器 若容器已满,生产者阻塞在这,通知消费者去消费;若容器已空,则消费者阻塞,通知生产者去生产。生产者可以有多个,消…

RK3588平台开发系列讲解(USB篇)Linux Android USB软件架构

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、高通平台USB软件架构二、USB 设备侧软件组成2.1、OTG driver2.2、Device controller driver2.3、Gadget framework2.4、Function drivers三、USB 主机侧软件3.1、Host controller driver3.2、USB core3.3、USB PHY…

chatgpt赋能python:Python取消断点的方法

Python取消断点的方法 在Python开发过程中,我们经常需要设置断点来帮助我们调试代码。但是,有时候我们可能需要取消已设置的断点。本文将介绍如何取消Python中的断点。 1. 什么是断点 在Python中,断点是为了帮助调试代码而设置的一个标志。…

网络层:IPv4地址

网络层:IPv4地址 笔记来源: 湖科大教书匠:IPv4地址概述 湖科大教书匠:分类编址的IPv4地址 湖科大教书匠:划分子网的IPv4地址 湖科大教书匠:无分类编址的IPv4地址 IPv4地址就是给因特网(Internet)上的每一…

零售场景梳理和运筹优化工作经验总结

文章目录 亡羊补牢不为迟零售行业规模大卷出零售新高度运筹优化实践经验 亡羊补牢不为迟 由于工作岗位变动的缘故,暂时要告别零售场景了。当初自己没想太多就一头扎进了“新”零售这个场景,迄今为止都没有针对零售场景做一个通盘的梳理,现在…

御2pro,带屏遥控器航测设置

御2遥控器航测设置 0 前言1 遥控器设置2 航测软件设置3 航测设置 0 前言 无人机:御2 或者御2 pro,非变焦版本遥控器:大疆带屏控器 RM500 1 遥控器设置 默认的遥控器控制软件CONNECT只能航拍,无法航测,必须调节为航…

Docker常用基本命令

一、docker的基础命令 1、启动docker systemctl start docker 2、关闭docker systemctl stop docker 3、重启docker systemctl restart docker 4、设置docker开机自启动 systemctl enable docker 5 , 查看docker运行状态(显示绿色代表正常启动…

类和对象(再谈构造函数)

文章目录 1.再谈构造函数1.1构造函数的赋值1.2初始化列表1.3 explicit关键字 2. static成员2.1概念2.2特性2.3例题 3 .友元3.1 友元函数3.2友元类 4.内部类5.匿名对象6.拷贝对象时编译器的一些优化 1.再谈构造函数 1.1构造函数的赋值 在创建对象时,编译器通过调用…

使用自签发CA证书为EMQX开启双向认证

文章目录 背景信息1、CA证书信任模型2、创建证书2.1 Root CA 证书创建2.2 emqx 服务端证书签发2.3 中间CA证书签发2.4 设备证书签发 3、配置EMQX服务端证书4、客户端使用TLS连接EMQX 背景信息 本文主要介绍了通过建立三层CA证书链,为EMQX集群提供PKI服务&#xff0c…

STM32基于库函数新建工程模板

基于库函数版本 准备资料: a) V3.5 固件库包:STM32F10x_StdPeriph_Lib_V3.5.0 这是 ST 官网下载的固件库完 整版,我们光盘目录: 软件资料\STM32 固件库使用参考资料\STM32F10x_StdPeriph_Lib_V3.5.0 我们官方论坛下载地址&#…

C++入门(嵌入式学习)

C入门学习 前言C概述C和C的区别 引用引用概念引用性质引用的应用 C输入和赋值string字符串函数提高函数的默认值默认值的注意事项函数的重载函数重载可能产生的问题扩充 内联函数 前言 C概述 C是一种通用的高级编程语言,它是由Bjarne Stroustrup于20世纪80年代初在…

论文笔记:MEASURING DISENTANGLEMENT: A REVIEW OF METRICS

0 摘要 学习解缠和表示数据中的变化因素是人工智能中的一个重要问题。虽然已经取得了许多关于学习这些表示的进展,但如何量化解缠仍然不清楚。 虽然存在一些度量标准,但对它们的隐含假设、真正衡量的内容以及限制了解甚少。因此,当比较不同的…

睡眠脑电中的神经跨频率耦合函数

导读 人类大脑是一个紧密连接的复杂系统。虽然其结构比较固定,但它可以实现很多不同的功能。其中一个重要的功能是自然睡眠过程,这个过程可以改变意识和随意肌肉活动。在神经层面上,这些改变会伴随着大脑连接的变化。为了揭示这种与睡眠相关…