【ISO14229_UDS_0x34服务详解】

1、0x34服务(RequestDownload,请求下载服务)

  Service description:
  0x34服务(RequestDownload,请求下载服务)被客户端用于初始化从客户端到服务端的数据传输。
  在服务端接收到RequestDownload的请求报文后,在服务端肯定应答之前,应采取所有必要的行为去接收数据。

2、请求报文格式

2.1 请求报文定义

  下表定义了请求报文的格式:

字节序号参数值约定字节值
#1RequestDownload Request SIDM0x34
#2dataFormatIdentifierM0x00 - 0xFF
#3addressAndLengthFormatIdentifierM0x00 - 0xFF

#4
.
.
#(m - 1) + 4
memoryAddress[] = [
               byte#1 (MSB)
               .
               .
               byte#m ]

M
.
.
C1

0x00 - 0xFF
.
.
0x00 - 0xFF

#n-(k-1)
.
.
#n
memorySize[] = [
               byte#1 (MSB)
               .
               .
               byte#k ]

M
.
.
C2

0x00 - 0xFF
.
.
0x00 - 0xFF

  C1:此参数的出现取决于addressAndLengthFormatIdentifier参数的地址长度信息参数。
  C2:此参数的出现取决于addressAndLengthFormatIdentifier参数的内存尺寸长度信息参数。

2.2 请求报文中子函数参数定义

  该服务未使用子函数参数。

2.3 请求报文中数据参数定义

  该服务在请求报文中的数据参数定义如下表所示:

定义
dataFormatIdentifier
该数据参数是单字节值,并且每一个位都是可独立编码的。高位规定了压缩方法,并且低位规定了加密方法。0x00的值表示既不使用压缩方法也不使用加密方法。超过0x00的值由主机厂定义。
addressAndLengthFormatIdentifier
该数据参数是单字节值,并且每一个位都是可独立编码的。
— bit 7 - 4:memorySize参数的长度(占用的字节总数)
— bit 3 - 0:memoryAddress参数的长度(占用的字节总数)
memoryAddress
参数memoryAddress是服务端中要写入数据的内存的起始地址。用于此地址的字节数由addressAndLengthFormatIdentifier的低位(位3 - 0)定义。memoryAddress参数中的字节#m始终是服务端中引用的地址中的低字节。地址的高字节可用作内存标识符。
使用内存标识符的一个示例是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任一处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,可以将memoryAddress参数中未使用的字节指定为用于选择所需内存设备的内存标识符。此功能的使用应由车辆制造商/系统供应商定义。
memorySize
与TransferData服务期间,服务端将使用此参数来比较内存容量与传输的数据总量的大小。这增加了编程安全性。用于此大小的字节数由addressAndLengthFormatIdentifier的高位(位7 - 4)定义。如果使用数据压缩功能,则内存大小是否表示压缩或未压缩的大小取决于汽车制造商。

3、肯定应答报文

3.1 肯定应答报文格式定义

字节序号参数值约定字节值
#1RequestDownload Response SIDM0x74
#2lengthFormatIdentifierM0x00 - 0xF0

#3
.
.
#n
maxNumberOfBlockLength = [
        byte#1 (MSB)
        .
        .
        byte#m ]

M
.
.
M

0x00 - 0xFF
.
.
0x00 - 0xFF

3.2 肯定应答报文数据参数定义

  该服务肯定应答报文中使用到的数据参数的定义见下表:

定义
lengthFormatIdentifier
该参数是单字节值,每位可以独立编码:
— bit 7 - 4:maxNumberOfBlockLength参数的长度(字节数量)
— bit 3 - 0:保留值,默认为0
此参数的格式与请求消息中包含的addressAndLengthFormatIdentifier参数的格式兼容,除了必须将低位设置为“0”的情况。
maxNumberOfBlockLength
RequestDownload肯定应答报文使用此参数通知客户端在来自于客户端的每个TransferData请求消息中包含多少数据字节(maxNumberOfBlockLength)。这个长度表示了完整的消息长度,包括服务标识符和TransferData请求消息中存在的数据参数。此参数允许客户端在开始向服务端传输数据之前,适应服务端的接收缓冲区的大小。服务端需要接受transferData的请求,要求其长度与其报告的maxNumberOfBlockLength相等。transferData请求长度小于maxNumberOfBlockLength参数,服务端接受此请求是具体待定的。注意,给定块中的最后一个transferData请求可能需要小于maxNumberOfBlockLength。不允许服务端写入额外的数据字节(填充字节)不能包含在transferData消息中(无论是压缩格式还是未压缩格式),因为这会影响写入后续transferData请求数据的内存地址。

4、支持的否定应答码(NRC_)

  本服务实施了如下否定响应代码,下表记录了每个否定应答码发生的情况,如果服务端在错误场景使用了该服务,则应使用如下列出的否定响应码。

NRC描述
0x13incorrectMessageLengthOrInvalidFormat
请求报文长度不正确时,会发送该NRC
0x22conditionsNotCorrect
如果服务端在接收软件或标定参数模块的下载过程中,收到了此服务的请求,则应返回此NRC。如果在模块下载期间,服务端和客户端之间的数据大小不匹配时,就可能发生这种情况。
0x31requestOutOfRange
以下情况会会发送该NRC:
— 指定的dataFormatIdentifier无效;
— 指定的addressAndLengthFormatIdentifier无效;
— 指定的memoryAddress/memorySize无效;
0x33securityAccessDenied
服务端是被安全保护的,收到该服务的请求时,会发送该NRC。
0x70uploadDownloadNotAccepted
该NRC表示尝试下载到服务端内存中 无法完成,由于一些错误条件。

  0x34服务(RequestDownload,请求下载服务)的否定应答码(NRC)具体处理过程如下。
在这里插入图片描述

5、0x34服务(RequestDownload,请求下载服务)案例说明

  具体的案例见0x37服务(RequestTransferExit,请求传输退出服务)的案例

返回UDS诊断服务功能单元介绍目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值