总目录:(单击下方链接皆可跳转至专栏总目录)
《UDS/OBD诊断需求编辑工具》总目录https://blog.csdn.net/qfmzhu/article/details/123697014【ISO14229_UDS刷写】-1-$34诊断服务RequestDownload理论部分https://blog.csdn.net/qfmzhu/article/details/130895695
【ISO14229_UDS刷写】-2-$35诊断服务RequestUpload理论部分https://blog.csdn.net/qfmzhu/article/details/130895791【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分https://blog.csdn.net/qfmzhu/article/details/130895839【ISO14229_UDS刷写】-4-$37诊断服务RequestTransferExit理论部分https://blog.csdn.net/qfmzhu/article/details/130895913【ISO14229_UDS刷写】-5-$38诊断服务RequestFileTransfer理论部分https://blog.csdn.net/qfmzhu/article/details/130895945
目录
1 $34,$36,$37诊断服务:将数据下载(Download)到server
1.1 假设
1.2 步骤#1:请求下载
1.3 步骤#2:传输数据
1.4 步骤#3:请求传输退出
2 $35,$36,$37诊断服务:从一个server上传(Upload)数据
2.1 步骤#1:请求上传
2.2 步骤#2:传输数据
2.3 步骤#3:请求传输退出
结尾
优质博文推荐阅读(单击下方链接,即可跳转):
点击返回「《Autosar从入门到精通-实战篇》总目录」
点击返回「《Autosar_BSW高阶配置》总目录」
点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏
1 $34,$36,$37诊断服务:将数据下载(Download)到server
1.1 假设
本章节规定了从client向server传输数据(download下载)的条件。这个例子包括三个步骤。
在第一步中,client和server执行一个RequestDownload服务。通过该服务,以下信息将作为参数在client和server之间的请求和肯定响应消息中进行交换。
表413 - transferRequestParameter值的定义
数据参数名称 | 数据参数值 | 数据参数说明 |
memoryAddress (3 bytes) 内存地址(3个字节) | 0x602000 | memoryAddress (start)下载数据到 |
dataFormatIdentifier 数据格式标识符 | 0x11 | dataFormatIdentifier: compressionMethod = 0x1X encryptingMethod = 0xX1 |
MemorySize (3 bytes) 内存大小(3个字节) | 0x00FFFF | MemorySize =(65 535字节) 这个参数值应被server用来与执行requestTransferExit服务期间传输的实际字节数进行比较。 |
表414 - transferResponseParameter值的定义
数据参数名称 | 数据参数值 | 数据参数说明 |
maximumNumberOfBlockLength 最大块长度 | 0x0081 | maximumNumberOfBlockLength: (serviceId + BlockSequenceCounter(1字节)+ 127 server数据字节= 129数据字节) |
在第二步中,client将65 535字节的数据从内memoryaddress 0x602000开始传输到server的flash memory中。
在第三步中,client通过requestTransferExit服务终止向server的数据传输。测试条件:
ignition = on, engine = off, vehicle speed = 0 [kph]
我们假设,在这个例子中,server支持一个三字节的memoryAddress和一个三字节的MemorySize。如果MemorySize包含未压缩的大小,那么具有127个数据字节的TransferData服务的数量就不能被计算出来,因为compression method压缩方法和它的压缩率没有被标准化。如果MemorySize包含压缩后的大小,那么具有127个数据字节的TransferData服务总数将是516个,然后是一个具有3个字节的TransferData请求。因此,假定最后一个TransferData请求信息包含一个等于0x05的blockSequenceCounter。
1.2 步骤#1:请求下载
表415 - RequestDownload请求消息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestDownload Request SID 请求下载请求SID | 0x34 | RD | |
#2 | dataFormatIdentifier 数据格式标识符 | 0x11 | DFI | |
#3 | addressAndLengthFormatIdentifier 地址和长度格式标识符 | 0x33 | ALFID | |
#4 | memoryAddress [ byte#1 ] (MSB) | 0x60 | MA_B1 | |
#5 | memoryAddress [ byte#2 ] | 0x20 | MA_B2 | |
#6 | memoryAddress [ byte#3 ] (LSB) | 0x00 | MA_B3 | |
#7 | MemorySize [ byte#1 ] (MSB) | 0x00 | UCMS_B1 | |
#8 | MemorySize [ byte#2 ] | 0xFF | UCMS_B2 | |
#9 | MemorySize [ byte#3 ] (LSB) | 0xFF | UCMS_B3 | |
表416--RequestDownload肯定响应消息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestDownload Response SID 请求下载响应SID | 0x74 | RDPR | |
#2 | LengthFormatIdentifier 长度格式标识符 | 0x20 | LFID | |
#3 #4 | maxNumberOfBlockLength [ byte#1 ] (MSB) maxNumberOfBlockLength [ byte#2 ] (LSB) | 0x00 0x81 | MNROB_B1 MNROB_B1 | |
1.3 步骤#2:传输数据
表417 - TransferData请求消息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Request SID 传输数据请求SID | 0x36 | TD | |
#2 | blockSequenceCounter 块序列计数器 | 0x01 | BSC | |
#3 : #129 | transferRequestParameterRecord [ transferRequestParameter#1 ] = dataByte#3 : transferRequestParameterRecord [ transferRequestParameter#127 ] = dataByte#129 | 0xXX : 0xXX | TRTP_1 : TRTP_127 | |
表418 - TransferData肯定响应信息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Response SID 传输数据响应SID | 0x76 | TDPR | |
#2 | blockSequenceCounter 块序列计数器 | 0x01 | BSC | |
表419 - TransferData请求消息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Request SID 传输数据请求SID | 0x36 | TD | |
#2 | blockSequenceCounter 块序列计数器 | 0x05 | BSC | |
#3 : #n+2 | transferRequestParameterRecord [ transferRequestParameter#1 ] = dataByte#3 : transferRequestParameterRecord [ transferRequestParameter#n-2 ] = dataByte#n | 0xXX : 0xXX | TRTP_1 : TRTP_n-2 | |
表420 - TransferData肯定响应消息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Response SID 传输数据响应SID | 0x76 | TDPR | |
#2 | blockSequenceCounter 块序列计数器 | 0x05 | BSC | |
1.4 步骤#3:请求传输退出
表421 - RequestTransferExit请求信息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestTransferExit Request SID 请求传输退出请求SID | 0x37 | RTE | |
表422 - RequestTransferExit肯定响应信息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestTransferExit Response SID 请求传输退出响应SID | 0x77 | RTEPR | |
2 $35,$36,$37诊断服务:从一个server上传(Upload)数据
本章节规定了从server向client传输数据(upload上传)的条件。这个例子包括三个步骤。
在第一步中,client和server执行一个requestUpload服务。通过这个服务,以下信息将作为参数在client和server之间的请求和肯定响应消息中进行交换:
表423 - transferRequestParameter值的定义
数据参数名称 | 数据值数据 | 参数说明 |
memoryAddress (3 bytes) 内存地址(3个字节) | 0x201000 | memoryAddress (start),以上传数据。 |
dataFormatIdentifier 数据格式标识符 | 0x11 | dataFormatIdentifier compressionMethod = 0x1X encryptingMethod = 0xX1 |
MemorySize (3 bytes) 内存大小(3个字节) | 0x0001FF | MemorySize =(511字节) 该参数值应表明应传输多少数据字节,并应被server用来与执行requestTransferExit服务期间传输的实际字节数进行比较。 |
表424 - transferResponseParameter值的定义
数据参数名称 | 数据值数据 | 数据参数说明 |
maximumNumberOfBlockLength 最大块长度 | 0x0081 | maximumNumberOfBlockLength: (serviceId + BlockSequenceCounter (1 byte) + 127 server数据字节 = 129个数据字节) |
在第二步中,server从外部RAM中传输511个数据字节(4个transferData服务,包含129个(127个server数据字节+1个ServiceId数据字节+1个blockSequenceCounter字节)数据字节和1个transferData服务,包含5个(3个server数据字节+1个ServiceId数据字节+1个blockSequenceCounter字节)数据字节,从server的memoryaddress 0x201000开始。
在第三步中,client用requestTransferExit服务终止向server的数据传输。测试条件:
ignition = on, engine = off, vehicle speed = 0 [kph]
假设在这个例子中,server支持一个三字节的memoryAddress和一个三字节的MemorySize。此外,假设服server支持TransferData(0x36)服务中的blockSequenceCounter。
2.1 步骤#1:请求上传
表425 - RequestUpload请求信息流示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestUpload Request SID 请求上传请求SID | 0x35 | RU | |
#2 | dataFormatIdentifier 数据格式标识符 | 0x11 | DFI | |
#3 | addressAndLengthFormatIdentifier 地址和长度格式标识符 | 0x33 | ALFID | |
#4 | memoryAddress [ byte#1 ] (MSB) | 0x20 | MA_B1 | |
#5 | memoryAddress [ byte#2 ] | 0x10 | MA_B2 | |
#6 | memoryAddress [ byte#3 ] (LSB) | 0x00 | MA_B3 | |
#7 | MemorySize [ byte#1 ] (MSB) | 0x00 | UCMS_B1 | |
#8 | MemorySize [ byte#2 ] | 0x01 | UCMS_B2 | |
#9 | MemorySize [ byte#3 ] (LSB) | 0xFF | UCMS_B3 | |
表426 - RequestUpload肯定响应信息流示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestUpload Response SID 请求上传响应SID | 0x75 | RUPR | |
#2 | lengthFormatIdentifier length格式标识符 | 0x20 | LFID | |
#3 #4 | maxNumberOfBlockLength [ byte#1 ] (MSB) maxNumberOfBlockLength [ byte#2 ] (LSB) | 0x00 0x81 | MNROB_B1 MNROB_B1 | |
2.2 步骤#2:传输数据
表427 - TransferData请求消息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Request SID 传输数据请求SID | 0x36 | TD | |
#2 | blockSequenceCounter 块序列计数器 | 0x01 | BSC | |
表428 - TransferData肯定响应消息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Response SID 传输数据响应SID | 0x76 | TDPR | |
#2 | blockSequenceCounter 块序列计数器 | 0x01 | BSC | |
#3 : #129 | transferResponseParameterRecord [ transferResponseParameter#1 ] = dataByte3 : transferResponseParameterRecord [ transferResponseParameter#127 ] = dataByte129 | xx : xx | TREP_1 : TREP_127 | |
:
表429 - TransferData请求消息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Request SID 传输数据请求SID | 0x36 | TD | |
#2 | blockSequenceCounter 块序列计数器 | 0x05 | BSC | |
表430 - TransferData肯定响应消息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | TransferData Response SID 传输数据响应SID | 0x76 | TDPR | |
#2 | blockSequenceCounter 块序列计数器 | 0x05 | BSC | |
#3 : #5 | transferResponseParameterRecord [ transferResponseParameter#1 ] = dataByte3 : transferResponseParameterRecord [ transferResponseParameter#3 ] = dataByte5 | 0xXX : 0xXX | TREP_1 : TREP_3 | |
2.3 步骤#3:请求传输退出
表431 - RequestTransferExit请求信息流程示例
Message direction消息方向 | Client -- > Server | |||
Message Type消息类型 | Request请求 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestTransferExit Request SID 请求传输退出请求SID | 0x37 | RTE | |
表432 - RequestTransferExit肯定响应信息流程示例
Message direction消息方向 | Server -- >Client | |||
Message Type消息类型 | Response响应 | |||
A_Data byte | 描述(所有值均为十六进制) | 字节值 | 助记符 | |
#1 | RequestTransferExit Response SID 请求传输退出响应SID | 0x77 | RTEPR | |
以上摘自《ISO 14229-1:2013》。
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。