環境配置#
- 操作系統鏡像: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 通道通訊是否正常。