#Author ---> DK,   Email ---> daikai@jluracing.com

#鉴于在网上搜索了很多关于ESD CAN卡驱动安装的教程都不理想,且官网给的Readme做得让我比较头疼,现将esd-pcie402 CAN卡驱动安装及测试教程分享给大家
#以esd-pcie402为例

//step1 
写一个名为black_pci.sh的脚本(当然啦,这个名字你可以随便取,后缀位.sh文件即可),脚本内容如下:

#To disable SocketCan driver for PCIe402 series boards, add "blacklist plx_pci" in /etc/modprobe.d/blacklist.conf
if [ -z "$(cat /etc/modprobe.d/blacklist.conf | grep 'blacklist plx_pci')" ]; then
  echo "start to add an line of 'blacklist plx_pci' in /etc/modprobe.d/blacklist.conf"
  sudo sh -c "echo 'blacklist plx_pci' >> /etc/modprobe.d/blacklist.conf"
  echo "'blacklist plx_pci' has been added into /etc/modprobe.d/blacklist.conf, please reboot linux first, and then run this script again."
  sudo reboot
  exit 0
fi

!!!写完脚本后在脚本所在目录执行 "sudo sh black_pci.sh",没有报错的话脚本就生效了,这个时候机器会重启,所以在进行这条命令前请确保自己没有打开重要的程序和文件,确认已经保存好!!!

//step2
首先你会从官网或产品自带的光盘里得到一个驱动包,名字大概是这样的:esdcan-pcie402-linux-2.6.x-x86_64-3.10.4, (如果你是32位系统请采用x86版本,本人ubuntu是64位,故采用x86_64版本);
这个时候你应该果断待地进入esdcan-pcie402-linux-2.6.x-x86_64-3.10.4目录中,操作指令如下:"cd esdcan-pcie402-linux-2.6.x-x86_64-3.10.4"。

//step3
进入到esdcan-pcie402-linux-2.6.x-x86_64-3.10.4目录后,你会发现有一个Makefile文件,在该目录下执行命令如下:"make";
这时候你会惊奇地发现src文件夹中很多文件被编译了,其中有一个很重要的东西叫:"esdcan-pcie402.ko",稍后会介绍它是如何用的。

//step4
在目录"esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/include"下,你能看到一个叫"ntcan.h"的头文件,它很重要,后期你程序在调用CAN接口时都要包含这个头文件;
需要将其copy到/usr/local/include目录下,在"esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/include"目录下执行命令如下"sudo cp ntcan.h /usr/local/include";
打开/usr/local/include查看,确认"ntcan.h"在该目录下。

//step5
在目录"esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/lib64"下,你能看到一个叫"libntcan.so.4.0.1"的动态链接库;
需要将其copy到/usr/local/lib目录下,在"esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/lib"目录下执行命令如下"sudo cp libntcan.so.4.0.1 /usr/local/lib";
确认"libntcan.so.4.0.1"在/usr/local/lib文件夹中后,接下来进入/usr/local/lib目录,执行"sudo ldconfig -v -n /usr/local/lib",会生成"libntcan.so.4"文件;
确认"libntcan.so.4"在/usr/local/lib文件夹中后,接下来进入/usr/local/lib目录,执行"sudo ln -sfv libntcan.so.4 libntcan.so",会生成"libntcan.so"文件。

//step6
加载动态链接库
任意目录下执行"ldconfig -p | grep ntcan"
通过后执行"cat /etc/ld.so.conf | grep /usr/local/lib"
通过后执行" sudo sh -c "echo /usr/local/lib >> /etc/ld.so.conf" "
接下来执行"sudo ldconfig"
至此,动态链接库加载完成

//step7
在目录"esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/src"下,你能看到一个叫"esdcan-pcie402.ko"的文件,这个文件是由之前所述的make命令生成的;
需要将其copy到/lib/modules/$(uname -r)/kernel/drivers/pci目录下,在"esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/src"目录下执行命令如下"sudo cp esdcan-pcie402.ko /lib/modules/$(uname -r)/kernel/drivers/pci";
打开/lib/modules/$(uname -r)/kernel/drivers/pci查看,确认"esdcan-pcie402.ko"在该目录下;
接下来编译"esdcan-pcie402.ko"文件,打开一个新终端,执行"sudo depmod -a";
通过后执行"sudo modprobe esdcan-pcie402";

