2016-10-11 115 views
0

我有一个自定义编译Linux 2.6在imx CPU上运行。与外部节点的CAN通信就像一个魅力,但在终端中使用“candump can0”时,我从我的应用程序发送到节点的帧不会打印(当我使用usb-CAN适配器在我的主机上运行相同的应用程序时这个问题不会发生)。imx上的Linux 2.6:不能使用candump记录发送的CAN帧

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

我明白,发送的邮件可能会过滤方便,但我应该可以选择。

欢迎任何线索。我在想,这可能是驱动程序导致此问题的一些过滤。

的个FlexCAN驱动程序有以下配置文件:

中止br_propseg dump_rx_mb环回状态 唤醒BCC br_pseg1 dump_xmit_mb maxmb std_msg xmit_maxmb比特率br_pseg2
ext_msg模态boff_rec br_rjw FIFO功率TSYN br_clksrc驱动子系统 听smp uevent br_presdiv
dump_reg local_priority srx_dis wak_src

回答

0

好吧,我一直在这个问题很多次,但放弃了。但是我知道我偶然发现了这个解决方案:

FlexCAN文件夹中名为srx_dis的设置文件控制着这种行为。 所以,如果你希望能够读取你的imx53_loco发送CAN帧,请执行下列操作:

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

我想这样做是相同的装置,它可以创建一个服务工具的​​原因记录所有CAN帧。

0

can-utils包需要SocketCAN,它已经集成到股票内核2.6.30中。

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

从庆典:

而在另一端:

cansend can0 00C0FFEE#00112233445566 
+0

使用的是FlexCAN。我试过了你的建议,但是这个命令没有被识别,所以我没有使用“echo 1> /sys/bus/platform/devices/FlexCAN.0/loopback”。结果是接收消息停止工作。我发现了一件奇怪的事情:如果我发送一个类似123#R的远程请求帧,那么这个信息就会被打印出来。 –