链接:https://pan.baidu.com/s/1KsXjNR8P6Z-TCk9oO-vIEQ
提取码:669m
下载PCI-9820I CAN卡linux驱动源码zpcican_socket.rar,解压将文件夹复制到ubuntu工控机对应目录下
通过lspci –n检查硬件连接是否有问题,从下图可以看到10b5:9821(测试型号为PCI-9820I),表示连接正常
输入:sudo apt install pciutils
修改makefile文件中KDIR参数,根据实际的kernel-source目录填写。
测试电脑实际内核头文件目录为/usr/src/linux-headers-4.15.0-112-generic,
所以将驱动源码中Makefile的KDIR修改为/usr/src/linux-headers-4.15.0-112-generic
然后执行make(终端输入 make),即可得到zpcican.ko
4.1复制驱动
将zpcican.ko复制到/lib/modules/ 目录下(在zpcican.ko所在的目录下 右键终端,输入sudo cp zpcican.ko /lib/modules)
在zpcican_socket_JN_2022_05_15目录下执行如下指令:
sudo cp -pv ./zpcican.ko /lib/modules/4.15.0-112-generic/
提示输入密码
4.2 生成驱动依赖文件
通过生成依赖文件可以保证系统启动时自动加载zpcican驱动
先进入/lib/modules/4.15.0-45-generic/目录
cd /lib/modules/4.15.0-45-generic/
然后执行指令depmod,生成驱动模块依赖关系文件
sudo depmod
提示输入密码
4.3 加载驱动模块
仍然在/lib/modules/4.15.0-45-generic/目录,输入如下指令:
sudo modprobe sja1000
sudo modprobe zpcican
检查驱动是否安装成功,如果显示对应CAN通道,表示安装成功:
ls /sys/class/net/
显示can0,can1表示驱动安装成功
理论上说不需要的,但是发现有些电脑开机后,输入ifconfig指令发现can卡没有起来,对于这种情况,一般是生成驱动依赖没有正常完成,折中的解决办法是加入开机启动脚本,Ubuntu系统的开机启动脚本是/etc/目录下的rc.local文件,赋予文件rwx权限
sudo chmod 777 /etc/rc.local
然后往里面增加can口的配置和启动can口的指令,指令为zp开头的驱动文件夹下的readme.txt下的四句话,
打开readme.txt,最后的四行看到第一和第二行出现bitrate,第三和第四行出现can0 up和can1 up的就是,把#去掉,前两句是配置波特率,后两句是启动can口up,记得手动改下波特率500000(也就是500k),重启后输入ifconfig,如果出现了can0和can1那就是成功了。
敲入以下指令:
sudo vim /etc/rc.local
进入到下面的界面,将下面图片中exit 0 移动到最末尾行
按“i”进入编辑模式,用键盘上下左右键控制,移动完成后
按“esc”–>”:”–>”wq”保存并退出,再输入ifconfig就可以看到can0和can1了