Armadilloフォーラム

コンテナ内でのCAN2の利用について

sasaki_iwaya

2024年6月17日 16時12分

コンテナ内でCON9の1・2ピンのCAN2でサーボモータを制御するため、コンテナのネットワーク設定にadd_args--net=hostの設定を追加しております。
CAN2であるためip linkコマンドでリストにcan1が存在することを期待していましたが、以下のようにcan0が存在し、can1が存在しません。

armadillo:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000
    link/ether 00:11:0c:2a:62:87 brd ff:ff:ff:ff:ff:ff
3: can0: <NOARP40000> mtu 16 qdisc noop state DOWN qlen 10
    link/[280]
4: podman0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 22:00:b6:23:36:50 brd ff:ff:ff:ff:ff:ff
5: veth0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master podman0 state UP qlen 1000
    link/ether 0e:d0:a5:41:57:e1 brd ff:ff:ff:ff:ff:ff
6: veth1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master podman0 state UP qlen 1000
    link/ether 92:46:2e:5a:8a:42 brd ff:ff:ff:ff:ff:ff

同様に、コンテナ内プログラムからcan1を操作しようとした場合についてもcan1が存在しないといわれ操作不可です。
一方で、can1はデバイスツリー上設定していないのにもかかわらず、ip linkコマンドでcan1が認識されているのも疑問です。

解決方法についてご教授お願い致します。
参考に、at-dtwebでのCON9ピン設定内容を送付します。

ファイル ファイルの説明
スクリーンショット 2024-06-17 162749.png
コメント

at_dominique.m…

2024年6月17日 17時12分

sasaki_iwayaさん

お世話になっています、
マルティネです。

> コンテナ内でCON9の1・2ピンのCAN2でサーボモータを制御するため、コンテナのネットワーク設定にadd_args--net=hostの設定を追加しております。
> CAN2であるためip linkコマンドでリストにcan1が存在することを期待していましたが、以下のようにcan0が存在し、can1が存在しません。
> 同様に、コンテナ内プログラムからcan1を操作しようとした場合についてもcan1が存在しないといわれ操作不可です。
> 一方で、can1はデバイスツリー上設定していないのにもかかわらず、ip linkコマンドでcan1が認識されているのも疑問です。
>
> 解決方法についてご教授お願い致します。
> 参考に、at-dtwebでのCON9ピン設定内容を送付します。

画像までありがとうございます。

linux の canX インターフェースは設定されているインターフェースの中で 0 から生成されていますので、CAN2 だけを設定した場合は linux上で can0 だけが存在することが正常です。

念のためため、「ls -l /sys/class/net/can0/device」で can0 で操作するデバイスを確認してみてください。
Armadillo 640 で使用している imx6ul では、CAN1 は flexcan@2090000 で CAN2 は flexcan@2094000 になっているはずなので、コマンドを実行した際に 2094000 の方が表示されると思います。

もし時間がございましたら、「CAN1 は can0 で CAN2 は can1」 を期待させた資料を訂正したいと思いますのでよろしければ教えてください。

よろしくお願いします。