Linux imx 上的 2.6:无法使用 candump 记录发送的 CAN 帧

Linux 2.6 on imx: Can't log sent CAN frames using candump

我在 imx CPU 上有一个自定义版本 linux 2.6 运行ning。 CAN 与外部节点的通信就像一个魅力,但是当我在终端中使用 "candump can0" 时,我从我的应用程序发送到节点的帧没有打印(当我 运行 我的主机上的同一个应用程序使用usb-CAN dongle不会出现这个问题。

发送扩展 CAN 帧时,它们会使用 candump 显示。

我知道过滤发送的消息可能很方便,但我应该可以选择。

欢迎提供任何线索。我认为这可能是驱动程序中的一些过滤导致的。

FLexCAN 驱动程序具有以下配置文件:

abort br_propseg dump_rx_mb loopback state wakeup bcc br_pseg1 dump_xmit_mb maxmb std_msg xmit_maxmb bitrate br_pseg2
ext_msg modals subsystem boff_rec br_rjw fifo power tsyn br_clksrc driver listen smp uevent br_presdiv
dump_reg local_priority srx_dis wak_src

can-utils 包需要 SocketCAN,它已集成到标准内核 2.6.30 中。

如果您使用的是 SocketCAN,您应该能够打开环回以接收从您的接口传输的消息(并且它们必须实际上是通过线路传输到通过环回接收)。

来自bash:

ifconfig can0 down
ip link set can0 type can loopback on
ifconfig can0 up
candump can0|grep C0FFEE

在另一个终端:

cansend can0 00C0FFEE#00112233445566

好吧,这个问题我遇到过很多次了,最后放弃了。但知道我偶然发现了解决方案:

FlexCAN 文件夹中名为 srx_dis 的设置文件控制此行为。 因此,如果您希望能够读取您在 imx53_loco 上发送的 CAN 帧,请执行以下操作:

ifconfig can0 down
echo 0 > /sys/bus/platform/devices/FlexCAN.0/srx_dis
ifconfig can0 up

我想这样做的原因是为了在同一设备上创建一个可以记录所有 CAN 帧的服务工具。