You are on page 1of 2

1、ISO-tp

ISO-tp(ISO 15765-2),是一个通过 CAN 总线发送数据包的国际标准。它定义了一种通过总线发送任意长度数


据的方法。
ISO-tp 在每个 CAN 报文的开头加上一个或多个元数据字节。 这些额外的字节称为协议控制信息(PCI)。第一字
节的前半段表示 PCI 类型,一共有四种:
0 -单帧 SF。包含整个负载。下半个字节是数据包中有多少数据。
1 -第一帧 FF。多包负载的第一帧。接下来的 3 个半字节表示有效载荷的大小。
2 -序列帧 CF。它包含多包负载的其余部分。下半字节用作索引,以整理接收到的数据包的顺序。如果传输
的内容超过 112 字节,索引可以封装。
3 -流控帧 FC。作为第一帧数据包的确认。指定传输附加数据包的参数,如它们的发送速率。
具体分析的网址参照:https://blog.csdn.net/qq_41256212/article/details/86714960

例子:
IDH: 07, IDL: E0, Len: 08, Data: 10 82 36 01 31 46 4D 43
IDH: 07, IDL: E8, Len: 08, Data: 30 00 00 00 00 00 00 00
IDH: 07, IDL: E0, Len: 08, Data: 21 55 30 45 37 38 41 4B
IDH: 07, IDL: E0, Len: 08, Data: 22 42 33 30 34 36 39 FF
IDH: 07, IDL: E0, Len: 08, Data: 23 FF FF FF 2A FF FF FF

发送到 ECU 的 ID 为 07E0 的第一个数据包是表示 0x082 字节数据的第一帧。 然后下一帧是确认。 接下来的三


帧是索引为 1,2,3 的连续帧(注意,索引从 1 开始,而不是 0)。有效载荷的实际数据是 36 01 31 46 4d 43
55 30……”

2、ISO 14229, 14230

ISO 14229 拥有服务 id 列表,其中会有服务 ID 和服务名称一一对应

例子:
IDH: 07, IDL: E0, Len: 08, Data: 02 10 03 00 00 00 00 00
IDH: 07, IDL: E8, Len: 08, Data: 06 50 03 00 32 01 F4 00

这里,提取 ISO-TP 报头后,发送的数据为“1003”。 10 表示为一个诊断会话控制, ISO 说明 03 表示一个扩展


诊断会话。 ECU 返回 6 字节的数据。 第一个字节 50 表示成功,因为它比发送的代码大 40。下一个字节确认发
送的代码。 其余的数据与所建立的会话的细节有关。 下面是失败调用的示例:
IDH: 07, IDL: 26, Len: 08, Data: 02 10 02 00 00 00 00 00
IDH: 07, IDL: 2E, Len: 08, Data: 03 7F 10 12 00 00 00 00
这里的响应是 7F,这表明存在错误。 该 ID 与错误代码一起再次重复。 在本例中,0x12 表示不支持子函数。
(这个特定的 ECU 需要诊断会话控制命令的 ISO 142230 版本略有不同)。 这是同一个 ECU 成功建立会话。
IDH: 07, IDL: 26, Len: 08, Data: 02 10 85 00 00 00 00 00
IDH: 07, IDL: 2E, Len: 08, Data: 02 50 85 00 00 00 00 00

安全访问:
为了执行许多敏感的诊断操作,有必要向 ECU 进行身份验证。 这是通过安全访问服务完成的。 可能有多个
级别的访问。 第一个请求向 ECU 请求加密种子。 ECU 和发送方有一个共享的加密函数和密钥,当给出一个种子
时,它将输出一个响应。 然后发送方发送计算结果回来证明它有钥匙。
例子:
IDH: 07, IDL: 26, Len: 08, Data: 02 27 01 00 00 00 00 00 (发送端发送)
IDH: 07, IDL: 2E, Len: 08, Data: 05 67 01 54 61 B6 00 00 (ECU 返回操作种子)
IDH: 07, IDL: 26, Len: 08, Data: 05 27 02 D0 B6 F1 00 00 (发送端将种子经过算法
计算后返回 ECU)
IDH: 07, IDL: 2E, Len: 08, Data: 02 67 02 00 00 00 00 00 (ECU 确定计算结
果无误,返回正确指令)
经过一些计算后,发送方返回操作种子的结果 D0 B6 F1”。 由于这是正确的值,ECU 以无错误响应响应。

输入输出控制:
这是一种测试特性,允许授权工具控制或监控 ECU 的外部输入。例如,可以告诉 ECU 假装它正在接收某些传
感器值,以便机制能够判断出某些内容是否存在传感器出问题了。 发送到 ECU 的实际值完全依赖于和 ECU 是专
有的下面是一个例子。
IDH: 07, IDL: E0, Len: 08, Data: 06 2F 03 07 03 00 00 00
IDH: 07, IDL: E8, Len: 08, Data: 06 6F 03 07 03 36 90 00

由本地设备发出的输入输入控制
IDH: 07, IDL: 81, Len: 08, Data: 04 30 01 00 01 00 00 00
IDH: 07, IDL: 89, Len: 08, Data: 02 70 01 00 00 00 00 00
这些类型的诊断测试对安全性非常有用研究人员可以验证汽车的某些功能。 下面是一个例子:
在上面的例子中,服务工具告诉正在监听 0781 的 ECU 有 04 字节的数据,并且请求是一个有标识符为 30 的设备
对输入输出系统的请求。接下来的 3 个字节的数据(01 00 01)被用作控制。

常规控制
这个服务类似于 ECU 中的 RPC 服务。它允许用户让 ECU 执行一些预先编程的程序。举个例子。
IDH: 07, IDL: E0, Len: 08, Data: 10 0C 31 01 FF 00 00 01 ,TS: 513745
IDH: 07, IDL: E8, Len: 08, Data: 30 00 00 00 00 00 00 00 ,TS: 513754
IDH: 07, IDL: E0, Len: 08, Data: 21 00 00 00 07 00 00 00 ,TS: 513760
IDH: 07, IDL: E8, Len: 08, Data: 03 7F 31 78 00 00 00 00 ,TS: 513769
IDH: 07, IDL: E8, Len: 08, Data: 03 7F 31 78 00 00 00 00 ,TS: 545021
IDH: 07, IDL: E8, Len: 08, Data: 05 71 01 FF 00 10 00 00 ,TS: 570007

请求下载
这些转储或上传数据到/从 ECU。 让我们考虑请求下载,将数据放在 ECU 上(上传/下载是从 ECU 的角度)。

You might also like