总目录:(单击下方链接皆可跳转至专栏总目录)
《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014
目录
1 $0x38 RequestFileTransfer诊断服务描述
2 0x38服务请求消息
2.1 0x38服务请求消息定义
2.2 0x38服务请求消息子功能参数$ Level(LEV_)定义
2.3 0x38服务请求消息数据参数定义
3 0x38服务肯定响应消息
3.1 0x38服务肯定响应消息定义
3.2 0x38服务肯定响应消息数据参数定义
4 0x38服务支持的否定响应代码(NRC_)
5 示例:0x38 RequestFileTransfer服务消息流
5.1 假设
5.2 请求文件传输
附录:G.1 modeOfOperation值的定义
结尾
优质博文推荐阅读(单击下方链接,即可跳转):
点击返回「《Autosar从入门到精通-实战篇》总目录」
点击返回「《Autosar_BSW高阶配置》总目录」
点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏
RequestFileTransfer(0x38) service请求文件传输服务
服务 | SID | 描述 |
RequestFileTransfer 请求文件传输 | 0x38 | client要求在server和client之间进行文件传输的协商。 |
1 $0x38 RequestFileTransfer诊断服务描述
requestFileTransfer服务被client用来启动从client到server或从server到client的文件数据传输(download下载或upload上传)。此外,该服务还具有检索文件系统信息的功能。
如果server实现了用于数据存储的文件系统,该服务旨在作为支持数据上传和下载功能的RequestDownload和RequestUpload服务的替代解决方案。当配置向文件系统下载或从文件系统上传的过程时,应使用RequestFileTransfer服务来代替RequestDownload或RequestUpload。实际的数据传输和数据传输的终止是通过使用与RequestDownload或RequestUpload服务一样的TransferData和RequestTransferExit来实现的。该服务还包括删除server文件系统上的文件或目录的功能。对于这种用例,TransferData和RequestTransferExit服务并不适用。
在server收到RequestFileTransfer请求消息后,server应采取所有必要的行动来接收或发送数据,然后再发送一个positive response message。
重要的是 - server和client应满足ISO 14229-1的7.5章节中规定的请求和响应消息行为。
2 0x38服务请求消息
2.1 0x38服务请求消息定义
表433 - 请求消息定义
A_Data byte | 参数名称 | Cvt | 字节值 | 助记符 |
#1 | RequestFileTransfer Request SID 请求文件传输请求SID | M | 0x38 | RFT |
#2 | modeOfOperation 运行模式 | M | 0x01 – 0x05 | MOOP |
#3 #4 | filePathAndNameLength [ byte#1 (MSB) byte#2] (LSB) | M M | 0x00 – 0xFF 0x00 – 0xFF | FPL_B1 FPL_B2 |
#5 : #5+n-1 | filePathAndName = [ byte#1 (MSB) : byte#n ] | M : C1 | 0x00 – 0xFF : 0x00 – 0xFF | FP_B1 : FP_Bn |
#5+n | dataFormatIdentifier 数据格式标识符 | C2 | 0x00 – 0xFF | DFI_ |
#5+n+1 | fileSizeParameterLength 文件大小参数长度 | C2 | 0x00 – 0xFF | FSL |
#5+n+2 : #5+n+2+k-1 | fileSizeUnCompressed= [ byte#1 (MSB) : byte#k ] | C2 : C2,3 | 0x00 – 0xFF : 0x00 – 0xFF | FSUC_B1 : FSUC_Bk |
#5+n+2+k : #5+n+1+2k | fileSizeCompressed= [ byte#1 (MSB) : byte#k ] | C2 : C2,3 | 0x00 – 0xFF : 0x00 – 0xFF | FSC_B1 : FSC_Bk |
C1:该信息参数的长度(字节数)由filePathAndNameLength参数定义。 C2:这些参数的存在取决于modeOfOperation参数。 C3:这个消息参数的长度(字节数)由fileSizeParameterLength定义。 |
2.2 0x38服务请求消息子功能参数$ Level(LEV_)定义
此服务不使用子功能参数。
2.3 0x38服务请求消息数据参数定义
定义 |
modeOfOperation运行模式 该数据参数定义了应用于filePathAndName参数中所示文件或目录的运行类型。该数据参数的值在附件G中定义。 |
filePathAndNameLength文件路径和名称长度 定义参数filePath的长度(字节)。 |
filePathAndName文件路径和名称 定义server的文件系统位置,根据参数modeOfOperation参数,该文件应被添加、删除、替换或读取。此外,这个参数还包括作为文件路径一部分的应被添加、删除、替换或读取的文件的文件名。如果modeOfOperation参数等于0x05(ReadDir),这个参数表示要读取的目录。该参数的每个字节应以ASCII格式编码。 |
dataFormatIdentifier数据格式标识符 这个数据参数是一个字节的值,每个nibble单独编码。high nibble指定 " compressionMethod压缩方法",low nibble指定 " encryptingMethod加密方法"。值0x00指定既不使用compressionMethod也不使用encryptingMethod。除了0x00以外的值是车辆制造商特定的。如果modeOfOperation参数等于0x02(DeleteFile)和0x05(ReadDir),这个参数不应包括在请求信息中。 |
fileSizeParameterLength文件大小参数长度 定义了参数fileSizeUncompressed和fileSizeCompressed的字节长度。如果modeOfOperation参数等于0x02 (DeleteFile), 0x04 (ReadFile)或0x05 (ReadDir),这个参数将不包括在请求信息中。 |
fileSizeUncompressed文件大小未压缩 定义了未压缩文件的大小,单位是字节。 如果modeOfOperation参数等于0x02(DeleteFile)、0x04(ReadFile)或0x05(ReadDir),这个参数不应包括在请求信息中。 |
fileSizeCompressed文件大小压缩 以字节为单位定义压缩文件的大小。 如果传输的是一个未压缩的文件,这个参数的所有字节应被设置为参数fileSizeUncompressed中使用的大小信息。 如果modeOfOperation参数等于0x02(DeleteFile),0x04(ReadFile)或0x05(ReadDir),这个参数不应包括在请求信息中。 |
3 0x38服务肯定响应消息
3.1 0x38服务肯定响应消息定义
表435 - 肯定响应消息定义
A_Data byte | 参数名称 | Cvt | 字节值 | 助记符 |
#1 | RequestFileTransfer Response SID 请求文件传输响应SID | S | 0x78 | RRFT |
#2 | modeOfOperation 运行模式 | M | 0x01 – 0x05 | MOOP |
#3 | lengthFormatIdentifier 长度格式标识符 | C1 | 0x00 – 0xFF | LFID |
#4 : #4+(m-1) | maxNumberOfBlockLength = [ byte#1 (MSB) : byte#m ] | C1,2 : C1,2 | 0x00 – 0xFF : 0x00 – 0xFF | MNROB_ B1 : Bm |
#4+m | dataFormatIdentifier | C1 | 0x00 – 0xFF | DFI_ |
#4+m+1 #4+m+2 | fileSizeOrDirInfoParameterLength [ byte#1 (MSB) byte#2 (LSB)] | C1 C1 | 0x00 – 0xFF 0x00 – 0xFF | FSDIL_B1 FSDIL_B2 |
#4+m+3 : #4+m+3+k-1 | fileSizeUncompressedOrDirInfoLength= [ byte#1 (MSB) : byte#k ] | C1,3 : C1,3 | 0x00 – 0xFF : 0x00 – 0xFF | FSUDIL_B1 : FSUDIL_Bk |
#4+m+3+k : #4+m+3+2k-1 | fileSizeCompressed= [ byte#1 (MSB) : byte#k ] | C1,3 : C1,3 | 0x00 – 0xFF : 0x00 – 0xFF | FSC_B1 : FSC_Bk |
C1:这些参数的存在取决于modeOfOperation参数。 C2:该消息参数的长度(字节数)由fileSizeOrDirInfoParameterLength参数定义。 C3:这个消息参数的长度(字节数)由lengthFormatIdentifier参数定义。 |
3.2 0x38服务肯定响应消息数据参数定义
表436 - 响应消息数据参数定义
Definition |
modeOfOperation运行模式 这个参数是对请求值的呼应。 |
lengthFormatIdentifier长度格式标识符 定义了maxNumberOfBlockLength参数的长度(字节数)。 如果modeOfOperation参数等于0x02(DeleteFile),这个参数将不包括在响应信息中。 |
maxNumberOfBlockLength最大块长度 这个参数被requestFileTransfer肯定响应消息使用,以通知client在来自client的每个TransferData请求消息中包括多少个数据字节(maxNumberOfBlockLength),或者在上传数据时,server将在TransferData肯定响应中包括多少个数据字节。这个长度反映了完整的消息长度,包括TransferData请求消息或肯定响应消息中存在的服务标识符和数据参数。这个参数允许client在开始向server传输数据之前适应server的接收缓冲区大小,或者表明在上传数据的情况下,每个TransferData肯定响应中会包含多少数据字节。一个server需要接受长度等于其报告的maxNumberOfBlockLength的transferData请求。接受长度小于maxNumberOfBlockLength的transferData请求(如果有的话)是由server决定的。 注意:在一个给定的数据块中的最后一个转移数据请求可能被要求小于maxNumberOfBlockLength。 server不允许写入不包含在transferData消息中的额外数据字节(即填充字节)(无论是以压缩或未压缩的格式),因为这将影响后续transferData请求数据写入的memory address。 如果modeOfOperation参数等于0x02(DeleteFile),这个参数将不包括在响应信息中。 |
dataFormatIdentifier数据格式标识符 这个参数是对请求值的呼应。 如果modeOfOperation参数等于0x02 (DeleteFile),这个参数不应包括在响应信息中。 如果modeOfOperation参数等于0x05(ReadDir),这个参数的值应等于0x00。 |
fileSizeOrDirInfoParameterLength文件大小或目录信息参数长度 定义了参数fileSizeUncompressedOrDirInfoLength和fileSizeCompressed的字节长度。 如果modeOfOperation参数等于0x01 (AddFile), 0x02 (DeleteFile)或0x03 (ReplaceFile),这个参数将不包括在响应信息中。 |
fileSizeUncompressedOrDirInfoLength文件大小未压缩或Dir信息长度 定义要上传的未压缩文件的大小或要读取的目录信息的长度(字节)。 如果modeOfOperation参数等于0x01 (AddFile), 0x02 (DeleteFile)或0x03 (ReplaceFile),这个参数将不包括在响应信息中。 |
fileSizeCompressed文件大小压缩 定义了压缩文件的大小,单位是字节。 如果modeOfOperation参数等于0x01 (AddFile), 0x02 (DeleteFile, 0x03 (ReplaceFile) )或0x05 (ReadDir),这个参数将不包括在响应信息中。 |
4 0x38服务支持的否定响应代码(NRC_)
对于这项服务,应执行以下negative response code否定响应代码。表437中记录了每个响应代码会发生的情况。如果错误情况适用于server,应使用列出的negative response否定响应。
表397 - 支持的否定响应代码
NRC | 描述 | 助记符 |
0x13 | incorrectMessageLengthOrInvalidFormat消息长度不正确或格式无效 如果信息的长度有误,则应发送该NRC。 | IMLOIF |
0x22 | conditionsNotCorrect条件不正确 如果server在下载或上传数据的过程中收到对该服务的请求,或者不满足能够执行该服务的其他条件,则应返回该NRC。 | CNC |
0x31 | requestOutOfRange请求超出范围 如果出现以下情况,则应返回该NRC: - 指定的dataFormatIdentifier无效 - 指定的modeOfOperation无效 - 指定的fileSizeParameterLength无效 - 指定的filePathAndNameLength无效 - 指定的fileSizeUncompressed不是有效的。 - 指定的fileSizeCompressed无效 - 指定的filePathAndName无效。 | ROOR |
0x33 | securityAccessDenied安全访问被拒绝 如果在收到对该服务的请求时,server是安全的(对于支持SecurityAccess服务的server),应返回这个NRC。 | SAD |
0x70 | uploadDownloadNotAccepted上传下载不被接受 该NRC表明,由于某些故障条件,无法完成向server内存下载的尝试。 | UDNA |
评价顺序记录在图30中。
Key
1)最小长度:5字节(SI + MOOP + FPL_B1 + FPL_B2 + FP_B1)。
2)消息参数的有效性检查取决于modeOfOperation参数。
3)最大长度可以通过fileSizeParamterLength和filePathAndNameLength来计算。
图30 - NRC处理请求下载服务
5 示例:0x38 RequestFileTransfer服务消息流
5.1 假设
本章节规定了适用于此消息流示例的条件。
注意:本示例仅限于描述requestFileTransfer请求和requestFileTransfer肯定响应。在这种情况下,transferData和requestTransferExit的用法与这些服务在requestDownload或requestUpload中的用法相同,因此描述下载/上传序列的例子也适用。
表438 - 定义RequestFileTransfer消息的参数值
数据参数名称 | 数据参数值 | 数据参数说明 |
modeOfOperation 运行模式 | 0x01 | AddFile |
filePathAndNameLength 文件路径和名称长度 | 0x001E | 参数文件filePathAndName的长度为30。 |
filePathAndName 文件路径和名称 | "D:\mapdata\europe\germany1.yxz" | 路径包括文件名。 |
dataFormatIdentifier 数据格式标识符 | 0x11 | compressionMethod = 0x1X; encryptingMethod = 0xX1 |
fileSizeParameterLength 文件大小参数长度 | 0x02 | 两个文件大小参数的长度为2个字节。 |
fileSizeUncompressed 文件大小未压缩 | 0xC350 | 50 KByte |
fileSizeCompressed 文件大小压缩 | 0x7530 | 30 KByte |
5.2 请求文件传输
表439和表440显示了RequestFileTransfer请求和响应信息流的一个例子。
表439 - RequestFileTransfer请求消息示例
Message direction消息方向 | Server —> Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestFileTransfer Request SID 请求文件传输请求SID | 0x38 | RFT | |
#2 | modeOfOperation 运行模式 | 0x01 | MOOP | |
#3 #4 | filePathAndNameLength [ byte#1 (MSB) byte#2] (LSB) | 0x00 0x1E | FPL_B1 FPL_B2 | |
#5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 | filePathAndName = [ byte#1 (MSB) byte#2 byte#3 byte#4 byte#5 byte#6 byte#7 byte#8 byte#9 byte#10 byte#11 byte#12 byte#13 byte#14 byte#15 byte#16 byte#17 byte#18 byte#19 byte#20 byte#21 byte#22 byte#23 byte#24 byte#25 byte#26 byte#27 byte#28 byte#29 byte#30] | 0x44 0x3A 0x5C 0x6D 0x61 0x70 0x64 0x61 0x74 0x61 0x5C 0x65 0x75 0x72 0x6F 0x70 0x65 0x5C 0x67 0x65 0x72 0x6D 0x61 0x6E 0x79 0x31 0x2E 0x79 0x78 0x7A | FP_B1 FP_B2 FP_B3 FP_B4 FP_B5 FP_B6 FP_B7 FP_B8 FP_B9 FP_B10 FP_B11 FP_B12 FP_B13 FP_B14 FP_B15 FP_B16 FP_B17 FP_B18 FP_B19 FP_B20 FP_B21 FP_B22 FP_B23 FP_B24 FP_B25 FP_B26 FP_B27 FP_B28 FP_B29 FP_B30 | |
#35 | dataFormatIdentifier 数据格式标识符 | 0x11 | DFI_ | |
#36 | fileSizeParameterLength 文件大小参数长度 | 0x02 | FSL | |
#37 #38 | fileSizeUnCompressed= [ byte#1 (MSB) byte#2 ] | 0xC3 0x50 | FSUC_B1 FSUC_Bk | |
#39 #40 | fileSizeCompressed= [ byte#1 (MSB) byte#2 ] | 0x75 0x30 | FSC_B1 FSC_Bk | |
表440 – RequestFileTransfer肯定响应请求消息示例
Message direction消息方向 | Server —> Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestFileTransfer Response SID 请求文件传输响应SID | 0x78 | RRFT | |
#2 | modeOfOperation 运行模式 | 0x01 | MOOP | |
#3 | lengthFormatIdentifier 长度格式标识符 | 0x02 | LFID | |
#4 #5 | maxNumberOfBlockLength = [ byte#1 (MSB) byte#m ] | 0xC3 0x50 | MNROB_ B1 B2 | |
#6 | dataFormatIdentifier 数据格式标识符 | 0x11 | DFI_ | |
附录:G.1 modeOfOperation值的定义
RequestFileTransfer 请求消息包含 modeOfOperation 参数。 这些值在表 G.1 中定义。
表G.1 - modeOfOperation值的定义
Byte Value | Description | Cvt | Mnemonic |
0x00 | ISO/SAE reserved 该值由本文档保留以供将来定义。 | M | ISOSAERESRVD |
0x01 | AddFile 这个值应被用来添加在filePathAndName参数中定义的文件(download下载)。 | U | ADDFILE |
0x02 | DeleteFile 这个值应被用来删除参数filePathAndName中定义的文件。 | U | DELFILE |
0x03 | ReplaceFile 这个值应被用来替换filePathAndName参数中定义的文件(download下载)。如果该文件没有存储在该位置,该文件应被添加。 | U | REPLFILE |
0x04 | ReadFile 这个值应被用来读取文件(upload上传),其位置由filePathAndName参数定义。 | U | RDFILE |
0x05 | ReadDir 这个值应被用来读取filePathAndName参数中定义的目录。这个值意味着该请求不包括fileName。 | U | RDDIR |
0x06 - 0xFF | ISO/SAE reserved 该值由本文档保留以供将来定义。 | M | ISOSAERESRVD |
以上摘自《ISO 14229-1:2013》。
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。