使用Jetson Xavier 配置Can

  • 我们首先在 Xavier 上安装一个用于更改寄存器值的工具:
sudo apt-get install busybox
  • 然后我们需要重新配置对应于 CAN 控制器引脚的四个寄存器值。以下命令将重新配置这些引脚:
sudo busybox devmem 0x0c303000 32 0x0000C400
sudo busybox devmem 0x0c303008 32 0x0000C458
sudo busybox devmem 0x0c303010 32 0x0000C400
sudo busybox devmem 0x0c303018 32 0x0000C458
  • 现在寄存器值已修改,我们可以挂载 CAN 控制器并使用以下modprobe命令加载驱动程序:
sudo modprobe can
sudo modprobe can_raw
sudo modprobe mttcan
  • 下一步是根据您的 CAN 总线和收发器的规格配置 CAN 控制器。这里我将 CAN 比特率设置为 500 Kbps,启用灵活数据速率 (FD),将有效负载比特率设置为 2 Mbps 并启用总线错误报告。如果您不确定所有这些设置,您可以设置该bitrate值并在此之后忽略其他选项。
sudo ip link set can0 type can bitrate 500000 \
dbitrate 2000000 berr-reporting on fd on
sudo ip link set can1 type can bitrate 500000 \
dbitrate 2000000 berr-reporting on fd on
  • 现在我们只需要启动 CAN 接口:
sudo ip link set up can0
sudo ip link set up can1
  • 要检查 CAN 控制器是否已成功启用,请使用该ifconfig命令。can0在输出中,您应该能够看到can1您的网络设备,如下图所示:

    img

  • 要在系统启动时自动完成上述 CAN 控制器配置,enable_CAN.sh请在根目录中创建一个名为的文件并使其可执行:

touch /enable_CAN.sh
chmod 755 /enable_CAN.sh

  • 将以下行添加到此文件并保存。这些基本上与我们为配置 CAN 控制器而运行的命令相同。
#!/bin/bashsudo busybox devmem 0x0c303000 32 0x0000C400
sudo busybox devmem 0x0c303008 32 0x0000C458
sudo busybox devmem 0x0c303010 32 0x0000C400
sudo busybox devmem 0x0c303018 32 0x0000C458sudo modprobe can
sudo modprobe can_raw
sudo modprobe mttcan
sudo ip link set can0 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
sudo ip link set can1 type can bitrate 500000 dbitrate 2000000 berr-reporting on fd on
sudo ip link set up can0
sudo ip link set up can1

exit 0
  • 如果/etc/rc.local您的 Jetson Xavier 上已存在该文件,请跳至下一步。如果它不存在,请继续并通过在终端中运行以下命令来创建它:
printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
  • 将以下行添加到该行/etc/rc.local之前的文件中exit 0
sh /enable_CAN.sh &
  • 您的/etc/rc.local文件现在应该如下所示:
  • img

现在 enable_CAN.sh 脚本应该在系统启动时自动运行并配置 CAN 控制器。要对其进行测试,请重新启动 Jetson Xavier 并检查在终端中运行命令时是否仍能看到can0和设备。can1``ifconfig