最近有个新项目使用了TX2及开发板,因地盘通信采用CAN总线,初步查了手册,TX2自身就带了两路CAN外设,于是就放弃了之前USB2CAN的方案,直接使用TX2的CANBUS;特将操作步骤记录在此。

1.查询系统是否挂载了CAN外设

使用 lsmod 指令,该指令主要是用来查询内核当前正常挂载了哪些模块。通过man命令查询lsmod的用法;

当前主机内核挂载的模块如下:

可以到当前系统并未有与CAN相关的任何模块。TX2是为自动驾驶设计,都带了can外设不应该没有can模块,通过查询资料了解到,在linux内核中会将不常用的模块打包成.ko文件,方便使用者根据自身需求来添加。也就说,要是使用can,就必须手动添加can模块。依次执行以下指令:

modprobe can      // 插入 can 总线子系统
modprobe can-raw   //插入can 协议模块
modprobe can-bcm
modprobe can-gw
modprobe can_dev
modprobe mttcan  

再次lsmod查询,可以发现CAN模块已经添加但内核了;

2.打开设备

挂载步骤只是给内核增加了这个外设,但外设并没有打开,所以还得继续。can也是一种网路接口,在linux下can的收发采用的是socket编程模式,所以可以通过ifconfig查询是否打开了can外设。本地查询如下:

这个时候我们就需要借助第三方开发包can-utils,安装方式如下:

git clone https://github.com/linux-can/can-utils.git
cd can-utils
make
sudo make install

接下来 就是打开外设:

sudo ip link set can0 type can bitrate 1000000 loopback on
sudo ip link set up can0
sudo ip link set can1 type can bitrate 1000000 loopback on
sudo ip link set up can1

再来查询,can外设已经正常打开了,如下:

有一点需要说明,这配置并未编译到内核,所以每次启动都会失效,最好的办法就是写成脚本,随系统启动。

3.添加自启动脚本

在ubuntu16.04和ubuntu14.04不一样,这里在16.04中实验成功的。

在/etc/init.d/目录创建自启动脚本,can_add_server .sh,输入内容如下(注意脚本格式,要求比较严格)

#!/bin/sh
### BEGIN INIT INFO
# Provides:          land.sh
# Required-start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the svnd.sh daemon
# Description:       starts svnd.sh using start-stop-daemon
### END INIT INFO#任务脚本
modprobe can
modprobe can-raw
modprobe can-bcm
modprobe can-gw
modprobe can_dev
modprobe mttcan
sudo ip link set can0 type can bitrate 1000000 loopback on
sudo ip link set up can0
sudo ip link set can1 type can bitrate 1000000 loopback on
sudo ip link set up can1
#任务脚本exit 0

修改文件权限:sudo chmod 755 can_add_server.sh;

然后执行:sudo update-rc.d can_add_server.sh defaults 95   (将脚本添加到启动项(95表示启动时间,越大表示启动越晚))

重启系统就可以看到效果。

接下来的会介绍如何使用第三方库can-utils 编写适合自己使用的收发代码。

