UDS关于0x36数据传输学习笔记

news2024/11/9 5:15:21

1.服务说明

       客户端使用TransferData服务将数据从客户端传输到服务器(下载)或从服务器传输到客户端(上传)。

     数据传输方向由前面的RequestDownload或RequestUpload服务定义。如果客户端发起了RequestDownload,则要下载的数据包含在TransferData请求消息中的参数transferRequestParameter中。如果客户端发起了RequestUpload,则要上传的数据包含在TransferData响应消息中的参数transferResponseParameter中。

     TransferData服务请求包含一个blockSequenceCounter,用于改进错误处理,以防在多个TransferData请求的序列中一个TransferData服务失败。当收到RequestDownload (0x34)或RequestUpload (0x35)请求消息时,服务器的blockSequenceCounter应该初始化为1。这意味着RequestDownload (0x34)或RequestUpload (0x35)请求消息之后的第一个TransferData (0x36)请求消息以blockSequenceCounter为1开始。

 2.请求消息

2.1请求消息定义

条件性:如果下载正在进行,则此参数是必需的

2.2子功能函数定义

此服务不使用子函数。 

2.3请求消息数据参数定义

blockSequenceCounter:

     blockSequenceCounter参数值从0x01开始,第一个TransferData请求位于RequestDownload(0x34)或RequestUpload(0x35)服务之后。对于每个后续的TransferData请求,其值递增1。值为0xFF时,blockSequenceCounter将翻转并在0x00处开始,并带有nextTransfer Data请求消息。

   示例用例:

a.如果下载数据的TransferData请求在服务器中被正确接收和处理,但积极的响应消息没有到达客户端,那么客户端将确定一个应用层超时,并将重复相同的请求(包括相同的blockSequenceCounter)。服务器将接收重复的并且可以根据包含的blockSequenceCounter确定此TransferData请求是否重复。服务器将立即发送积极响应消息,而无需再次将数据写入其内存。

b.如果服务器没有正确地接收到下载数据的TransferData请求,那么服务器将不会发送积极的响应消息。客户端将确定一个应用层超时,并重复相同的请求(包括相同的blockSequenceCounter)。服务器将接收重复的TransferData请求,并可以根据包含的blockSequenceCounter确定这是一个新的TransferData。服务器将处理服务并发送积极的响应消息。

c.如果上传数据的TransferData请求在服务器中被正确接收和处理,但积极的响应消息没有到达客户端,那么客户端将确定一个应用层超时,并将重复相同的请求(包括相同的blockSequenceCounter)。服务器将接收重复的TransferData请求,并可以根据包含的blockSequenceCounter确定此TransferData请求是否重复。服务器将立即发送积极的响应消息,再次访问其内存中先前提供的数据。

d.如果服务器没有正确接收到上传数据的TransferData请求,那么服务器将不会发送积极的响应消息。客户端将确定一个应用层超时,并重复相同的请求(包括相同的blockSequenceCounter)。服务器将接收重复的TransferData请求,并可以根据包含的blockSequenceCounter确定这是一个新的TransferData。服务器将处理服务并发送积极的响应消息。

transferRequestParameterRecord:

    此参数记录包含服务器支持数据传输所需的参数。此参数的格式和长度是车辆制造商指定的。例如,对于下载,transferRequestParameterRecord包括要传输的数据。

3.肯定响应消息

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

blockSequenceCounter:

此参数是请求消息中blockSequenceCounter参数的回声。 

transferResponseParameterRecord:

此参数应包含客户端支持数据传输所需的参数。此参数的格式和长度是特定于车辆制造商的。

示例:对于下载,参数transferResponseParameterRecord可能包括服务器计算的校验和。对于上传,参数transferResponseParameterRecord包括上传的数据。对于下载,参数transferResponseParameterRecord不应重复transferRequestParamete

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

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

否定码代名词描述
0x13incorrectMessageLengthOrInvalidFormat 如果信息长度错误,则应发送此NRC。(例如,消息长度不符合在对requestDownload服务的肯定响应中返回的maxNumberOfBlockLength参数的要求)。
0x24requestSequenceError 

服务器应使用以下响应代码:

1.如果在接收到针对该服务的请求时,RequestDownload或RequestUpload服务不是活动的;

2.如果RequestDownload或RequestUpload服务是活动的,但服务器已经接收到由activeRequestDownlod或RequestUpload-服务中的memorySize参数确定的所有数据;

