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 通道通訊是否正常。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。