Linux 2.6 on imx:无法使用candump

时间:2016-10-11 17:27:43

标签: linux can-bus socketcan canutils

我有一个在imx CPU上运行的自定义构建linux 2.6。与外部节点的CAN通信就像魅力一样,但是当我使用" candump can0"时,我从我的应用程序发送到节点的帧不打印。在终端(当我使用USB-CAN加密狗在我的主机上运行相同的应用程序时,不会发生此问题。)

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

我知道发送的邮件可能会很方便,但我应该可以选择。

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

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

  

abort br_propseg dump_rx_mb loopback state   唤醒bcc br_pseg1 dump_xmit_mb maxmb   std_msg xmit_maxmb比特率br_pseg2
  ext_msg模态子系统boff_rec br_rjw   fifo power tsyn br_clksrc驱动程序   听smp uevent br_presdiv
  dump_reg local_priority srx_dis wak_src

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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