Skip to content

SocketCAN 基本调试方法

KH-UCANFD_Linux_SDK

推荐使用 KH-UCANFD_Linux_SDK 驱动包,专为鲲弘 CAN FD 系列硬件产品设计,提供基于 SocketCAN 标准的深度优化 Linux 驱动及工具,充分释放设备的吞吐能力并降低 CPU 开销。

SDK 驱动包提供了一系列工具和库,方便用户快速上手和开发,例如:多通道压力测试脚本、kcan_monitor 监视器。

详情链接:https://gitee.com/ChengDu-KunHong/KH-UCANFD_Linux_SDK

调试技巧

关于 SocketCAN 的入门教程,在 SDK 链接中已经有详细的介绍了,

这里针对实际使用技巧做一些补充。

CAN FD

使用 SocketCAN 时,掌握以下几个简单操作,能够帮助你进行 CAN FD 的调试。

1. 开启 CAN FD 模式

SocketCAN 中 FD 模式的开启,需要在开启通道前进行配置,通道开启后无法进行配置。

bash
# 配置 can0 波特率为 1M/5M 并开启 FD 模式
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up

2. 发送 CAN 帧

bash
# 发送标准帧:ID=0x123,数据=11223344
cansend can0 123#11223344

# 发送 CAN FD 帧
cansend can0 123##111223344

3. 监听 CAN 帧

运行candump时带上-x参数,可以显示帧类型,这能够极大帮助我们调试通讯。

bash
# 显示帧类型
candump -x can0

更多命令选项

选项说明
-t <type>时间戳格式: • a - 绝对时间 • d - 相对时间 • z - 零时间 • A - 带日期的绝对时间
-H读取硬件时间戳而非系统时间戳
-c增加颜色模式级别
-i二进制输出(可能超过每行 80 字符)
-a启用额外的ASCII输出
-S交换打印CAN数据[]中的字节顺序(用'`'标记)
-l将CAN帧记录到文件(默认设置 -s 2
-f <fname>将CAN帧记录到指定文件(默认设置 -s 2
-L在标准输出上使用日志文件格式
-n <count>接收指定数量的CAN帧后终止
-r <size>设置套接字接收缓冲区大小
-D如果检测到的CAN设备宕机,不退出程序
-d监控丢弃的CAN帧
-e以可读格式转储CAN错误帧
-8在{}中显示经典CAN的原始DLC值
-x打印额外消息信息(rx/tx brs esi)
-T <msecs>如果在指定毫秒内未收到帧,则终止

TEST:

  • 按照以上命令开启candump
  • 使用cansend发送标准can和canfd帧
  • cundump显示如下

通过测试可以得出CAN 2.0和CAN FD帧在candump +x显示的差异

  • CAN FD 帧 显示数据类型为**"B"**为 FD 带 BRS 类型,而CAN 2.0帧没有
  • CAN FD帧的DLC(数据长度)因为预留了两位数的长度,显示为"[04]",与CAN 2.0帧显示不同。

kcan_monitor

kcan_monitor 是 KH-UCANFD_Linux_SDK 提供的监测工具,能够一键查看所有 CAN 通道关键状态,告别查询各个通道状态的繁琐过程,极大优化用户在调试过程中的体验。

monitor

驱动智能连接,赋能科技未来