【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分

本文详细介绍了UDS/OBD诊断协议中的0x36TransferData服务,包括服务请求和响应消息的定义、数据参数、错误处理及否定响应代码。该服务用于客户端向服务器下载或请求服务器上传数据,关键参数blockSequenceCounter用于错误检测和重试机制。文章还提供了服务支持的否定响应代码及其适用场景。

总目录:(单击下方链接皆可跳转至专栏总目录)

《UDS/OBD诊断需求编辑工具》总目录https://blog.youkuaiyun.com/qfmzhu/article/details/123697014

目录

1 $0x36 TransferData诊断服务描述

2 0x36服务请求消息

2.1 0x36服务请求消息定义

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

2.3 0x36服务请求消息数据参数定义

3 0x36服务肯定响应消息

3.1 0x36服务肯定响应消息定义

3.2 0x36服务肯定响应消息数据参数定义

4 0x36服务支持的否定响应代码(NRC_)

5 示例:0x36 TransferData服务消息流

结尾


优质博文推荐阅读(单击下方链接,即可跳转):

点击返回「《Autosar从入门到精通-实战篇》总目录」

点击返回「《Autosar_BSW高阶配置》总目录」

点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏

TransferData0x36 service传输数据服务

服务

SID

描述

TransferData

传输数据       

0x36

client向server发送数据(download下载)或从server请求数据(upload上传)。

1 $0x36 TransferData诊断服务描述

TransferData服务被client用来从client向server(download下载)或从server向client(upload上传)传输数据。

数据传输方向由前面的RequestDownload或RequestUpload服务定义。如果client发起RequestDownload,要下载的数据将包括在TransferData请求消息的参数transferRequestParameter中。如果client发起了一个RequestUpload,要上传的数据就包括在TransferData响应消息中的参数transferResponseParameter中。

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

重要的是 - server和client应满足ISO 14229-1的7.5章节中规定的请求和响应信息行为。

2 0x36服务请求消息

2.1 0x36服务请求消息定义

表403 - 请求消息定义

A_Data byte

参数名称

Cvt

字节值

助记符

#1

TransferData Request SID

传输数据请求SID

M

0x36

TD

#2

blockSequenceCounter

块序列计数器

M

0x00 – 0xFF

BSC

#3

:

#n