注:服务器应接受重复的TransferData请求消息,其ablockSequenceCounter等于前一个TransferData要求消息中包含的值。

0x31requestOutOfRange

如果出现以下情况,则应返回NRC:

1.transferRequestParameterRecord包含额外的控制参数(例如,额外的地址信息),并且此控制信息无效。

2.transferRequestParameterRecord与requestDownload或requestUpload服务参数maxNumberOfBlockLength不一致。

3.transferRequestParameterRecord与服务器的内存对齐约束不一致。

0x71transferDataSuspended 如果下载模块长度不符合规定,则应退还该NRC的请求消息中发送的memorySize参数的要求requestDownload服务。
0x72generalProgrammingFailure 如果服务器在下载数据期间擦除或编程永久存储设备(如闪存)中的内存位置时检测到错误,则应返回该NRC。
0x73 wrongBlockSequenceCounter如果服务器检测到blockSequenceCounter的序列中有错误,则应返回此NRC。注意:服务器应接受重复具有等于前一个TransferData请求消息中包含的blockSequence计数器的TransferData要求消息。
0x92 / 0x93

 voltageTooHigh /

voltageTooLow 

如果在服务器主电源输入端测得的电压超出将数据下载到服务器永久存储器(如闪存)的可接受范围,则应发送此返回代码(如适用)。

示例:

 参见0x37服务

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

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

相关文章

HTML注释

注释 注释的写法: 注释快捷键: 代码: 效果: 总结 答案:

usb 的拓扑结构

