精华内容
下载资源
问答
  • Linux周立功CAN驱动安装指导

    千次阅读 2019-01-04 21:58:07
    Linux周立功CAN驱动安装指导 安装 打开Linux终端,进入root模式 ①非永久模式,在命令前加sudo前缀 ②永久模式,在终端输入sudo su命令,再输入当前用户的密码,就可以以root身份登录到终端。 将sja1000.h复制到...

    Linux周立功CAN驱动安装指导

    • 安装
    1. 打开Linux终端,进入root模式

    ①非永久模式,在命令前加sudo前缀

    ②永久模式,在终端输入sudo su命令,再输入当前用户的密码,就可以以root身份登录到终端。

    1. 将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系统未测试。

    1. 编辑Makefile,将KDIR更改为您的内核目录
    2. 编译并加载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:无效模块格式

    应考虑,内核目录是否错误,重新查看内核版本,防止内核版本变更导致的错误

    1. 安装can-utils

    #apt-get update

    #apt-get install can-utils

    注:apt-get update的时间比较久,耐心等待

    1. 检查硬件

    #lspci -n

    出现如下图结果:

    1. 检查设备节点

    #ls / sys / class / net / can*

    出现如下图结果:

    • CAN接收发送测试
    1. 检测CAN是否连接

    #ip link show can0

    结果如下

    1. 设置can波特率

    # ip link set can0 type can bitrate 500000 triple-sampling on

    或者:#ip link set can0 type can bitrate 500000

    1. 使能CAN接口

    #ip link set can0 up

    或者:#ifconfig can0 up

    1. CAN接收测试

    用一转多,一头接待测试板卡CAN0,另一头接CAN-E-U卡,CAN-E-U接笔记本电脑,笔记本电脑端打开cantest,设置与CAN0相同的波特率,ID422,每次发送10帧,如下图所示;

    终端输入#candump can0指令进入等待接收模式,此时点击cantest发送按钮,在终端可以观察到如下结果:

    1. CAN发送测试

    在另一个终端输入#cangen can0 -g 4 -I 42A -L 1 -D i -v -v指令,可以在cantest观察到数据不停的接收。结果如下:

    同时在终端也可以看到数据的发送:

    1. 当can总线不再被需要或重新配置can(波特率)时,请关闭can接口
    展开全文
  • Linux Socket CAN驱动-CAN总线原理

    千次阅读 2015-05-12 20:49:06
    由于Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。因此,为了能够全面地了解Socket CAN的原理。我们需要了解以下几个方面的知识点: (1)CAN总线协议; (2)Socket原理; (3)Linux网络设备驱动;...
    由于Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。因此,为了能够全面地了解Socket CAN的原理。我们需要了解以下几个方面的知识点:
    

    (1)CAN总线协议;

    (2)Socket原理;

    (3)Linux网络设备驱动;

    当熟悉以下三个方面的知识点后,我们再去分析基于Linux的Socket CAN的驱动。这样的话理解起来更加容易、易懂。

    (4)Socket CAN的驱动;

    一、CAN总线协议

    CAN是ControllerArea Network(控制器局域网)的缩写。CAN通信协议在1986年由德国电气商博世公司所开发,主要面向汽车的通信系统。现已是ISO国际标准化的串行通信协议。根据不同的距离、不同的网络,可配置不同的速度,最高速度为1MBit/s。

             CAN被细分为三个层次:

                       1CAN对象层(the object layer);

                       2CAN传输层(the transfer layer);

                       3CAN物理层(the phyical layer);

    对象层和传输层包括所有由ISO/OSI模型定义的数据链路层的服务和功能。

    对象层的作用范围包括:

    (1)查找被发送的报文。

    (2)确定由实际要使用的传输层接收哪一个报文。

    (3)为应用层相关硬件提供接口。

    传输层的作用主要:

    (1)传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。

    (2)总线上什么时候开始发送新报文及什么时候开始接收报文,均在传输层里确定。

    (3)位定时的一些普通功能也可以看作是传输层的一部分。

    (4)传输层的修改是受到限制的。

    物理层的作用:

    在不同节点之间根据所有的电气属性进行位信息的实际传输。当然,同一网络内,物理层对于所有的节点必须是相同的。尽管如此,在选择物理层方面还是很自由的。

                            图1  CAN协议所对应的ISO模型

    CAN具有以下的属性:

    (1)报文(Messages):简单来说就是具有固定格式的数据包。

    (2)信息路由(Information Routing):即,报文寻找结点的方式。

    (3)位速率(Bit rate):数据位的传输速度。

    (4)优先权(Priorities):即报文发送的优先权。

    (5)远程数据请求(Remote Data Request):通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。

    (6)多主机(Multimaster):总线空闲时,任何结点都可以开始传送报文。

    (7)仲裁(Arbitration):当2个及以上的单元同时开始传送报文,那么就会有总线访问冲突。仲裁是确定哪个单元的具有发送优先权。

    (8)安全性(Safety):CAN的每一个节点均采取了强有力的措施以进行错误检测、错误标定及错误自检。

    (9)错误检测(Error Detection):包括监视、循环冗余检查、位填充、报文格式检查。

    (10)错误检测的执行(Performance of Error Detection)

    (11)错误标定和恢复时间(Error Sinalling and Recovery Time):任何检测到错误的结点会标志出已损坏的报文。此报文会失效并将自动地开始重新传送。如果不再出现新的错误,从检测到错误到下一报文的传送开始为止,恢复时间最多为29个位的时间。

    (12)故障界定(Fault Confinement):CAN结点能够把永久故障和短暂扰动区分开来。永久故障的结点会被关闭。

    (13)连接(Connections):CAN串行通讯链路是可以连接许多结点的总线。理论上,可连接无数多的结点。但由于实际上受延迟时间或者总线线路上电气负载的影响,连接结点的数量是有限的。

    (14)单通道(Single Channel):总线是由单一进行双向位信号传送的通道组成。

    (15)总线值(Bus value):总线可以具有两种互补的逻辑值之一:“显性”(可表示为逻辑0)或“隐性”(可表示为逻辑1

    (16)应答(Acknowledgment):所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答;对于不连贯的报文,接收器作出标志。

    (17) 睡眠模式/唤醒(Sleep Mode / Wake-up):为了减少系统电源的功率消耗,可以将CAN器件设为睡眠模式以便停止内部活动及断开与总线驱动器的连接。CAN器件可由总线激活,或系统内部状态而被唤醒。

    1、CAN总线的报文格式

    CAN传输的报文,可分为五种类型:

    (1)数据帧:用于发送结点向接收结点传送数据的帧。

    (2)远程帧:总线结点发出远程帧,请求发送具有同一识别符的数据帧。

    (3)错误帧:任何结点检测到一总线错误就发出错误帧。

    (4)过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。

    (5)帧间隔:用于将数据帧及远程帧与前面的帧分离开来的帧。

    数据帧由7个不同的位场组成:

    帧起始仲裁场控制场数据场CRC场ACK场帧结束

    数据帧有标准格式和和远程格式,以下是其格式表示:


                                                     图2    数据帧格式

    远程帧由6个不同的位场组成:

    帧起始仲裁场控制场CRC场ACK场帧结束

             远程帧没有数据帧的数据场,以下是其格式表示:


                                            图3    远程帧格式

    错误帧用于在接收和发送消息时检测出错误,通知错误的帧。错误帧由错误标志和错误界定符构成。

    错误标志包括主动错误标志和被动错误标志两种。

    主动错误标志:6个位的显性位,处于主动错误状态的单元检测出错误时输出的错误标志。

    被动错误标志:6个位的隐性位,处于被动错误状态的单元检测出错误时输出的错误标志。

    错误界定符由8个位的隐性位构成。

    错误帧格式如下表示:



                                           图4    错误帧格式

    过载帧是用于接收单元通知其尚未完成接收准备的帧。过载帧由过载标志和过载界定符构成。过载帧格式如下表示:



                                             图5    过载帧格式

    帧间隔是用于分隔数据帧和远程帧的帧。数据帧和远程帧可通过插入帧间隔将本帧与前面的任何帧(数据帧、远程帧、错误帧、过载帧)分开。过载帧和错误帧前不能插入帧间隔。帧间隔如下图所示:



                                        图6    帧间隔格式

    2、CAN总线的仲裁方式

             在总线空闲态,最先开始发送消息的单元获得发送权。多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。即逐位地对比各个结点发出的报文ID。由于线与的关系,显示位“0”可以覆盖隐性位“1”,因此ID最小的节点赢得仲裁,总线上表现为该结点的报文,其他结点失去仲裁,退出发送,转为接收状态。

    标准格式ID与具有相同ID的远程帧或者扩展格式的数据帧在总线上竞争时,标准格式的RTR位为显性位的具有优先权,可继续发送。



                                                  图7    仲裁方式

    3、位填充(BitStuffing)

             位填充是为了防止突发错误而设定的功能。位填充的规则如下:

    (1)5位连续相同电平之后,必须填充一位反向位,即不允许有6个连续相同位;

    (2)SOF之前为总线空闲状态,不需要同步,因此不需要位填充;

    (3)CRC之后为固定格式,不允许填充;

    (4)由CAN控制器自动实现;

    4、CAN的错误处理

    CAN控制器检测错误共有以下5种:

    (1)位填充错误;

    在使用位填充的帧场内,结点如果检测到6个连续相同的位值,则产生位填充错误,在下一位开始时,该结点将发送一个错误帧。

    (2)位错误;

    在发送期间,结点检测到总线的位值与自身发送的位值不一致时,则产生位错误,在下一位开始时,该结点将发送一个错误帧。

    (3)CRC错误;

    接收结点计算的CRC码与数据帧本身自带的CRC码不一致,接收结点将丢弃该帧,并在ACK界定符之后发送一个错误帧。

    (4)应答错误;

    发送结点在ACK Slot位会发送隐性位,同时监听总线是否为显性位,如果是显性位,则表明至少一个节点正确收到该帧;如果是隐性位,将产生ACK错误,发送结点发送一个错误帧。

    (5)格式错误;

    发送结节在(CRC界定符、ACK界定符、帧结束EOF)固定格式的位置检测到显性位时,将发生格式错误,并发送一个错误帧。

             5、CAN总线同步

             CAN总线的通信方式为NRZ方式。各个位的开关或者结尾都没有附加同步信号。发送结点以与位时序同步的方式开始发送数据。另外,接收结点根据总线上电平的变化进行同步并进行接收工作。

             但是,发送结点和接收结点存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引进同步偏差。因此接收结点需要通过同步的方式调整时序进行接收。

             同步的作用是尽量使本地位时序与总结信号的位时序一致(本地同步段与总结信号边沿同步)。只有接收结点需要同步;同步只会发生在隐性到显性电平的跳沿。

             同步的方式为硬件同步和再同步。


    以上是CAN总线协议的一些简要总结,不足之处,请指出,谢谢!下一篇文章将开始Socket原理的讲解。

    展开全文
  • linuxcan总线驱动

    2016-04-13 16:22:12
    linuxcan总线驱动
  • Linux CAN驱动程序源码

    2011-08-28 14:08:27
    Linux CAN驱动程序源码完整版,Linux CAN驱动程序源码完整版,Linux CAN驱动程序源码完整版,
  • linux下实现can驱动,并完成应用程序开发,可实现can设备之间的通信。
  • Linux can驱动程序

    2017-06-07 09:45:03
    支持can过滤,支持命令发送报文,ioctl控制端口
  • linux下的can驱动

    2008-05-08 23:47:13
    linux下的can驱动linux下的can驱动linux下的can驱动
  • can驱动linux

    2010-03-24 15:01:59
    can驱动linux,这个代码很详细,而且是实验通过得,以后不用为它发愁了
  • 周立功CAN卡 8EU 4 EU 驱动安装包 网盘链接: https://pan.baidu.com/s/1FezRq6hekfpdifyJMvQABw 密码: 02uj 或官网下载。 安装步骤:

    周立功CAN卡 8EU 4 EU 驱动安装包

    网盘链接: https://pan.baidu.com/s/1FezRq6hekfpdifyJMvQABw 密码: 02uj
    或官网下载。

    包中的sample可以用来参考改写驱动代码。

    安装步骤:
    在这里插入图片描述

    展开全文
  • linux 下pci 转can驱动

    2019-01-16 14:22:50
    PCI转CAN驱动linux框架下的linuxcan设备驱动,具有很好的借鉴作用
  • Linux CAN总线驱动canutils

    千次阅读 2017-11-09 16:08:18
    基于MCP2515的Linux CAN总线驱动程序设计(一) http://blog.csdn.net/leesheen/article/details/8768557 基于MCP2515的Linux CAN总线驱动程序设计(二) http://blog.csdn.net/leesheen/article/details/877 ...

    基于MCP2515的Linux CAN总线驱动程序设计(一)   http://blog.csdn.net/leesheen/article/details/8768557

    基于MCP2515的Linux CAN总线驱动程序设计(二)    http://blog.csdn.net/leesheen/article/details/877

    基于MCP2515的Linux CAN总线驱动程序设计(三)

    http://blog.csdn.net/leesheen/article/details/8775736

    AM335x(TQ335x)学习笔记——Linux CAN测试程序的编译

    http://tieba.baidu.com/p/3984207422


    CAN线口(Linux中的can的数据结构详解):https://wenku.baidu.com/view/d6333615763231126fdb111f.html

    socket can 编程(小实例编程):http://blog.csdn.net/shenwanjiang111/article/details/43837517





    展开全文
  • LINUX下的CAN驱动

    2008-08-28 09:34:14
    mcp2515.c 的LINUX下的CAN驱动,我没有设备,还没有用国
  • linux下的CAN驱动

    2011-02-12 15:54:53
    完整的linux2.6内核下的CAN驱动程序,经过测试.
  • 问题描述 硬件:研华工控机(型号忘记了) 系统:Debian 10 - 4.19.0-8 软件:研华CAN总线Linux下的 socket can 驱动程序,下载地址。 问题:
  • Linux CAN驱动及测试总结

    千次阅读 2016-07-28 09:15:28
    Xilinx官网CAN驱动相关:http://www.wiki.xilinx.com/Linux+CAN+driver 1、内核中开启CAN总线:  1)进入内核源码顶层目录 cd /opt/hzzd/linux/linux-xlnx-xilinx-v2014.2.01/  2)make ARC
  • canutils-linux下socketcan驱动

    热门讨论 2013-01-02 21:46:45
    linux下socketcan驱动,包括cansend,candump,config,很不错的学习代码
  • 嵌入式LinuxCAN总线驱动程序设计
  • 嵌入式LinuxCAN设备驱动的设计.pdf
  • 嵌入式LinuxCAN总线驱动程序设计.pdf
  • 嵌入式linux, CAN 驱动有关问题

    千次阅读 2013-11-19 16:56:40
    1. linux3.0.1源码包中的: drivers/net/can/mcp251x.c与Kconfig文件(将mcp251x.c中spi_board_info[] 中的.modalias="mcp2510"设为"mcp2515")是不是此处原因待查! drivers/spi/spi_s3c64xx.c net/can ...
  • 基于嵌入式LINUXCAN设备驱动程序设计.pdf
  • Linux CAN驱动的理解

    千次阅读 2015-12-24 15:18:30
    的足迹——对Linux CAN驱动的理解(1) 在Ti的AM335X系列Cortext-A8芯片中,CAN模块采用D_CAN结构,实质即两路CAN接口。 在此分享一下对基于AM335X的Linux CAN驱动源码的理解。下面来分析它的驱动源码...
  • 确保您的正确版本的can4linux.h与include目录中已安装驱动程序相匹配! 要运行测试,请进入bin.test目录并运行: java -cp .:../bin -Djava.library.path=../lib can4linux.CAN4LinuxTest bin.test java -cp .:....
  • Linux Socket CAN驱动 接收数据流程>

    千次阅读 2015-05-12 20:55:53
    现在我们来分析一下CAN总线的接收数据流程,对于网络设备,数据接收大体上采用中断+NAPI机制进行数据的接收。同样,我们现在的CAN模块也是采用同样的方式进行数据的接收。由于我们只针对CAN总线接收数据这条主线进行...
  • Linux Socket CAN——驱动开发

    千次阅读 2019-02-11 14:12:41
    Linux Socket CAN驱动开发 一 CAN总线协议 CAN是Controller Area Network(控制器局域网)的缩写。CAN通信协议在1986年由德国电气商博世公司所开发,主要面向汽车的通信系统。 现已是ISO国际标准化的串行通信协议。...
  • 周立功USB转CANII驱动linux版本),可直接在linux下解压使用。周立功USB转CANII驱动linux版本),可直接在linux下解压使用。
  • 嵌入式LinuxCAN总线驱动程序研究及应用.pdf
  • 基于嵌入式LinuxCAN总线驱动设计与实现.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,483
精华内容 23,393
关键字:

linux安装can驱动

linux 订阅