transferRequestParameterRecord[] = [

transferRequestParameter#1

:

transferRequestParameter#m ]

C

:

U

0x00 – 0xFF

:

0x00 – 0xFF

TRPR_ TRTP_

:

TRTP_

C = Conditional有条件:如果下载正在进行,该参数是强制性的。

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

此服务不使用子功能参数。

2.3 0x36服务请求消息数据参数定义

表404 - 请求消息数据参数定义

定义

blockSequenceCounter块序列计数器

BlockSequenceCounter参数值从RequestDownload(0x34)或RequestUpload(0x35)服务后的第一个TransferData请求的0x01处开始。它的值在每个后续的TransferData请求中都会增加1。当值为0xFF时,blockSequenceCounter会翻转,并在下一个TransferData请求信息中从0x00开始。

用例:

  • 如果一个下载数据的TransferData请求在server中被正确接收和处理,但positive response message没有到达client,那么client将确定一个应用层超时,并将重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据所包含的blockSequenceCounter来确定这个TransferData请求是重复的。server将立即发送positive response message,而不将数据再次写入其memory中。
  • 如果server没有正确接收到下载数据的TransferData请求,那么server将不会发送positive response message。client将确定应用层超时,并重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据包含的blockSequenceCounter确定这是一个新的TransferData。server将处理该服务,并将发送positive response message。
  • 如果一个上传数据的TransferData请求被server正确接收和处理,但positive response message没有到达client,那么client将确定应用层超时,并将重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据所包含的blockSequenceCounter来确定这个TransferData请求是重复的。server将立即发送positive response message,在其内存中再次访问先前提供的数据。
  • 如果server没有正确接收到上传数据的TransferData请求,那么server将不会发送一个positive response message。client将确定应用层超时,并重复相同的请求(包括相同的blockSequenceCounter)。server将收到重复的TransferData请求,并可以根据所包含的blockSequenceCounter来确定这是一个新的TransferData。server将处理该服务并发送positive response message。

transferRequestParameterRecord传输请求参数记录

该参数记录包含server所需的参数,以支持数据传输。该参数的格式和长度由汽车制造商决定。

例子:对于下载,transferRequestParameterRecord包括要传输的数据。

3 0x36服务肯定响应消息

3.1 0x36服务肯定响应消息定义

表405 - 肯定响应消息定义

A_Data byte

参数名称

Cvt

字节值

助记符

#1

TransferData Response SID

传输数据响应SID

M

0x76

TDPR

#2

blockSequenceCounter

块序列计数器

M

0x00 – 0xFF

BSC

#3

:

#n

transferResponseParameterRecord[] = [

transferResponseParameter#1

:

transferResponseParameter#m ]

C

:

U

0x00 – 0xFF

:

0x00 – 0xFF

TREPR_

TREP_

:

TREP

C = Conditional有条件的:如果上传正在进行,这个参数是强制性的。

3.2 0x36服务肯定响应消息数据参数定义

表406 - 响应消息数据参数定义

定义

blockSequenceCounter块序列计数器

这个参数是请求信息中blockSequenceCounter参数的回显。

transferResponseParameterRecord传输响应参数记录

该参数应包含client所需的参数,以支持数据的传输。该参数的格式和长度由汽车制造商决定。

例子:对于下载,参数transferResponseParameterRecord可以包括由server计算的校验和。对于上传,参数transferResponseParameterRecord包括上传的数据。对于下载,参数transferResponseParameterRecord不应重复transferRequestParameterRecord的内容。

4 0x36服务支持的否定响应代码(NRC_)

对于这项服务,应执行以下negative response code否定响应代码。表407中记录了每个响应代码会发生的情况。如果错误情况适用于server,应使用列出的negative response否定响应

表407 - 支持的否定响应代码

NRC

描述

助记符

0x13

incorrectMessageLengthOrInvalidFormat消息长度不正确或格式无效

如果消息的长度不对(例如,消息长度不符合requestDownload服务的肯定响应中返回的maxNumberOfBlockLength参数的要求),则应发送该NRC。

IMLOIF

0x24

requestSequenceError请求序列错误

server应使用此响应代码:

-如果收到对该服务的请求时,RequestDownload或RequestUpload服务未被激活;

-如果RequestDownload或RequestUpload服务处于活动状态,但server已经收到由活动的RequestDownlod或RequestUpload服务中的memorySize参数决定的所有数据;

注:server应接受重复传输数据请求消息,该消息的blockSequenceCounter等于前一个传输数据请求消息中包含的blockSequenceCounter。

RSE

0x31

requestOutOfRange请求超出范围

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

- TransferRequestParameterRecord包含额外的控制参数(例如额外的地址信息),并且该控制信息无效。

- TransferRequestParameterRecord与requestDownload或requestUpload服务参数maxNumberOfBlockLength不一致。

- TransferRequestParameterRecord与server的memory排列限制不一致。

ROOR

0x71

transferDataSuspended转移数据暂停

如果下载模块的长度不符合requestDownload服务的请求消息中发送的memorySize参数的要求,应返回该NRC。

TDS

0x72

generalProgrammingFailure一般编程失败

如果在下载数据期间,server在erasing擦除programming编程永久存储设备(如Flash Memory)中的一个memory位置时检测到一个错误,则应返回该NRC。

GPF

0x73

wrongBlockSequenceCounter错误的块序列计数器

如果server检测到blockSequenceCounter的顺序有误,则应返回这个NRC。

注意:server应接受重复TransferData请求消息,其blockSequenceCounter等于前一个TransferData请求消息中包含的blockSequenceCounter。

WBSC

0x92 / 0x93

voltageTooHigh / voltageTooLow电压太高/电压太低

如果在server的主电源引脚上测得的电压超出了将数据下载到server的永久存储器(如Flash Memory)的可接受范围,则应视情况发送该返回代码。

VTH / VTL

评价顺序记录在图28中。

Key

1)如果正在进行RequestUpload(SI + BSC),必须是2、

2)如果正在进行RequestDownload (SI + BSC + 最小TRPR_),则至少为3。

28 - NRC处理请求下载服务

5 示例:0x36 TransferData服务消息流

详见以下博文:

【ISO14229_UDS刷写】-6-$34,$35,$36,$37诊断服务用于downloading下载/uploading上载数据的消息流示例icon-default.png?t=N4P3https://blog.youkuaiyun.com/qfmzhu/article/details/130895979

以上摘自《ISO 14229-1:2013》。

结尾

获取更多“汽车电子资讯”和“工具链使用”,

请关注优快云博客“汽车电子助手”,做您的好助手。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值