candump如何显示发送、接收和时间戳

问题描述 投票:0回答:4

如标题所说,我使用命令

candump can0 can1
来观察CAN总线上的帧,但无法区分哪些帧是接收的,哪些是发送的。

有时我需要接收帧的时间戳来分析问题。

我不知道candump是否支持这些。

candump screenshot

can-bus socketcan
4个回答
2
投票

正如评论中所说,CAN 协议不跟踪发送者/接收者。标识消息的唯一数据是消息 ID。在公共CAN网络中,每个设备都被分配特定的ID用于传输和接收。您需要了解 CAN 网络定义(或 CAN 矩阵)才能正确理解 CAN 总线的内容。

定义通常存储在 .dbc 文件中,这是许多工具支持的专有文件格式。这些文件描述了如何解释 CAN 消息,还列出了网络中的节点以及每个节点的消息 ID。汽车制造商通常不会共享这些定义文件。一些大制造商甚至不会与开发车内ECU的合作伙伴分享它们......(我在这里谈论经验)

请注意,CAN 层之上的一些协议在消息 ID 中编码源/目标地址(通常仅通过具有 29 位 ID 的扩展 CAN 帧)。 J1939 和 ISO-15765-3(与 UDS 一起使用)等协议可以做到这一点。


2
投票

这个话题已经很久没有更新了。但也许它对某人有帮助。

您可以使用此网站上所示的选项显示时间戳:

-ta : absolute
-td : delta
-tz : zero
-tA : Absolute with date

因此,对于您的问题,您可以使用:

candump -ta can0 can1

2
投票

-x 参数打印额外的消息信息,rx/tx brs esi

例如candump -ta -x -c -c can0 can1

欲了解更多详情: 可以转储-h


0
投票

要获取包含 tx/rx 信息的 candump,请尝试以下命令 -> candump -x 任意 上面将打印 tx 和 rx 详细信息

© www.soinside.com 2019 - 2024. All rights reserved.