目录
1、0x35服务(RequestUpload,请求上传服务)
Service description:
0x35服务(RequestUpload,请求上传服务)被客户端用于初始化从服务端到客户端的数据传输。
在服务端接收到requestUpload的请求报文后,在服务端肯定应答之前,应采取所有必要的行为去发送数据。
2、请求报文格式
2.1 请求报文定义
下表定义了请求报文的格式:
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | RequestUpload Request SID | M | 0x35 |
#2 | dataFormatIdentifier | M | 0x00 - 0xFF |
#3 | addressAndLengthFormatIdentifier | M | 0x00 - 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 肯定应答报文格式定义
字节序号 | 参数值 | 约定 | 字节值 |
---|---|---|---|
#1 | RequestUpload Response SID | M | 0x75 |
#2 | lengthFormatIdentifier | M | 0x00 - 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 requestUpload服务的肯定应答报文中使用此参数通知客户端在来自于客户端的每个TransferData肯定应答报文消息中包含了多少个数据字节(maxNumberOfBlockLength)。这个长度表示了完整的消息长度,包括服务标识符和TransferData肯定应答报文中存在的数据参数。在服务端开始向客户端传输数据之前,此参数允许客户端去适应服务端的发送缓冲区的大小。客户端需要接受transferData的响应,要求其长度与其报告的maxNumberOfBlockLength相等。发送的transferData响应长度小于maxNumberOfBlockLength参数(如果有的话),是特定于服务端内的。 注意,给定块中的最后一个transferData响应可能需要小于maxNumberOfBlockLength。 |
4、支持的否定应答码(NRC_)
本服务实施了如下否定响应代码,下表记录了每个否定应答码发生的情况,如果服务端在错误场景使用了该服务,则应使用如下列出的否定响应码。
NRC | 描述 |
---|---|
0x13 | incorrectMessageLengthOrInvalidFormat 请求报文长度不正确时,会发送该NRC |
0x22 | conditionsNotCorrect 如果requestUpload服务的标准不满足时,则应返回此NRC。当一个requestUpload已经激活时服务端接收到该服务的请求时,这些可能会发生。 |
0x31 | requestOutOfRange 以下情况会会发送该NRC: — 指定的dataFormatIdentifier无效; — 指定的addressAndLengthFormatIdentifier无效; — 指定的memoryAddress/memorySize无效; |
0x33 | securityAccessDenied 服务端是被安全保护的,收到该服务的请求时,会发送该NRC。 |
0x70 | uploadDownloadNotAccepted 该NRC表示由于一些错误条件,尝试上传到服务端内存中无法完成。 |
0x35服务(RequestUpload,请求上传服务)的否定应答码(NRC)具体处理过程如下。
5、0x35服务(RequestUpload,请求上传服务)案例说明
具体的案例见0x37服务(RequestTransferExit,请求传输退出服务)的案例