//step8
方法一(不推荐):打开一个新终端执行“sudo mknod --mode=a+rw /dev/can0 c 52 0”,其中52代表402号CAN卡的major值,不同的CAN卡请根据型号自行更改值,Readme文件中有说明,
此时你在dev目录下会看到一个节点can0,但是采用这种方法有一个缺点,每次重启can0节点会被消除,这样你的CAN卡就启动不了,需要重新创建一个can0节点才能启动CAN卡,
原因是dev文件夹的全称其实是device,里面有鼠标、键盘等各种设备的节点,是装系统时自带的,我们后期不能随意添加节点,即使你添加了,开机重启后系统还是会将你删除。

方法二:创建一个名为"98-esdcanpci.rules"的文件,当然了,前面名称可以根据自己的喜好改,后缀为".rules"即可,文件里面的内容如下:
SUBSYSTEM=="pci", ACTION=="add", ATTR{subsystem_vendor}=="0x12fe", ATTR{subsystem_device}=="0x0402" , RUN+="/bin/sh -c 'mknod --mode=a+rw /dev/can0 c 52 0'"
#稍微解释一下其含义:ATTR{subsystem_vendor}=="0x12fe" is the registered ID of esd in PCI(PnP), ATTR{subsystem_device}=="0x0402" is the ID of CAN-PCIe402,52是CAN卡的major值
注意,每一块CAN卡的subsystem_vendor值和subsystem_device值不一样,可以通过以下命令来查找
首先在一个新终端执行:"lspci",你可以看到所有的pci设备,其中就会有一个叫CANBUS的,在我的电脑上,CANBUS前面对应有一个值"02:00.0";
接下来执行:"lspci -n |grep 02:00.0",你就可以看到设备的subsystem_vendor和subsystem_device,在我电脑里执行后得到"02:00.0 0c09: 12fe:0402 (rev 01)",其中12fe为subsystem_vendor,0402为subsystem_device;
接下来98-esdcanpci.rules文件写完后,将其copy至"/etc/udev/rules.d"目录下,在该目录下对98-esdcanpci.rules执行chmod 777 98-esdcanpci.rules;
接下来重启ubantu系统,让rules文件生效;

//step8
确保CAN驱动已经加载,运行命令:"lsmod |grep can";
下一步确认CAN设备可见,并且已具备合适的权限,运行命令"ls -l /dev/can0";
若以上两个命令运行均成功,则说明已经驱上了,但并未完全确定成功!

#至此,CAN卡驱动操作均已完成,接下来进行编译及测试
在目录“esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/example”下,你能看到一个叫cantest.c的文件,
在目录“esdcan-pcie402-linux-2.6.x-x86_64-3.10.4/example”下执行“gcc -o cantest cantest.c -lntcan”,若编译通过则说明CAN驱动已经安装成功,
在该目录下,你会看到一个"cantest"的可执行文件,运行该文件时候要带上参数"cantest 3 0 0x00 0xff 1 10 100 1000 5000 2 -1"各项参数解释如下:
3 -- canRead
0 -- net0
0x00 -- first-id 0x00
0xff -- last-id 0xff
1 -- count of CMSG-packets
10 -- txbuf (useless here)
100 -- rxbuf
1000 -- tx timeout every 1 second (useless here)
5000 -- rx timeout every 5 seconds
2 -- baud rate 500k bit/s
-1 -- count of ntcan-API-Calls, -1 is forever canRead the bus.

cantest 3 0 0x00 0xff 1 10 100 1000 5000 2 -1 可以接收网内canid 在0和ff之间的数据包,需要接受很大的id的数据包,将0xff改大为0xffff即可;

//CAN卡自带120欧电阻,传感器输出端需要接一个120欧电阻(若不接则可能接收不到传感器数据),CAN卡接收端不需要外接120欧电阻。

以上为CAN卡驱动及测试全过程。

