gpt4 book ai didi

linux-device-driver - 检测socketCAN linux驱动下的CAN总线错误

转载 作者:行者123 更新时间:2023-12-04 15:54:13 25 4
gpt4 key购买 nike

我们的产品在 Ubuntu 14.04 LTS 下运行的基于 Beaglebone Black 的嵌入式系统上使用众所周知的 CANopen 堆栈,该堆栈使用 socketCAN。但出于某种原因,即使我们使用的堆栈会检测 CAN 总线何时进入 PASSIVE 状态甚至 BUS OFF 状态,它也不会指示 CAN 总线何时从错误中恢复并退出 PASSIVE 或警告状态, 并进入非错误状态。

如果我直接查询 socketCAN 驱动程序(通过 ioctl 调用),我是否能够检测到 CAN 总线何时进入和退出警告状态(少于 127 个错误),进入和退出警告状态? PASSIVE 状态(大于 127 个错误)或 BUS OFF(大于 255 个错误)?

我想知道这样做是否会浪费我的时间,或者是否有更好的方法来准确、实时地检测 CAN 总线的所有状况?

最佳答案

对于这个问题,我只有部分解决方案。当您使用 socketCAN 时,该接口(interface)被视为标准网络接口(interface),我们可以在其上查询状态。基于How to check Ethernet in Linux? (将“eth0”换成“can0”),可以查看链接状态。这不是实时的,但可以在周期性线程中执行以检查总线状态。

关于linux-device-driver - 检测socketCAN linux驱动下的CAN总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52613468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com