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 总线活动,帮助验证系统行为和解决问题

在这里插入图片描述

Logo

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

更多推荐