15.2 请求下载(34)服务
来自:ISO 14229-1-2020.pdf
15.2.1 服务描述
客户机使用requestDownload服务发起从客户机到服务器的数据传输(下载)。
在服务器接收到requestDownload请求消息之后,服务器应该在发送积极响应消息之前采取所有必要的操作来接收数据。
重要:服务器和客户端必须满足8.7中规定的请求和响应消息行为。
15.2.2 请求消息
15.2.2.1 请求消息定义
表440指定了请求消息。
数据字节 | 参数名称 | Cvt | 字节值 | 助记符 |
---|---|---|---|---|
#1 | 请求下载的请求服务标识符 | M | 34 | RD |
#2 | 数据格式标识符 | M | 00到FF | DFI_ |
#3 | 地址和长度格式标识符 | M | 00到FF | ALFID |
#4 : #(m-1)+4 | 内存地址[]=[字节#1 (MSB):字节#m] | M : C1 | 00到FF: 00到FF | MA_B1 : MA_Bm |
#n-(k-1) : #n | 内存大小[]=[字节#1 (MSB):字节#k] | M : C2 | 00到FF: 00到FF | MS_B1 : MS_Bk |
注:
- C1:这个参数的存在取决于addressAndLengthFormatIdentifier的地址长度信息参数。
- C2:该参数的存在取决于addressAndLengthFormatIdentifier的内存大小长度信息。
15.2.2.2 请求消息子函数参数$Level (LEV_)定义
此服务不使用SubFunction参数。
15.2.2.3请求消息数据参数定义
表441指定了请求消息的数据参数。
定义 |
---|
dataFormatIdentifier 这个数据参数是一个单独编码的字节值。高半字节指定“compressionMethod”,低半字节指定“encryptingMethod”。值00指定既不使用compressionMethod也不使用encryptingMethod。00以外的值是特定于车辆制造商的。 |
addressAndLengthFormatIdentifier 这个参数是一个字节值,每个半字节分别编码(参见表H.1的示例值):
|
memoryAddress 参数memoryAddress是要写入数据的服务器内存的起始地址。该地址使用的字节数由addressAndLengthFormatIdentifier的低位(比特位3 - 0)定义。memoryAddress参数中的Byte#m始终是服务器中引用的地址的最低有效字节。地址的最高位字节可以用作内存标识符。 使用内存标识符的一个例子是具有16位寻址和内存地址重叠的双处理器服务器(当给定的地址对任一处理器都有效,但产生不同的物理内存设备或使用内部和外部闪存时)。在这种情况下,可以将memoryAddress参数中未使用的字节指定为用于选择所需内存设备的内存标识符。该功能的使用应由车辆制造商/系统供应商定义。 |
memorySize 服务器通过这个参数应使用来比较内存大小和TransferData服务期间传输的数据总量。这增加了编程的安全性。这个大小所使用的字节数由addressAndLengthFormatIdentifier的高半字节(比特位7 - 4)定义。如果使用数据压缩,则内存大小是否代表压缩或未压缩大小是车辆制造商特定的。 |
15.2.3 积极响应信息
15.2.3.1 积极响应消息定义
表442指定了积极响应消息。
注:
- #1:请求下载响应服务标识符(RDPR),值为[74]
- #2:长度格式标识符(LFID),值为[00到F0]
- #3: #n:最大块长度=[字节#1 (MSB):字节#m](MNROB_ B1: Bm),值为[00到FF: 00到FF]
15.2.3.2 积极响应消息数据参数定义
表443指定了积极响应消息的数据参数。
定义 |
---|
lengthFormatIdentifier 这个参数是一个字节值,每个半字节分别编码:
|
maxNumberOfBlockLength requestDownload正向响应消息使用此参数来通知客户机在来自客户机的每个TransferData请求消息中包含多少数据字节(maxNumberOfBlockLength)。这个长度反映了完整的消息长度,包括服务标识符和TransferData请求消息中的数据参数。该参数允许客户端在开始向服务器传输数据之前适应服务器的接收缓冲区大小。服务器需要接受长度与其报告的maxNumberOfBlockLength相等的transferData请求。这是服务器特定的transferData请求长度小于maxNumberOfBlockLength被接受(如果有的话)。给定块中的最后一个transferData请求可以要求小于maxNumberOfBlockLength。服务器不允许写入不包含在transferData消息中的额外数据字节(即pad字节)(无论是压缩格式还是未压缩格式),因为这会影响后续transferData请求数据将写入的内存地址。 |
15.2.4 支持的消极响应码(NRC_)
本服务应实施以下消极响应代码。表444记录了每个响应代码发生的情况。如果错误场景适用于服务器,则列出的消极响应应使用。
NRC | 描述 | 助记符 |
---|---|---|
13 | incorrectMessageLengthOrInvalidFormat 如果信息长度错误,则应发送此NRC。 | IMLOIF |
22 | conditionsNotCorrect 如果服务器在下载软件或校准模块的过程中接收到此服务的请求,则应返回此NRC。如果在下载模块期间,服务器和客户端之间的数据大小不匹配,就会发生这种情况。 | CNC |
31 | requestOutOfRange 在下列情况下,应退还NRC:
| ROOR |
33 | securityAccessDenied 当收到对该服务的请求时,如果服务器是安全的(对于支持SecurityAccess服务的服务器),则应返回此NRC。 | SAD |
34 | authenticationRequired 如果数据标识符是安全的,并且客户端基于其身份验证状态没有足够的权限,则将发送此NRC。 | AR |
70 | uploadDownloadNotAccepted 此NRC表示由于某些故障条件,无法完成下载到服务器内存的尝试。 | UDNA |
计算序列如图31所示。
15.2.5 消息流示例
有关完整的消息流示例,请参见15.5.5。