0x34RequestDownload
客户端请求协商从客户端到服务器的数据传输。
客户端使用requestDownload服务来启动从客户端到服务器的数据传输(下载) 。
服务器收到requestDownload请求消息后,服务器应在发送肯定响应消息之前采取所有必要的操作来接收数
据。
请求格式:
参数说明:
dataFormatIdentifier
这 个 数 据 参 数 是 一 个 字 节 值 , 每 个 半 字 节 分 开 编 码 。 高 半 字 节 指 定 “ compressionMethod” , 低 半 字 节 指 定
“encryptingMethod”。 值0x00指定既不使用compressionMethod也不使用encryptingMethod。 0x00以外的值是车辆制
造商特定的。
addressAndLengthFormatIdentifier
该参数是一个字节值,每个半字节分开编码(参见H.1的示例值) :
7 - 4: memorySize参数的长度(字节数)
3 - 0: memoryAddress参数的长度(字节数)
memoryAddress
参数memoryAddress是要写入数据的服务器内存的起始地址。 用于该地址的字节数由addressAndLengthFormatIdentifier
的低半字节(bit 3-0)定义。 memoryAddress参数中的字节#m始终是服务器中引用地址的最低有效字节。 地址的最高
有效字节可用作存储器标识符。
使用内存标识符的一个例子是具有16位寻址和内存地址重叠的双处理器服务器(当给定地址对任一处理器有效但是产生
不同的物理内存设备或使用内部和外部闪存时)。 在这种情况下,可以将memoryAddress参数中另外未使用的字节指定为
用于选择所需存储器设备的存储器标识符。 该功能的使用应该由车辆制造商/系统供应商定义。
memorySize
服务器应使用此参数来比较内存大小与传输数据服务期间传输的总数据量。 这增加了编程安全性。 用于此大小的字节数由addressAndLengthFormatIdentifier的高半字节(第7 - 4位)定义。 如果使用数据压缩,则无论内存大小是否表示压
缩或未压缩大小,都是车辆制造商特定的。
正向响应:
maxNumberOfBlockLength:
该参数用于requestDownload正响应消息通知客户端有多少数据要包含在来自客户端的每个 TransferData 请求消息中的字节数 (maxNumberOfBlockLength)。这个长度反映完整的消息长度,包括服务标识符和数据参数传输数据请求消息。该参数允许客户端适应服务器的接收缓冲区大小在它开始向服务器传输数据之前。服务器需要接受相等的 transferData 请求长度为其报告的 maxNumberOfBlockLength。 transferData 请求的长度更少是服务器特定的比 maxNumberOfBlockLength 被接受(如果有的话)。给定块中的最后一个 transferData 请求可以是必须小于 maxNumberOfBlockLength。不允许服务器写入额外的数据字节(即填充字节)不包含在 transferData 消息中(无论是压缩格式还是未压缩格式),因为这会影响后续 transferData 请求数据写入的内存地址。(说白就是不能超过这个长度,这个参数表示ECU所支持的最大写入数据块长度,即一次可以写入的最大字节长度。这个值告知诊断工具,在发送WriteMemoryByAddress请求时,每次写入数据的最大字节数不应超过此限制。遵循这个限制有助于确保通信过程中的数据传输稳定性和可靠性。)
负向响应:
支持的否定响应码