RAW CAN 套接字和广播管理器 CAN 套接字之间有什么区别以及如何使用它们?

Ale*_*son 2 linux can-bus socketcan

我是 CAN 协议的新手,我正在尝试通过 Linux 的 SocketCAN 使用它。然而,我对可用的 2 种不同的 CAN 套接字(RAW 和广播管理器 (BCM))感到困惑。

文档指出,BCM 套接字不适用于发送单独的 CAN 帧。直觉上我猜测 BCM 更适合单主多从配置,但这似乎有些错误。

BCM 的用途是什么?或者说,它们之间的功能有什么区别?在什么情况下我会选择使用广播管理器而不是原始套接字?

小智 5

我建议查看官方文档: https://www.kernel.org/doc/html/latest/networking/can.html

简而言之:

  • RAW套接字用于接收和发送CAN帧。
  • 当您想要将一些与 CAN 消息传递相关的任务卸载到 Linux 内核而不是手动实现时,BCM 套接字适用于特殊操作。

例如:您可以使用原始套接字和一些计时器从代码中定期发送消息。

或者,您可以通过适当的配置在 BCM 套接字上发送一条消息,然后 Linux 内核将定期为您发送 CAN 消息。要阻止此情况,请使用不同的配置再次在 BCM 套接字上发送消息。

BCM套接字还可以用于自动监控接收到的消息。在这种情况下,您指定期望接收每条消息的频率和数据掩码,将消息发送到 BCM 套接字以配置它,然后瞧。仅当触发接收预期消息的超时并且消息根据您提供的数据掩码更改内容时,您才能够从 BCM 套接字读取数据。