Flexcan CAN 控制器驱动

作者:Marc Kleine-Budde <mkl@pengutronix.de>, Dario Binacchi <dario.binacchi@amarulasolutions.com>

RTR 帧接收的开启/关闭

对于大多数 flexcan IP 核,驱动程序支持 2 种 RX 模式

  • FIFO

  • 邮箱

较旧的 flexcan 核(集成到 i.MX25、i.MX28、i.MX35 和 i.MX53 SOC 中)仅当控制器配置为 RX-FIFO 模式时才接收 RTR 帧。

RX FIFO 模式使用深度为 6 个 CAN 帧的硬件 FIFO,而邮箱模式使用深度高达 62 个 CAN 帧的软件 FIFO。借助更大的缓冲区,邮箱模式在高系统负载情况下表现更好。

由于接收 RTR 帧是 CAN 标准的一部分,因此所有 flexcan 核都以可以接收 RTR 的模式启动。

使用 “rx-rtr” 私有标志可以放弃接收 RTR 帧的能力,但代价是失去接收 RTR 消息的能力。这种权衡在某些用例中是有益的。

“rx-rtr” 开

接收 RTR 帧。(默认)

CAN 控制器可以并且将会接收 RTR 帧。

在某些 IP 核上,控制器无法在性能更高的 “RX 邮箱” 模式下接收 RTR 帧,而将改用 “RX FIFO” 模式。

“rx-rtr” 关

放弃接收 RTR 帧的能力。(并非所有 IP 核都支持)

此模式激活 “RX 邮箱模式” 以获得更好的性能,在某些 IP 核上不再接收 RTR 帧。

只有在接口关闭时才能更改设置

ip link set dev can0 down
ethtool --set-priv-flags can0 rx-rtr {off|on}
ip link set dev can0 up