环境配置#
- 操作系统镜像:https://github.com/Joshua-Riek/ubuntu-rockchip/releases/tag/v2.4.0
- 硬件:orangePI 5 max RK3588
操作步骤与说明#
-
使用管理员权限打开 /etc/default/u-boot 文件,该文件是 u-boot 的加载文件,我们的目的是修改设备启动时需要加载的设备树文件。
sudo vim /etc/default/u-boot
-
文件内容修改为:
## /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
- 然后使用 u-boot-update 命令更新 u-boot 配置文件并重启,命令如下:
sudo u-boot-update
sudo reboot
- 重启后,使用 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
-
连接 CAN 收发器与 CAN 分析仪(或者其他已配置好的 CAN 设备)
-
使用 candump 和 cansend 测试 CAN 通道通讯是否正常。