usb 驱动开发 usb 的基本概念 这个忽略, 基本上usb 是啥都知道 usb 的拓扑结构 usb 是一种主从结构的系统 usb主机由usb主控之器(Host Controller)和根集线器(Root Hub) 构成 usb 主控制器: 主要负责数据处理(就…

chatgpt赋能python:Python数据合并入门指南

Python数据合并入门指南 数据合并是数据分析和处理中的一个重要步骤。使用Python可以轻松地将多个数据集合并成一个,以实现更综合和完整的数据分析。在本篇关于Python数据合并的入门指南中,我们将介绍两个主要的数据合并方法:concat和merge。…

PolarDB MySQL 联邦查询优化特征(条件下推、按需返回列、LIMIT OFFSET下推)

背景 社区版 MySQL 支持的联邦引擎可以将位于远程数据库实例的表像本地表一样访问,大大方便了用户管理多个数据库实例的数据做聚合查询和分析。但是在性能方面存在着可以优化的地方: 只有在可以使用索引 RANGE/REF 方式扫描时,可以将索引上…

2.21 alarm函数 2.22setitimer定时器函数

2.21 alarm函数 #include <unistd.h> unsigned int alarm(unsigned int seconds);功能&#xff1a;设置定时器&#xff08;闹钟&#xff09;。函数调用&#xff0c;开始倒计时&#xff0c;当倒计时为0的时候&#xff0c; 函数会给当前的进程发送一个信号&#xff1a;SIG…

chatgpt赋能python:Python如何另起一行输出

Python如何另起一行输出 如果你正在学习Python编程&#xff0c;你肯定已经遇到过这个问题&#xff1a;如何另起一行输出&#xff1f; Python是一门非常强大的编程语言&#xff0c;它可以完成各种各样的任务&#xff0c;包括从简单的文本处理到复杂的数据分析和机器学习。但是…

【Paper】2019_Event-triggered based scaled consensus for multi-agent systems

Wu X, Mu X. Event-triggered based scaled consensus for multi-agent systems[C]//2019 Chinese Control Conference (CCC). IEEE, 2019: 5544-5549. 文章目录 1 Introduction2 Preparation and problem description2.1 Graph theory2.2 Problem formulation 3 Centralized a…

chatgpt赋能python:Python怎么变颜色

Python怎么变颜色 Python是一种高级编程语言&#xff0c;因其简单易学、开发效率高、运行速度快等优点而广受开发者欢迎。在Python编程过程中&#xff0c;经常需要输出不同颜色的文字以便于提示用户。那么&#xff0c;Python怎么变颜色呢&#xff1f;本文将为大家介绍Python中…

小型中文版聊天机器人

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 目录 一、简单介绍与参考鸣谢 二、数据集介绍 三、数据预处理 1、重复标点符号表达 2、英文标点符号变为中文标点符号 3、繁…

visionpro与abb机器人通信

视觉把坐标传给机器人&#xff0c;机器人根据坐标去拿料 接线&#xff1a;用的海康的镜头 机器人是PNP输出 海康接个1千欧的电阻 接的机器人db652板14和15口子 VP设置 作为 服务器 abb位客户端 发往abb的xy坐标 通信成功会如下图所示 ABB需要的配置项 ABB多任务走通信把…

chatgpt赋能python:Python如何取消空格提升SEO排名

Python如何取消空格提升SEO排名 作为一种高效的编程语言&#xff0c;Python已经成为了许多网站开发人员和SEO优化人员的首选工具。在网站优化中&#xff0c;取消空格是一个重要的优化技术&#xff0c;它可以提升网站速度&#xff0c;提高网站体验&#xff0c;同时也可以提升SE…

关于使用keil瑞萨A4M2踩过的坑

一、之前在rasc添加的组件不能删除。 下面在rasc添加ThreadX&#xff0c;不只是RTOS&#xff0c;其他组件也出现这种情况。 当去掉组件不使用&#xff0c;重新配置。但是组件还是显示在软件包&#xff0c;导致编译出错。 解决方式&#xff0c;自己琢磨发现&#xff1a; 找到工…

经典多模态模型

整点传统多模态学习 接下来看看经典模型&#xff0c;传统多模态任务是下游任务是图文检索(Image Text Retrieval)&#xff0c;视觉问答&#xff08;VQA&#xff09;&#xff0c;视觉推理&#xff08;Visual Reasoning&#xff09;&#xff0c;视觉蕴含&#xff08;Visual Enta…

总结897

每周小结&#xff1a; 这周将线代强化进行到第3讲&#xff0c;做杨超三大计算 英语每天早上巩固之前背诵的文章&#xff0c;每日一个长难句分析&#xff0c;背单词&#xff0c;做题目&#xff0c;准备六级 专业课&#xff0c;刚开始复习 每日必复习&#xff08;5分钟&#x…

【C/C++数据结构与算法】华为C/C++编程规范

目录 一、文件结构 二、程序版式 三、命名规则 四、表达式与基本语句 五、常量 六、函数设计 七、内存管理 八、C高级特性 一、文件结构 避免头文件被重复引用&#xff0c;用 #pragma once 进行预处理用 <> 引用标注库头文件&#xff0c;用 "" 引用自…

Servlet图书管理系统测试报告

密级 中级 (供内部测试完毕后使用) Servlet图书管理系统 测试报告 报告编号: ServletBMS-TR-1 &#xff08;Servlet Book Management System-Testing Report&#xff09; 部门经理______项目经理______ 开发经理______测试经理______ 研发公司: 第六科技有限公司 用户单…

【Web服用应用】LVS+Keepalived群集

LVSKeepaLived群集 一、Keepalived及其工作原理1.1Keepalived体系主要模块及其作用1.2健康检查的方式&#xff08;探针&#xff09; 二、LVSKeepalived 高可用群集部署2.1LVS部署<font colorred>1.配置负载调度器&#xff08;主、备相同&#xff09;2配置节点服务器 三、…

JS逆向吐环境

这里调用时机是webpack加载器加载完成后的吐出 1.定位加载器 2.断下目标模块 1.加载完成后&#xff0c;sfu(t), 可以看到明显的加载器&#xff0c;手扣太费劲&#xff0c;直接输出吧 可以看到明显的模块函数&#xff0c;随便测试一个 把函数转为字符串&#xff0c;调用的函数环…

chatgpt赋能python:Python中的矩阵合并方法:介绍和使用方法

Python中的矩阵合并方法: 介绍和使用方法 矩阵合并是Python编程中常用的操作之一&#xff0c;特别是针对数据分析、机器学习和深度学习等领域。Python提供了多种方法来合并矩阵&#xff0c;本文将介绍这些方法并分享如何在实际应用中使用它们。 普通矩阵合并 最基础的矩阵合…

前端vue入门(纯代码)06

【04.mixin混入】 功能&#xff1a;可以把多个组件共用的配置提取成一个混入对象 使用方式&#xff1a; 第一步&#xff1a;定义混合并暴露。 export const mixin {data(){....},methods:{....}.... }第二步&#xff1a;导入mixin.js【混入】文件&#xff0c;并使用混入。 全局…