cohen

cohen

A man who want to make the world better.

基于orange Pi 5 MAX (RK3588) 如何在 ubuntu-rockchip 中启用CAN通信?

环境配置#

操作步骤与说明#

  1. 使用管理员权限打开 /etc/default/u-boot 文件,该文件是 u-boot 的加载文件,我们的目的是修改设备启动时需要加载的设备树文件。

    sudo vim /etc/default/u-boot
    
  2. 文件内容修改为:

	## /etc/default/u-boot - configuration file for u-boot-update(8)
	#U_BOOT_UPDATE="true"
	
	#U_BOOT_ALTERNATIVES="default recovery"
	#U_BOOT_DEFAULT="l0"
	#U_BOOT_PROMPT="1"
	#U_BOOT_ENTRIES="all"
	#U_BOOT_MENU_LABEL="Debian GNU/Linux"
	#U_BOOT_PARAMETERS="ro earlycon"
	#U_BOOT_ROOT=""
	#U_BOOT_TIMEOUT="50"
	U_BOOT_FDT="/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/rk3588-orangepi-5-max.dtb"
	#U_BOOT_FDT_DIR="/lib/firmware/"
	U_BOOT_FDT_OVERLAYS="rk3588-can0-m0.dtbo rk3588-can1-m0.dtbo"
	U_BOOT_FDT_OVERLAYS_DIR="/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay"
	#U_BOOT_SYNC_DTBS="false"

第一次打开时,默认情况下该文件中每一行都是 #开头,代表被注释的。我们需要取消注释其中两行 U_BOOT_FDT 和 U_BOOT_FDT_OVERLAYS。 后续两个 XXX_DIR 只是用来简化这两行的写法,就可以不写绝对路径了,只写文件名即可。

U_BOOT_FDT 后面填入香橙派型号所对应的 dtb 文件即可,路径可能有不同。U_BOOT_FDT_OVERLAYS 后方填入的内容需要注意的是,可能自带有多个不同的 rk3588-can*-m*.dtbo 文件,需要根据香橙派主板控制手册确定要选择的文件。

比如,我的这个版本系统中搜索

sudo find / -type f -name "*3588*can*.dtbo" 2>/dev/null

## the search result:
/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay/rk3588-can2-m1.dtbo
/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay/rk3588-can1-m0.dtbo
/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay/rk3588-can1-m1.dtbo
/usr/lib/firmware/5.10.0-1012-rockchip/device-tree/rockchip/overlay/rk3588-can0-m0.dtbo

根据 orange pi 5 MAX 的说明文档,其中仅有 can0-m0 和 can1-m0,没有 can0-m1、can1-m1 以及 can2-m1。

所以,上述 u-boot 文件中,我们在 U_BOOT_FDT_OVERLAYS 填入文档中接口所示的 rk3588-can0-m0.dtbo 与 rk3588-can1-m0.dtbo

  1. 然后使用 u-boot-update 命令更新 u-boot 配置文件并重启,命令如下:
sudo u-boot-update

sudo reboot
  1. 重启后,使用 ifconfig -a 查看是否出现 CAN0 与 CAN1 端口。

can0: flags=128<NOARP>  mtu 16
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 104

can1: flags=128<NOARP>  mtu 16
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 10  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 105
  1. 连接 CAN 收发器与 CAN 分析仪(或者其他已配置好的 CAN 设备)

  2. 使用 candump 和 cansend 测试 CAN 通道通讯是否正常。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。