can-utils-CAN 网络配置测试分析开源工具
·
1.can-utils 是什么
1.1 can-utils是什么
- can-utils 是一组基于 SocketCAN 提供的 API 开发的用户空间工具集。这些工具用于配置、测试、调试和分析 CAN 网络。
- SocketCAN 是大众汽车研究院为 Linux 内核贡献的一组开源 CAN 驱动程序和网络堆栈。 SocketCAN 以前称为低级 CAN 框架 (LLCF)。

1.2 功能
| 功能 | 说明1 | 说明2 | 备注 |
|---|---|---|---|
| candump | display, filter and log CAN data to files | 显示、过滤 CAN 数据并将其记录到文件 | |
| canplayer | replay CAN logfiles | 重放 CAN 日志文件 | |
| cansend | send a single frame | 发送单帧 | |
| cangen | generate (random) CAN traffic | 生成(随机)CAN 流量 | |
| cansequence | send and check sequence of CAN frames with incrementing payloa | 发送并检查具有递增有效负载的 CAN 帧序列 | |
| cansniffer | display CAN data content differences | 显示CAN数据内容差异 |
2. can-utils安装及环境
2.1 加载 vcan 模块并创建虚拟 CAN 网络接口
- 使用虚拟 CAN 接口,开发人员可以在灵活和控制的环境中进行 CAN 网络相关的工作,而无需依赖物理 CAN 硬件。
2.1.1 加载 vcan 模块
- 用 modprobe 命令加载 vcan 内核模块
- virtual CAN module
sudo modprobe vcan
2.1.2 创建虚拟 CAN 接口
- 使用 ip link 命令创建一个名为 vcan0 的虚拟 CAN 接口
sudo ip link add dev vcan0 type vcan
2.1.3启动虚拟 CAN 接口
- 启用刚才创建的虚拟 CAN 接口
sudo ip link set up vcan0
2.1.4 验证接口
- 使用 ip link 或 ifconfig 命令验证虚拟 CAN 接口是否已经成功创建并启用。
ifconfig vcan0
vcan0: flags=193<UP,RUNNING,NOARP> mtu 72
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.2 Installing the can-utils
apt-get install can-utils
3 实操
3.1 candump
- display, filter and log CAN data to files
- 显示、过滤 CAN 数据并将其记录到文件
// 显示van0信息
candump vcan0
// 生成(随机)CAN 流量,使用这命令做can的模糊测试非常棒
cangen vcan0
candump vcan0
//接口名称 CANID 数据长度 数据字段
vcan0 106 [4] 18 E0 1E 3F
vcan0 7FA [8] EC 26 5A 09 AC C8 DC 33
vcan0 280 [8] 61 19 A3 79 03 9C B9 18
vcan0 659 [8] 89 1B DA 1F 7D 1D 0A 42
vcan0 142 [1] 62
vcan0 23B [0]
vcan0 0B6 [8] EE EB 0D 5B 88 9E 01 1B
vcan0 1A4 [8] 03 EE 8D 1A AB 6A 58 29
vcan0 311 [8] 38 A1 DE 59 0B 43 D8 0E
vcan0 486 [5] B8 0B B5 42 06
vcan0 41E [8] 09 43 58 64 78 22 FC 15
vcan0 2B3 [2] F5 3F
vcan0 093 [7] 30 77 30 7F CF 32 FD
vcan0 4E8 [5] 9B C2 6B 2C 9E
vcan0 3A0 [8] 26 A4 47 43 45 6D 64 29

- 将数据存放在log中
candump vcan0 -l
Disabled standard output while logging.
Enabling Logfile 'candump-2024-06-01_215341.log'

cat candump-2024-06-01_215341.log
(1717293255.724593) vcan0 59D#6EF45433115D697E
(1717293255.925647) vcan0 1EF#D659
(1717293256.126818) vcan0 1DD#C21F69424C8C
(1717293256.327777) vcan0 5E5#2465C5529680FC41
(1717293256.528429) vcan0 0DA#316850
(1717293256.728914) vcan0 141#50B975772DF59D50
(1717293256.929439) vcan0 021#2746
(1717293257.129869) vcan0 5DF#CE7B525B7CBB
3.2 cangen
- cangen 是 can-utils 工具集中的一个命令行工具,用于在 CAN(Controller Area Network)网络上生成并发送随机或特定模式的 CAN 数据帧。它主要用于测试和验证 CAN 总线的行为和性能。通过生成高负载或特定模式的数据帧,开发人员和工程师可以测试 CAN 网络的性能、稳定性和响应能力。
3.3 cansend
- 发送单帧
- cansend 是 can-utils 工具集中的一个命令行工具,用于向 CAN(Controller Area Network)网络发送 CAN 数据帧。它允许用户指定要发送的 CAN 帧的 ID 和数据内容,便于测试和调试 CAN 网络通信
- 使用方法
cansend <device> <can_frame>
- 发送
cansend vcan0 123#DEADBEEF
- 监听结果
candump vcan0
vcan0 123 [4] DE AD BE EF

3.4 cansniffer
- cansniffer 是 can-utils 工具集中的一个命令行工具,用于实时监控和显示 CAN(Controller Area Network)网络上的数据帧,并且能够突出显示数据变化。它特别适合在调试和分析 CAN 网络通信时使用,因为它不仅能捕获和显示 CAN 帧,还能帮助用户快速识别哪些数据在变化
- 使用方法
cansniffer vcan0

3.5 canplayer
- 重放 CAN 日志文件
- canplayer 是 can-utils 工具集中的一个命令行工具,用于从日志文件中读取并回放 CAN(Controller Area Network)数据帧。这个工具非常适用于在开发、测试和调试过程中重现特定的 CAN 总线活动,帮助验证系统行为和解决问题

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)