4

我使用 SocketCAN 尤其是 Virtual CAN vcan 已经有一段时间了。但是,到目前为止,我从未使用过 CAN FD(灵活数据速率)。

好吧,我今天早上使用 can-utils 进行了尝试:

cansend vcan0 123##122

但是,我得到了响应“CAN 接口不支持 CAN FD”。vcan 接口已使用以下终端命令创建:

ip link add dev vcan0 type vcan
ip link set up vcan0

有人知道 vcan 是否支持 CAN FD 吗?如果是,如何设置支持 CAN FD 的 vcan 接口?

系统配置:VirtualBox 上的 Ubuntu 14.04.1。

提前致谢, MAW

4

2 回答 2

6

我的一位同事找到了解决方案:

ip link add dev vcan0 type vcan
ip link set vcan0 mtu 72

选项“mtu 72”为 CAN FD 设置正确的最大传输大小。之后 vcan 接受 CAN FD 消息。

MAW

于 2016-04-13T06:25:56.610 回答
3

很棒的发现,MAW!

它是一种魅力。这是我按照您的建议所做的。请注意,命令是通用的,并且有一个我不想进入的环境准备!

要在 Linux 内核下设置 socketCAN 框架(我使用的是 4.17.2),请以 root 身份:

lsmod | grep can
modprobe can
modprobe can_raw
modprobe can-bcm
modprobe can-dev
modprobe can-gw
modprobe vcan
lsmod | grep can

要设置 socketCAN-Fd 框架,应执行以下操作(也以 root 身份):

ip link add dev vcan0 type vcan
ip link set vcan0 mtu 72
ip link set dev vcan0 up
ifconfig

测试 socketCAN-Fd 框架需要 can-utils 包。此外,还需要以下内容: https ://github.com/mguentner/cannelloni

而且,一切都像瑞士时钟一样工作!:-)

在 xmit 方面: cangen -f vcan0 -v vcan0

2C3##0.25.5A.FF.1E.DC.BD.CB.42.25.5A.FF.1E.DC.BD.CB.42.25.5A.FF.1E.DC.BD.CB.42.25.5A.FF .1E.DC.BD.CB.42.25.5A.FF.1E.DC.BD.CB.42.25.5A.FF.1E.DC.BD.CB.42.25.5A.FF.1E.DC.BD.CB .42.25.5A.FF.1E.DC.BD.CB.42

在接收端:candump vcan0

vcan0 2C3 [64] 25 5A FF 1E DC BD CB 42 25 5A FF 1E DC BD CB 42 25 5A FF 1E DC BD CB 42 25 5A FF 1E DC BD CB 42 25 5A FF 1E DC BD CB 42 25 5A FF 1E DC BD CB 42 25 5A FF 1E 直流 BD CB 42 25 5A FF 1E 直流 BD CB 42

完美的!太感谢了!

没有人

于 2018-07-17T08:10:06.573 回答