ESD-PCIe 402-1 CAN卡驱动安装及测试相关推荐

  1. U盘加载硬盘控制卡驱动安装Windows 2003 指南

    U盘加载硬盘控制卡驱动安装Windows 2003 指南 http://www.dell.com/Support/Article/cn/zh/cnbsd1/SLN263067 posted on 20 ...

  2. Linux下PCI转串口卡驱动安装方法

    Linux下PCI转串口卡驱动安装方法 ----------------------------------- 由于公司产品要做行业市场,而产品与行业用户间PC的通讯为RS232串口方式.而行业用户那 ...

  3. 星秒科技tof激光雷达PAVO的ros驱动安装与测试

    原链接:https://community.bwbot.org/topic/660 开发测试平台:小强机器人 下载链接:PAVO激光雷达windows资料包 星秒科技激光雷达pavo的供电是直流12v ...

  4. cnpm : 无法加载文件_DELL 服务器R230 加载阵列卡驱动安装Server 2012R2操作系统

    第一步:创建SATA接口模式为RIAD,创建RAID1 DELL服务器R230 RIAD1创建后安装Server 2018 R2操作系统. 在做RIAD 1之前需要将SATA接口模式更改为RIAD模式 ...

  5. linux a卡安装教程视频下载,A卡驱动安装教程

    新下载,不再推荐2017年的区块链专用驱动 链接:https://pan.baidu.com/s/1rO-o0ybKpP5bb6dYvgY64Q 提取码:xzib安装驱动 1.覆盖安装时,可能出现如下 ...

  6. 更换显卡(nvidia)后进不去的解决办法,N卡驱动安装方法

    系统:Ubuntu 12.04 显卡:NVIDIA GeForce GTX TITAN X 驱动:NVIDIA-Linux-x86_64-352.21.run http://www.nvidia.cn ...

  7. 无法安装N卡驱动,N卡驱动安装程序闪退解决办法

    问题 朋友电脑需要459版本以上的驱动,但是无论如何无法打开驱动安装程序,或打开后卡在加载界面后闪退.在CSDN中找到有人说是证书问题,但是文章中的方法有点麻烦.所以自己用了别的方法.主要方法都是用正 ...

  8. n卡驱动安装最强教程

    推荐使用ubuntu自带的,软件和更新里面的附加驱动. Nvidia驱动安装链接

  9. flir相机、livox和xsense驱动安装与测试笔记

    文章目录 1.flir相机 1.1.安装官方SDK 1.1.1.安装官方SDK的作用 1.1.2.安装步骤 1.2.编译安装ros驱动 1.2.1.ros驱动的作用 1.2.2.编译ros驱动 1.3 ...

  10. Yoga14s(MX450)-Ubuntu20.04-显卡驱动安装

    一. 禁用nouveau 二. apt-get install 的方式安装驱动(之前试过 附加驱动/官方.sh 均失败) 三.重启 四.之前一直卡左上角光标 grub引导界面 按e编辑 之前因为无法进 ...

最新文章

  1. MATLAB常用快捷键组合
  2. Eclipse常用的高效插件
  3. Microsoft Dynamic CRM 2013安装
  4. 基于fiddler的网络爬虫校园网自动登陆系统
  5. 用于zsh的插件incr(目录提示和补全)
  6. (转)求单链表是否有环,环入口和环长
  7. Proxy Hosted Virtual
  8. UWP 保存用户设置
  9. L2与L1正则化理解
  10. git本地分支和远程分支改名
  11. Python基础语法-print
  12. ts html导出excel,用Angular2在客户端导入导出Excel
  13. 期末考试-第一章-计算机视觉综述知识整理
  14. Noiseware 5 降噪滤镜
  15. 2020年度最值得关注论文TOP10
  16. OA系统是什么意思?企业为什么要用OA办公系统软件?
  17. 数据智仓功能介绍(一)
  18. Java编写生成的验证码
  19. electron 介绍
  20. 5G边缘云在营销领域的投资机遇

热门文章

  1. 台达PLC解密次数限制
  2. 2017满分题库完整版超星尔雅俄国近代思想史章节测试考试答案
  3. excel手机版_excel仓库管理手机版导出软件
  4. 路由侠(连接外网工具) v1.0 官方最新版
  5. 联想G450 Linux wifi,联想g450无线网卡驱动,详细教您无线网卡安装教程
  6. 内连接、外连接和全连接的区别
  7. oracle建表的方法,oracle建表语句
  8. Altium Designed导出Gerber,Gerber文件所对应的层
  9. 电脑同时上内外网——设置教程(附内外网优先级设置)
  10. android如何打开数据库文件,在Android Studio中查看数据库文件的内容