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 の 2 行のコメントを解除する必要があります。後続の 2 つの XXX_DIR はこれら 2 行の記述を簡略化するためのもので、絶対パスを記述する必要はなく、ファイル名だけで済みます。

U_BOOT_FDT の後には、オレンジパイのモデルに対応する dtb ファイルを記入すればよく、パスは異なる場合があります。U_BOOT_FDT_OVERLAYS の後に記入する内容には注意が必要で、複数の異なる rk3588-can*-m*.dtbo ファイルが付属している可能性があるため、オレンジパイのマザーボードの制御マニュアルに基づいて選択するファイルを決定する必要があります。

例えば、私のこのバージョンのシステムで検索すると

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

## 検索結果:
/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

オレンジパイ 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 チャネルの通信が正常かどうかをテストします。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。