tx2 can通信之开机自动加载can模块

      最近有个新项目使用了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 编写适合自己使用的收发代码。

 

 

 

 

 

 

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值