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