FlexCAN CAN 控制器驱动¶
作者:Marc Kleine-Budde <mkl@pengutronix.de>, Dario Binacchi <dario.binacchi@amarulasolutions.com>
RTR 帧接收的开启/关闭¶
对于大多数 FlexCAN IP 核,该驱动支持两种 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