ESD-PCIe 402-1 CAN卡驱动安装及测试
#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卡驱动安装及测试相关推荐
- U盘加载硬盘控制卡驱动安装Windows 2003 指南
U盘加载硬盘控制卡驱动安装Windows 2003 指南 http://www.dell.com/Support/Article/cn/zh/cnbsd1/SLN263067 posted on 20 ...
- Linux下PCI转串口卡驱动安装方法
Linux下PCI转串口卡驱动安装方法 ----------------------------------- 由于公司产品要做行业市场,而产品与行业用户间PC的通讯为RS232串口方式.而行业用户那 ...
- 星秒科技tof激光雷达PAVO的ros驱动安装与测试
原链接:https://community.bwbot.org/topic/660 开发测试平台:小强机器人 下载链接:PAVO激光雷达windows资料包 星秒科技激光雷达pavo的供电是直流12v ...
- cnpm : 无法加载文件_DELL 服务器R230 加载阵列卡驱动安装Server 2012R2操作系统
第一步:创建SATA接口模式为RIAD,创建RAID1 DELL服务器R230 RIAD1创建后安装Server 2018 R2操作系统. 在做RIAD 1之前需要将SATA接口模式更改为RIAD模式 ...
- linux a卡安装教程视频下载,A卡驱动安装教程
新下载,不再推荐2017年的区块链专用驱动 链接:https://pan.baidu.com/s/1rO-o0ybKpP5bb6dYvgY64Q 提取码:xzib安装驱动 1.覆盖安装时,可能出现如下 ...
- 更换显卡(nvidia)后进不去的解决办法,N卡驱动安装方法
系统:Ubuntu 12.04 显卡:NVIDIA GeForce GTX TITAN X 驱动:NVIDIA-Linux-x86_64-352.21.run http://www.nvidia.cn ...
- 无法安装N卡驱动,N卡驱动安装程序闪退解决办法
问题 朋友电脑需要459版本以上的驱动,但是无论如何无法打开驱动安装程序,或打开后卡在加载界面后闪退.在CSDN中找到有人说是证书问题,但是文章中的方法有点麻烦.所以自己用了别的方法.主要方法都是用正 ...
- n卡驱动安装最强教程
推荐使用ubuntu自带的,软件和更新里面的附加驱动. Nvidia驱动安装链接
- 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 ...
- Yoga14s(MX450)-Ubuntu20.04-显卡驱动安装
一. 禁用nouveau 二. apt-get install 的方式安装驱动(之前试过 附加驱动/官方.sh 均失败) 三.重启 四.之前一直卡左上角光标 grub引导界面 按e编辑 之前因为无法进 ...
最新文章
- MATLAB常用快捷键组合
- Eclipse常用的高效插件
- Microsoft Dynamic CRM 2013安装
- 基于fiddler的网络爬虫校园网自动登陆系统
- 用于zsh的插件incr(目录提示和补全)
- (转)求单链表是否有环,环入口和环长
- Proxy Hosted Virtual
- UWP 保存用户设置
- L2与L1正则化理解
- git本地分支和远程分支改名
- Python基础语法-print
- ts html导出excel,用Angular2在客户端导入导出Excel
- 期末考试-第一章-计算机视觉综述知识整理
- Noiseware 5 降噪滤镜
- 2020年度最值得关注论文TOP10
- OA系统是什么意思?企业为什么要用OA办公系统软件?
- 数据智仓功能介绍(一)
- Java编写生成的验证码
- electron 介绍
- 5G边缘云在营销领域的投资机遇
热门文章
- 台达PLC解密次数限制
- 2017满分题库完整版超星尔雅俄国近代思想史章节测试考试答案
- excel手机版_excel仓库管理手机版导出软件
- 路由侠(连接外网工具) v1.0 官方最新版
- 联想G450 Linux wifi,联想g450无线网卡驱动,详细教您无线网卡安装教程
- 内连接、外连接和全连接的区别
- oracle建表的方法,oracle建表语句
- Altium Designed导出Gerber,Gerber文件所对应的层
- 电脑同时上内外网——设置教程(附内外网优先级设置)
- android如何打开数据库文件,在Android Studio中查看数据库文件的内容