Linux周立功CAN驱动安装指导
- 安装
- 打开Linux终端,进入root模式
①非永久模式,在命令前加sudo前缀
②永久模式,在终端输入sudo su命令,再输入当前用户的密码,就可以以root身份登录到终端。
- 将sja1000.h复制到内核目录
#cd (zpcican中Makefile所在目录)
#cp sja1000.h /usr/src/your-kernel-source/drivers/net/can/sja1000/sja1000.h
注:your-kernel-source,为内核目录源,通过cat /proc/vesion指令查看内核版本信息,再在usr/src(通常)下寻找和版本对应的内核目录。例如:内核版本信息为Linux version 4.40-141-generic。。。。,则在usr/src下的linux-headers-4.4.0-141-generic即为your-kernel-source。以上仅适用于Ubantu系统,在其他Linux系统未测试。
- 编辑Makefile,将KDIR更改为您的内核目录
- 编译并加载zpcican.ko
#make
#insmod zpcican.ko
注:make完成后在zpcican文件夹下,可以看到生成zpcican.ko等文件
若加载模块失败(insmod zpcican.ko失败):
①若报找不到insmod zpcican.ko,使用指令cp -r zpcican.ko /usr/src/linux-headers
-4.4.0-141-generic,拷贝zpcican.ko到路径
②若报没找到模块,或缺乏(没找到)依赖项错误
# modinfo ./zpcican.kolgrep depend 查看依赖项名称, 结果是---->depends: 依赖项名称(sja1000)
# modprobe sja1000 加载依赖项
#inmod ./zpcican.ko 再加载zpcican.ko模块
③若报无法插入模块zpcican.ko:无效模块格式
应考虑,内核目录是否错误,重新查看内核版本,防止内核版本变更导致的错误
- 安装can-utils
#apt-get update
#apt-get install can-utils
注:apt-get update的时间比较久,耐心等待
- 检查硬件
#lspci -n
出现如下图结果:
- 检查设备节点
#ls / sys / class / net / can*
出现如下图结果:
- CAN接收发送测试
- 检测CAN是否连接
#ip link show can0
结果如下:
- 设置can波特率
# ip link set can0 type can bitrate 500000 triple-sampling on
或者:#ip link set can0 type can bitrate 500000
- 使能CAN接口
#ip link set can0 up
或者:#ifconfig can0 up
- CAN接收测试
①用一转多,一头接待测试板卡CAN0,另一头接CAN-E-U卡,CAN-E-U接笔记本电脑,笔记本电脑端打开cantest,设置与CAN0相同的波特率,ID422,每次发送10帧,如下图所示;
②终端输入#candump can0指令,进入等待接收模式,此时点击cantest发送按钮,在终端可以观察到如下结果:
- CAN发送测试
在另一个终端输入#cangen can0 -g 4 -I 42A -L 1 -D i -v -v指令,可以在cantest观察到数据不停的接收。结果如下:
同时在终端也可以看到数据的发送:
- 当can总线不再被需要或重新配置can(波特率)时,请关闭can接口