RAW CAN套接字和Broadcast Manager CAN套接字有什么区别,如何使用它们?

问题描述 投票:0回答:1

我是一个CAN协议的新手,我正试图通过Linux的SocketCAN来使用它。然而,我对两种不同的CAN套接字,RAW和Broadcast Manager (BCM)感到困惑。

文档中说BCM套接字不是用来发送单个CAN帧的。直觉上我猜测BCM更多的是用于单主多从的配置,但这似乎有些错误。

BCM的用途是什么?或者说,它们在功能上有什么不同?在什么样的情况下,我选择使用Broadcast Manager而不是Raw Sockets?

linux can-bus socketcan
1个回答
0
投票

我建议查看官方文档。https:/www.kernel.orgdochtmllatestnetworkingcan.html

简而言之,RAW插座是用来接收和发送CAN帧的。

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

例如,你可以从你的计算机上定期发送消息。你可以使用RAW socket和一些定时器定期从你的代码中发送消息。

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

BCM套接字也可以用来自动监控收到的消息。在这种情况下,你需要指定每条报文的接收频率和数据掩码,然后发送一条消息到BCM套接字上进行配置,这样就可以了。只有当接收预期消息的超时时间被触发时,以及当消息根据您提供的数据掩码改变了内容时,您才可以从BCM套接字读取消息。

© www.soinside.com 2019 - 2024. All rights reserved.