Linux(4)USB CAN调试笔记

简介: Linux(4)USB CAN调试笔记

内核支持:

默认情况下can在kernel driver没有被打开 ifconfig -a也拿不到can0的设备节点 , 需要改kernel的defconfig文件。

CONFIG_CAN_SLCAN=y
CONFIG_CAN_DEV=y
CONFIG_CAN_EMS_USB=y
CONFIG_CAN_ESD_USB2=y
CONFIG_CAN_8DEV_USB=y
CONFIG_CAN_PEAK_USB=y
CONFIG_CAN=y
CONFIG_CAN_GS_USB=y #这个必须,dmesg打印出就是gs usb

CAN常用命令:

对常用的CAN 调试终端命令记录简要记录:

ip link set canX down         //关闭can设备;
ip link set canX up           //开启can设备;
ip -details link show canX         //显示can设备详细信息;
candump canX              //接收can总线发来数据;
ifconfig canX down             //关闭can设备,以便配置;
ip link set canX up type can bitrate 250000 //设置can波特率
conconfig canX bitrate + 波特率;
canconfig canX start         //启动can设备; 
canconfig canX ctrlmode loopback on //回环测试;
canconfig canX restart         // 重启can设备;
canconfig canX stop         //停止can设备;
canecho canX             //查看can设备总线状态;
cansend canX --identifier=ID+数据     //发送数据;
candump canX --filter=ID:mask    //使用滤波器接收ID匹配的数据

应用举例:

ip link set can0 type can bitrate 250000        //在收发端设置比特率为250Kbps
ip link set can0 up                                //在收发端打开can0设备
candump can0                                     //在接收端执行candump,阻塞等待报文
cansend can0 123#1122334455667788                 //在发送端执行cansend,发送报文

总线分析仪睿紫版CA105/CA105G资料(仅支持Linux):

SocketCAN 是 Linux 的 CAN 驱动程序和网络工具的集合。它允许以与其他网络设备类似的方式与 CAN总线设备连接和通讯。

1、SocketCAN设备的基本操作。

(1)查看CAN设备

在命令终端中输入:

ifconfig -a

得到如下结果

can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP RUNNING NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
can1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          NOARP  MTU:16  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:10 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
eth0      Link encap:Ethernet  HWaddr 0a:6d:fe:63:f9:05  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:1455 (1.4 KB)
          Interrupt:24 
 
eth1      Link encap:Ethernet  HWaddr e2:97:09:7b:42:2c  
          inet addr:192.168.1.179  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::5771:d375:5f9:ee6c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2758 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:195456 (195.4 KB)  TX bytes:6030 (6.0 KB)
 
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:170 errors:0 dropped:0 overruns:0 frame:0
          TX packets:170 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:13064 (13.0 KB)  TX bytes:13064 (13.0 KB)

(2)设置 can 设备的波特率

在命令终端中输入:(以下命令将 can0 设备的波特率设定为 500000 bps)

sudo ip link set can0 type can bitrate 500000

(3)启动 can 设备

在命令终端中输入:

sudo ip link set can0 up

(4)关闭 can 设备

在命令终端中输入:

sudo ip link set can0 down

2、SocketCAN工具can-utils使用:

can-utils是linux下操作socketcan的一个实用工具集,包含多个收发can的小工具,如candump,cansend 等。

(1)安装can-utils

通过在命令终端中输入以下命令来安装can-utils:

1. sudo apt update # rk3399上必须执行 ,不然找不到下面这个包
2. sudo apt-get install can-utils

(2)candump

candump can0

candump 还可以对接收到的can 信息进行过滤。详细请输入candump -h 命令进行查看。

(3)cansend

cansend 可以将单个CAN 帧发送到总线上。需要设置设备名,CAN ID和要发送的数据字节。

例如:

cansend can0 123#1122334455667788

此条指令将在接口can0 上发送一条消息,CAN ID为0x123,数据字节为[0x11、0x22、0x33、

0x44、0x55、0x66、0x77、0x88]。请注意,can-utils工具默认数据为十六进制。

(4)cangen

cangen可以生成随机的CAN数据,这对于测试很有用。有关更多的用法信息,请在命令终端中输入:

cangen -h

(5)cansniffer

cansniffer 可以显示总线上接收到的 CAN 消息,而且可以过滤掉数据不变的帧。这对于逆向工程 CAN总线系统非常有用。有关更多信息,请在命令终端中输入:

cansniffer -h


相关文章
|
1月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
112 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
7天前
|
缓存 NoSQL Linux
Linux调试
本文介绍了Linux调试、性能分析和追踪的培训资料,涵盖调试、性能分析和追踪的基础知识及常用工具。
148 6
Linux调试
|
29天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
81 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
3月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
85 2
linux笔记 diff及patch的制作与使用
|
3月前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
62 10
|
3月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
3月前
|
Ubuntu Linux
内核实验(四):Qemu调试Linux内核,实现NFS挂载
本文介绍了在Qemu虚拟机中配置NFS挂载的过程,包括服务端的NFS服务器安装、配置和启动,客户端的DHCP脚本添加和开机脚本修改,以及在Qemu中挂载NFS、测试连通性和解决挂载失败的方法。
186 0
内核实验(四):Qemu调试Linux内核,实现NFS挂载
|
3月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
3月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
3月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解