【ISO14229_UDS刷写】-6-$34,$35,$36,$37诊断服务用于downloading下载/uploading上载数据的消息流示例
总目录:(单击下方链接皆可跳转至专栏总目录)
《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
2 $35,$36,$37诊断服务:从一个server上传(Upload)数据
优质博文推荐阅读(单击下方链接,即可跳转):
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博客“汽车电子助手”,做您的好助手。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)