正如标题所说,我使用命令candump can0 can1
观看CAN总线上的帧,但无法区分接收到哪些帧和发送了哪些帧。
有时我需要接收帧的时间戳来分析问题。
我不知道 candump 是否支持这些。
很久没有关于这个话题的更新了。但也许它可以帮助某人。
您可以使用本网站上显示的选项显示时间戳:
-ta : absolute
-td : delta
-tz : zero
-tA : Absolute with date
因此,对于您的问题,您可以使用:
candump -ta can0 can1
正如评论中所说,CAN 协议不跟踪发送者/接收者。唯一标识消息的数据是消息 ID。在普通 CAN 网络中,每个设备都分配有特定的 ID 用于传输和接收。您需要了解 CAN 网络定义(或 CAN 矩阵)才能正确理解 CAN 总线的内容。
该定义通常存储在 .dbc 文件中,这是许多工具支持的专有文件格式。这些文件描述了如何解释 CAN 消息,还列出了网络中的节点以及每个节点的消息 ID。汽车制造商通常不共享这些定义文件。一些大制造商甚至不会与他们的合作伙伴分享他们在车内开发ECU......(我在这里谈论经验)
请注意,CAN 层之上的一些协议在消息 ID 中编码源/目标地址(通常仅通过具有 29 位 ID 的扩展 CAN 帧)。J1939 和 ISO-15765-3(与 UDS 一起使用)等协议可以做到这一点。
-x 参数打印额外的消息信息,rx/tx brs esi
例如 candump -ta -x -c -c can0 can1
有关其他详细信息:candump -h