CAN-PCIe/402系列板卡Linux驱动软件安装快速入门
此快速入门目的是为让用户能快速了解CAN-PCIe/402系列板卡的Linux驱动软件安装流程。esd官方安装流程,请阅读Linux驱动软件包中的README文件。
【1】安装前的准备
- 下载CAN-PCIe/402系列板卡的Linux驱动软件。
- Linux版本
在下载中心可以下载Linux驱动软件包。在写此快速入门时,最新的驱动软件版本为4.1.8。如果是64位的操作系统,请下载esdcan-pcie402-linux-x86_64-4.1.8.tar.gz,如果是32位的操作系统,请下载esdcan-pcie402-linux-x86-4.1.8.tar.gz 。
安装流程在如下Linux发布版本v24.04.1中被测试过,但驱动软件的使用不局限于此Linux发布版本。
目前esd已经将SocketCAN整合到主流Linux kernel版本中。若使用kernel版本大于等于v6.9的Linux发布版本,请先检查SocketCAN驱动是否已经起效,执行命令lsmod | grep can
,若能看到can相关的output,请先执行如下命令sudo sh -c "echo 'blacklist esd_402_pci' >> /etc/modprobe.d/blacklist.conf"
,然后重启电脑,用来禁用SocketCAN驱动,以便后续esd NTCAN驱动的安装。
若NTCAN驱动安装完成后,用户还想使用SocketCAN驱动,可以编辑sudo vim /etc/modprobe.d/blacklist.conf
,将语句blacklist esd_402_pci
注释掉,并且添加语句blacklist esdcan_pcie402
将NTCAN的驱动禁用,然后重启电脑。
【2】解压缩软件驱动包
- 此入门手册使用的是64位驱动包。驱动包解压缩在登陆用户的HOME目录中,用户可以根据自己的需求解压缩到其他目录中。
- 拷贝驱动包到HOME目录。
- 解压缩驱动包到HOME目录。
cd ~
tar -xv -f esdcan-pcie402-linux-x86_64-4.1.8.tar.gz
【3】使用dkms方式build和install驱动软件
- 安装dkms。
- 添加驱动目录内的src目录到dkms中,需使用root权限。
- build驱动软件。
- install驱动软件。
sudo apt-get install dkms
cd ~/esdcan-pcie402-linux-x86_64-4.1.8
sudo dkms add ./src
sudo dkms build esdcan-pcie402-linux-x86_64/4.1.8
sudo dkms install esdcan-pcie402-linux-x86_64/4.1.8
【4】使用udev方式自动生成设备节点
- 拷贝驱动目录内的esdcan-pcie402-dev.rules文件到udev的rules.d目录下,此rules文件在每次系统启动时被加载。其中指定的由驱动自动生成的脚本文件/proc/bus/can/%k/inodes会被执行,用来生成设备节点。
- 查看驱动安装是否成功。
- 查看/dev目录下是否有生成can的设备节点。
cd ~/esdcan-pcie402-linux-x86_64-4.1.8
sudo cp udev/esdcan-pcie402-dev.rules /etc/udev/rules.d/
sudo reboot
sudo dmesg | grep esd
ll /dev/can*
【5】安装NTCAN头文件
sudo install -v -g root -o root -m u=rw,g=r,o=r ~/esdcan-pcie402-linux-x86_64-4.1.8/include/ntcan.h /usr/local/include/
【6】安装NTCAN库文件
sudo install -v -g root -o root -m u=rwx,g=rx,o=rx ~/esdcan-pcie402-linux-x86_64-4.1.8/lib64/libntcan.so.4.2.12 /usr/local/lib/
cd /usr/local/lib/
sudo ldconfig -v -n /usr/local/lib/
sudo ln -sfv libntcan.so.4 libntcan.so
【7】检查如下的文件是否安装到指定的目录 /usr/local/lib 中
lrwxrwxrwx 1 root root 13 3月 31 2023 libntcan.so -> libntcan.so.4*
lrwxrwxrwx 1 root root 18 11月 30 13:39 libntcan.so.4 -> libntcan.so.4.2.12*
-rwxr-xr-x 1 root root 52808 11月 30 13:39 libntcan.so.4.2.12*
【8】将NTCAN库文件载入系统
- 将/usr/local/lib/目录写入/etc/ld.so.conf中。
- 执行ldconfig命令读取/etc/ld.so.conf文件,将/usr/local/lib中的NTCAN库文件载入系统。
- 查看NTCAN库文件是否载入成功。如果显示ntcan相应的信息,说明载入成功。
sudo sh -c "echo /usr/local/lib/ >> /etc/ld.so.conf"
sudo ldconfig
ldconfig -p | grep ntcan
【9】为cantest工具创建链接文件
sudo ln -s ~/esdcan-pcie402-linux-x86_64-4.1.8/bin64/cantest /usr/local/sbin/cantest
【10】测试以上安装步骤是否成功
- 在任意目录,执行cantest,查看是否有对应的板卡信息与设备节点被读取出来。
- 编译与连接example目录下的cantest.c,生成执行文件。
- 执行编译生成的cantest_in_example执行文件。
cd esdcan-pcie402-linux-x86_64-4.1.8/example/
gcc -o cantest_in_example cantest.c -lntcan
./cantest_in_example