首页 > 解决方案 > RAW CAN 套接字和广播管理器 CAN 套接字有什么区别以及如何使用它们?

问题描述

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

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

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

标签: linuxcan-bussocketcan

解决方案


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

简而言之:

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

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

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

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


推荐阅读