RAW CAN 套接字和 Broadcast Manager CAN 套接字有什么区别以及如何使用它们?
What's the difference between RAW CAN sockets and Broadcast Manager CAN sockets and how to use them?
我是 CAN 协议的新手,我正尝试通过 Linux 的 SocketCAN 使用它。
但是,我对可用的 2 个不同 CAN 套接字感到困惑,RAW 和广播管理器 (BCM)。
文档指出 BCM 套接字不适用于发送单个 CAN 帧。直觉上我猜测 BCM 更适合单主多从配置,但这似乎有些不对。
BCM 的用途是什么?
或者更确切地说,它们之间在功能方面有什么区别?在什么样的情况下我应该选择使用 Broadcast Manager 而不是 Raw Sockets?
我建议查看官方文档:
https://www.kernel.org/doc/html/latest/networking/can.html
简而言之:
- RAW 套接字用于接收和发送 CAN 帧。
- 当您想将与 CAN 消息传递相关的某些任务卸载到 Linux 内核而不是手动执行时,BCM 套接字用于特殊操作。
例如:您可以使用 RAW 套接字和一些计时器从代码中定期发送消息。
或者您可以通过适当的配置在 BCM 套接字上发送一条消息,然后 Linux 内核将定期为您发送 CAN 消息。要停止这种情况,您可以使用不同的配置再次在 BCM 套接字上发送消息。
BCM套接字也可用于自动监听接收到的消息。在这种情况下,您指定了您希望接收每条消息的频率和数据掩码,将消息发送到 BCM 套接字以配置它,瞧。只有当接收预期消息的超时被触发并且消息根据您提供的数据掩码更改内容时,您才能从 BCM 套接字读取。
我是 CAN 协议的新手,我正尝试通过 Linux 的 SocketCAN 使用它。 但是,我对可用的 2 个不同 CAN 套接字感到困惑,RAW 和广播管理器 (BCM)。
文档指出 BCM 套接字不适用于发送单个 CAN 帧。直觉上我猜测 BCM 更适合单主多从配置,但这似乎有些不对。
BCM 的用途是什么? 或者更确切地说,它们之间在功能方面有什么区别?在什么样的情况下我应该选择使用 Broadcast Manager 而不是 Raw Sockets?
我建议查看官方文档: https://www.kernel.org/doc/html/latest/networking/can.html
简而言之:
- RAW 套接字用于接收和发送 CAN 帧。
- 当您想将与 CAN 消息传递相关的某些任务卸载到 Linux 内核而不是手动执行时,BCM 套接字用于特殊操作。
例如:您可以使用 RAW 套接字和一些计时器从代码中定期发送消息。
或者您可以通过适当的配置在 BCM 套接字上发送一条消息,然后 Linux 内核将定期为您发送 CAN 消息。要停止这种情况,您可以使用不同的配置再次在 BCM 套接字上发送消息。
BCM套接字也可用于自动监听接收到的消息。在这种情况下,您指定了您希望接收每条消息的频率和数据掩码,将消息发送到 BCM 套接字以配置它,瞧。只有当接收预期消息的超时被触发并且消息根据您提供的数据掩码更改内容时,您才能从 BCM 套接字读取。