英伟达的TX2有两路CAN,默认情况下是没有启动的,通过ifconfig命令可以查看CAN是否启动
通过下面的设置可以启动CAN模块
步骤一:
# 注意由于版本不同,modules下模块可能不是4.4.38
cd /lib/modules/4.4.38-tegra/kernel/net/can
sudo insmod can.ko
sudo insmod can-raw.ko
sudo insmod can-gw.ko
sudo insmod can-bcm.ko
步骤二:
# 同上,可能不是4.4.38
cd /lib/modules/4.4.38-tegra/kernel/drivers/net/can
sudo insmod can-dev.ko
sudo insmod slcan.ko
sudo insmod vcan.ko
步骤三:
cd /lib/modules/4.4.38-tegra/t18x/drivers/net/can/mttcan/native
sudo insmod mttcan.ko
以上步骤应该是启动can模块的驱动,接下来设置can模块的波特率并启动。
sudo ip link set can0 type can bitrate 500000
sudo ip link set up can0
#ip -s -d link show can0
sudo ip link set can1 type can bitrate 500000
sudo ip link set up can1
#ip -s -d link show can1
可通过ifconfig命令查看是否启动成功。
在TX2未重启的情况下,关闭can然后重新开始,不需要重复启动can模块驱动的步骤。
回环测试
要想重新配置波特率先关掉can:
sudo ip link set down can0
设置can0波特率,回环模式对波特率不做要求:
sudo ip link set can0 type can bitrate 500000 loopback on
启动can0:
sudo ip link set up can0
发送数据:
cansend can0 123#abcdabcd
在另一个终端接收:
candump can0