TX2打开can0外设自启动

项目场景:

用TX2作为主控板,电机和驱动均采用步科,驱动器型号为FD122,制作的两轮差速移动机器人


问题

底盘通信不想,两驱动器IP地址和驱动文件均无误的情况下,仍不能通信。
在这里插入图片描述


原因分析:

在其他的板子上确认了驱动文件是对的,与师兄交流,通过问题发现可能是can总线的问题,因地盘通信采用CAN总线,初步查了手册,TX2自身就带了两路CAN外设,我们采用的是can0,未用到can1


解决方案:

网上搜了一下,发现有两种解决方法,一是打开外设,编译到内核,二是写脚本文件,添加到自启动。这里采用的是第二种方案。

终端输入ifconfig查看有无can0-00
在这里插入图片描述
若无就是这个问题了,
打开终端输入

1.	modprobe can      // 插入 can 总线子系统
2.	modprobe can-raw   //插入can 协议模块
3.	modprobe can-bcm
4.	modprobe can-gw  
5.	modprobe can_dev
6.	modprobe mttcan

上述的步骤只是给内核增加了内设,但外设还是没有打开,igconfig查看是否打开了外设还是查不到。
这个时候我们就需要借助第三方开发包can-utils,安装方式如下:

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

接下来打开外设:

1.	sudo ip link set can0 type can bitrate 500000 loopback on
2.	sudo ip link set up can0

接下来添加自启动脚本
在ubuntu16.04的文件夹/etc/init.d/目录创建自启动脚本,can0_add.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 500000 loopback on
sudo ip link set up can0

exit 0

最后修改文件权限:

sudo chmod 755 can_add_server.sh

然后执行:

sudo update-rc.d can_add_server.sh defaults 95

将脚本添加到启动项(95表示启动时间,越大表示启动越晚)

重启系统就可以与底盘通信上了。

参考:https://blog.csdn.net/qq_33635623/article/details/89944852

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值