首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python- CAN : CAN总线上的故障注入可能吗?

Python- CAN : CAN总线上的故障注入可能吗?
EN

Stack Overflow用户
提问于 2020-11-20 16:39:25
回答 2查看 421关注 0票数 2

我目前正在为CAN节点做一些测试,在那里我使用python-can和Linux SocketCAN来发送和接收来自节点的CAN帧。

常规的发送和接收工作得很好,但现在我想注入错误,看看CAN节点的行为。

有没有人知道有没有可能做到这一点,例如通过改变帧的CRC。我已经进行了一次测试,其中我关闭了CAN接口,因此节点会关闭总线,但还有更多的CAN错误需要测试。

编辑:为了让思路清晰:我正在开发一个测试框架,使用pytest和python-can,为了定期发送CAN帧,我有以下代码:

代码语言:javascript
复制
import can
bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=250000)
msg = can.Message(arbitration_id=can_id,
                  data=data,
                  is_extended_id=False)
bus.send(msg)

对于我来说,它停止了,我可以为API读取的东西,这里没有故障注入的选项( Pyhon-can API )。

这是我今天的另一个例子:

代码语言:javascript
复制
import can
bus = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=250000)
msg = can.Message(arbitration_id=can_id,
                  data=data,
                  is_error_frame=True)
bus.send(msg)

上面的代码在总线上生成错误帧,这是我正在设计的故障处理测试的一部分。

EN

回答 2

Stack Overflow用户

发布于 2020-11-23 18:03:11

所以,我对这个库并不熟悉,但是this似乎是这个库中唯一公开CRC这个词的地方。

我担心可能没有一种原生的方法来做到这一点,但是也许你可以扩展这个库的类并覆盖CRC字段。

can.message的实现不会让你接触到CRC。但是,这是一个"meh“消息,因为当您第一次创建can.message()对象时,不会计算CRC。

socketcan.send()方法中的快速搜索也没有提到CRC,因此它可能是在两者之间的某个地方计算的。或者,我更担心的是,它是由一个外部库libc计算出来的,这个库再次在can.interfaces.socketcan类中被引用:

代码语言:javascript
复制
try:
    libc = ctypes.CDLL(ctypes.util.find_library("c"), use_errno=True)
    libc.bind.errcheck = check_status
    libc.connect.errcheck = check_status
    libc.sendto.errcheck = check_status
    libc.recvfrom.errcheck = check_status
except:
    log.warning("libc is unavailable")
    libc = None

如果是这样的话,你将很难解决CRC问题。我真心希望这给你指明了正确的方向,我对这个库的了解非常有限,我真的无法做更多的事情。

票数 0
EN

Stack Overflow用户

发布于 2020-12-03 17:46:54

我现在已经对此进行了更多的调查,并与我的CAN加密狗的硬件供应商进行了核实。似乎我想做的事情在软件方面是不可能的,我需要购买另一个可以支持这种错误注入的硬件加密狗。

硬件供应商还告诉我,这些类型的测试通常是由CAN控制器供应商完成的,所以(根据他的说法)这不是一个正常和简单的测试用例。

所以我现在离开这个话题,继续其他的测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64926237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档