tx2 can通信之开机自动加载can模块相关推荐

  1. linux开机自动加载igb模块,linux – 使用intel igb(已解决)在3/5 raid6 iSCSI NAS设备上的第一个RX队列上丢弃100%数据包...

    编辑:问题已解决.有问题的队列已用于流控制数据包.为什么igb驱动程序传播FC数据包以使其丢弃(并计数)是另一个问题.但解决方案是,数据丢失的方式没有任何损失. 非常感谢syneticon-dj,你指 ...

  2. Android 开机自动加载新wifi模块驱动

    在android ROM 开发中经常会遇到产品更换wifi模块的情况,一般常见的wifi驱动android内核中自带都有,无需过多调试,要是碰上内核中没有的就需要根据厂商提供的驱动进行移植. wifi ...

  3. Linux模块加载流程及如何让系统开机自动加载模块

    Linux模块加载 Linux系统加载哪些内核模块,和配置文件有关系. 模块保存在/lib/modules/下. 使用/etc/modules-load.d/来配置系统启动时加载哪些模块. 使用/et ...

  4. Ubuntu开机自动加载驱动模块

    目前我知道有两种方式来实现开机自动加载驱动模块,一种是将驱动模块放到 /lib/modules/uname -r/ 中,然后在修改 /etc 下的 modules 等文件:另一种是编写开启自启脚本,将 ...

  5. 计算机管理中没有vhd,电脑重启后新建的VHD虚拟硬盘不见了怎么办|如何设置使VHD硬盘开机自动加载...

    ‍ 我们可以通过系统自带的磁盘功能创建VHD虚拟硬盘,但是有用户发现电脑在重启之后,资源管理器中的VHD虚拟硬盘就不见了.对于这种现象,应该是电脑系统在开机后没有自动加载VHD硬盘的原因.那么,如何使 ...

  6. linux modprobe自动加载,modprobe 开机自动加载模块的方法 亲测成功

    再次鄙视那些凭空臆测就发表技术文章和那些不分好坏疯狂采集的人.浪费大家的时间,你们罪当诛杀! 添加开机自动加载模块,在各大搜索引擎发现很多误导的技术文章,浪费我的时间,气死了. 下面是本人测试成功的. ...

  7. linux 自启动iptable_保存iptable规则并开机自动加载

    iptables-save 利用iptables-save命令可以将iptable规则保存到一个持久化存储的目录中,不同的系统保存的目录也有所不同(IPv4): Debian/Ubuntu: ipta ...

  8. linux驱动模块开机自动加载,以及应用程序开机自启动

    第一种方法:相对来说简单 将测试程序放在/bin底下,然后用vi编辑/etc/init.d/rcS,加上/bin/应用程序名 &,加上&表示后台运行 这两个功能的实现都是通过设置启动脚 ...

  9. Linux系统开机自动加载驱动module

    Linux系统的驱动默认存放目录为: /lib/modules/$(uname -r)/kernel/drivers,因此如果希望系统可以启动时自动加载驱动必须首先把驱动放到该目录下面,执行完此步操作 ...

最新文章

  1. oracle 日期排序_日期居然用字符串保存?我笑了
  2. 线程安全和线程不安全的简述及辅助记忆
  3. merge语句_SQL Server MERGE语句概述和示例
  4. C++ Primer 第9章 习题9.32
  5. XPath 元素及属性查找
  6. ubuntu18.04安装微信、QQ、百度网盘
  7. 倒立摆状态反馈控制——分析、建模与仿真(matlab)
  8. 什么样的女人才是老婆(感动)
  9. maya安装步骤 新手安装软件基础教程(附安装包)
  10. 信签纸有虚线怎么写_写观后感的信签纸格式
  11. 教你如何看懂photoshop中的直方图 让曝光达到完美
  12. 【python】OCR
  13. Wargames(一)
  14. 初级程序员和高级程序员的区别(转)
  15. linux cmos摄像头,Linux摄像头驱动4——CMOS摄像头
  16. 单元测试 chapter3
  17. 布朗大学计算机专业怎么样,布朗大学计算机专业怎么样?过来人告诉你
  18. MQL5 初学者:EA 交易技术指标使用指南
  19. 数据库查询语句详细实例解析(以mysql为例)
  20. v79.01 鸿蒙内核源码分析(用户态锁篇) | 如何使用快锁Futex(上) | 百篇博客分析OpenHarmony源码

热门文章

  1. 自定义 VSCode 背景图片
  2. 【产品】禅道项目管理核心思想
  3. 2020云盘点:云数据库冲击传统数据库,擦枪走火看金融
  4. OSError: [WinError 1455] 页面文件太小,无法完成操作
  5. Git 分支操作、Git 团队协作机制、GitHub 操作
  6. 国内做HIS(医院信息化软件)常见的厂商与产品的比较
  7. 点到线段的最短距离——矢量法
  8. 怎样将pdf格式转换成jpg
  9. 如何修改MySQL实例的UUID#olivia丶长歌#
  10. 【Tensorflow】mnist_with_summaries.py报错