Blog/UDS 刷写文件 HEX 中的CAN报文转换

UDS 刷写文件 HEX 中的CAN报文转换

这个是在做 常州易控 刷写工具的时候写出的几个关键行数的转换

max
max
1 min read

:0200000480007A

:1000000000000000700059B3000000000000000074

:10001000000000000000000064B81E799B47E186E4

text
:0200000480007A

这一行是一个Intel HEX文件中的扩展线性地址记录。它不包含要写入目标设备的实际数据,而是设置后续数据记录的基地址。

  • 长度:
    text
    02
    (2字节)
  • 地址:
    text
    0000
    (对于这种类型的记录,地址字段通常被忽略)
  • 类型:
    text
    04
    (扩展线性地址记录)
  • 数据:
    text
    8000
    (这是一个16位的值,用于设置后续数据记录的基地址)
  • 校验和:
    text
    7A

在UDS固件更新过程中,这一行通常用于设置后续数据块的内存地址。在UDS中,这可能涉及到使用

text
0x34
(Request Download)服务来指定内存地址和大小。

以下是一个示例的CAN报文,用于设置内存地址:

  • CAN ID: 用于诊断请求的CAN标识符
  • 数据:
    text
    02 34 44 80 00
    (
    text
    02
    是数据长度,
    text
    34
    是Request Download服务ID,
    text
    44
    可能是一个标记来表示这是一个地址和长度,
    text
    80 00
    是扩展线性地址)

text
:1000000000000000700059B3000000000000000074

执行这行的数据在UDS固件更新过程中涉及到将数据块发送到ECU。这通常是在“请求下载”服务之后的“传输数据”阶段进行的。

这一行的内容是:

  • 长度:
    text
    10
    (16字节)
  • 地址:
    text
    0000
  • 类型:
    text
    00
    (数据记录)
  • 数据:
    text
    00000000700059B30000000000000000
  • 校验和:
    text
    74

在UDS中,发送这16字节的数据通常涉及到使用

text
0x36
(Transfer Data)服务。以下是一个示例的CAN报文序列,用于发送这16字节的数据:

  1. 第一个报文可能是:
    1. CAN ID: 用于诊断请求的CAN标识符
    2. 数据:
      text
      10 10 36 00 00 00 00 00 70 00
      (这是一个多帧报文的第一帧,
      text
      10
      表示第一帧,
      text
      10
      表示总长度是16字节,
      text
      36
      是Transfer Data服务ID,然后是数据的前两个字节)
  2. 接下来的报文可能是:
    1. CAN ID: 用于诊断请求的CAN标识符
    2. 数据:
      text
      21 59 B3 00 00 00 00 00 00
      (这是多帧报文的第二帧,
      text
      21
      表示第二帧,然后是数据的下一部分)
  3. 最后一个报文可能是:
    1. CAN ID: 用于诊断请求的CAN标识符
    2. 数据:
      text
      22 00 00 00 00 00 00 00
      (这是多帧报文的第三帧,
      text
      22
      表示第三帧,然后是数据的最后部分)
#UDS
#HEX.CAN
#KVASER
#ISO 14229