我正在编写一个 CAN 驱动程序并想为它设置一些测试。我有一个简单的回显程序(接受一个罐头框架并将其回显)。我正在使用can-utils
它,并将用于cangen
生成随机数据,记录它,然后确保接收到帧并回显。
一切似乎都在工作,但 candump 有一些令人讨厌的行为。发送非 FD 帧时,它不会为 DLC 打印前导零。请参阅此处(发送消息,然后回显消息 - 是的,我知道它不应该使用相同的节点 ID 回显,这仅用于测试目的):
candump can0
#can FD frames (11 and 29 bit ids)
can0 033FABCD [04] DE AD BE EF #sent
can0 033FABCD [04] DE AD BE EF #echoed
can0 277 [04] DE AD BE EF
can0 277 [04] DE AD BE EF
#non-FD frames sent (11 and 29 bit ids)
can0 277 [4] DE AD BE EF #sent
can0 277 [04] DE AD BE EF #echoed
can0 077AFFFF [4] DE AD BE EF
can0 077AFFFF [04] DE AD BE EF
FD 和非 FD 帧都有一个 4 位 DLC,所以我不确定为什么它会以不同的方式打印。我们只发送 FD,因此回显帧采用 FD 格式并打印前导零。
显然我可以解决这个问题,但这种行为有点烦人。有谁知道这里可能出了什么问题?