Armadilloフォーラム

Armadillo-900のデバイスツリー設定

naito

2025年6月4日 14時55分

==========
製品型番:Armadillo-900
Debian/ABOSバージョン:ABOS 3.21.3-at.9
カーネルバージョン:5.10.236-at2
その他:ATDE9使用
==========

お世話になっております。
内藤と申します。

現在、Armadillo-900で拡張インターフェースを使用するためにデバイスツリーの変更を行っています。

Armadilloの他機種ではデバイスツリーのカスタマイズの際にat-dtwebが利用できるようになっていましたが
ATDE9のat-dtwebではArmadillo-900には対応していないかと思います。

拡張インターフェースを使用する場合、独自にdtsファイルを手書きするしかないのでしょうか。
また今後、at-dtwebでArmadillo-900に対応する予定などございますでしょうか。

勝手を言って申し訳ございません。
以上、よろしくお願いいたします。

コメント

at_kojiro.yamada

2025年6月4日 17時44分

ありがとうございます。

申し訳ないのですが
今のところは at-dtweb を Armadillo-900 に対応させる予定はなく、
手書きでデバイスツリーを作成していただく必要があります。

ざっくりとですが、以下のような考えで at-dtweb 非対応となっています。
・m33-firmware-at と協調させるのが難しい
 (m33-firmware-at について: https://manual.atmark-techno.com/armadillo-900-development-kit/armadill…)
・拡張ボード側の設計をお客様におまかせする都合上、完全に自由にできるよう at-dtweb に対応させると at-dtweb 自体が扱いにくくなる
・自由度が低くて良いなら、個別に作られた dtbo (armadillo_iotg_a9e-sim7672.dtbo など) の手軽さに勝てない

できる限りサポートしますので、わからないところが出てきたらフォーラムで問い合わせていただければ、と思います。

お世話になっております。
内藤です。

ご回答いただきありがとうございます。
Armadillo-900でat-dtweb非対応の理由、納得いたしました。

早速ではありますが、デバイスツリー設定ついて質問させてください。

マルチプレクス機能を使用する際、
armadillo_900-customize.dts に iomuxc の pinctrl を設定すると思うのですが、
「fsl,pins」の値が分かりませんでした。
フォーラム「Armadillo-640へのSPIおよびCANの追加方法」を確認しましたが、
リファレンスマニュアルから各ビットの意味を把握して値を導くしかないのでしょうか。

また、LPSPI1(2803E000)を使うためのDTS設定についても教えていただければ幸いです。

以上、よろしくお願いいたします。

at_kojiro.yamada

2025年6月6日 17時41分

> マルチプレクス機能を使用する際、
> armadillo_900-customize.dts に iomuxc の pinctrl を設定すると思うのですが、
> 「fsl,pins」の値が分かりませんでした。

fsl,pins の書き方は以下のようになっています。

fsl,pins = <
	MX8ULP_PAD_XXXXX__YYYYY ZZZZZ
>;
 
XXXXX: ピンの名前
YYYYY: 機能の名前 (例外: GPIO の場合は YYYYY にピンの名前を書きます)
ZZZZZ: pull up/downなどの設定

MX8ULP_PAD_XXXXX__YYYYY は linux-5.10-at/arch/arm64/boot/dts/freescale/imx8ulp-pinfunc.h で define されています。
include を辿っていけば imx8ulp-pinfunc.h が見つかるはずです。

ZZZZZ の16進数については Pad Control Register (i.MX8ULP Reference Manual の 25 IOMUX Controllerに記載) の各ビットに対応しています。
大分説明が省かれていますが、 linux-5.10-at/arch/arm64/boot/dts/freescale/armadillo_900.dts のコメント(以下に抜粋)も参考になると思います。

&iomuxc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_customize>;
 
        /* pinctrl memo
         * 0x7c00000 deglitch window
         * 0x200000 digital filter clock select (0=PCTL*, 1=RTC 1kHz)
         * 0x100000 digital filter
         * 0x20000 output buffer enable
         * 0x10000 input buffer enable
         * 0x40 high drive strength
         * 0x20 open drain
         * 0x4 slew rate
         * 0x2 pull-up enable
         * 0x1 pull-up selection (0=pull down)
         */

----------

デバイスツリーの書き方は、基本的には Documentation/devicetree/bindings の下にあるテキストファイルに書かれています。
今回の場合は、 linux-5.10-at/Documentation/devicetree/bindings/pinctrl/fsl,imx8ulp-pinctrl.yaml になります。(i.MX8ULP Reference Manualを参照するよう書かれています)
1次ソースを確認したい場合はそちらを参照していただければ、と思います。

----------

もう1点、 imx8ulp の m33 側のピンは iomuxc1 ではなく、
rpmsg_gpioa, rpmsg_gpiob, rpmsg_gpioc に設定します。

これらはアットマークテクノが追加実装したもので、 iomuxc1 とは書き方が異なります。
Documentation/devicetree/bindings に使い方を追加していないため、わからないことがあったらフォーラムで聞いていただければ、と思います。

&rpmsg_gpioa {
        AAAAA {
                imx-rpmsg,pins = <
                        IOMUXC_XXXXX_YYYYY	ZZZZZ
 
                >;
        };
};
 
AAAAA: 名前(何でも良いです)
XXXXX: ピンの名前
YYYYY: 機能の名前 (例外: GPIO の場合は YYYYY にピンの名前を書きます)
ZZZZZ: pull up/downなどの設定

マクロの定義は linux-5.10-at/arch/arm64/boot/dts/freescale/imx8ulp-pinfunc-m33.h にあります。

linux-5.10-at/arch/arm64/boot/dts/freescale/armadillo_900*.dts や
linux-5.10-at/arch/arm64/boot/dts/freescale/armadillo_iotg_a9e*.dts が参考になると思います。
(注: GPIO として使う場合は自動的にピンの設定が行われるため、 GPIO として使っているピンの設定は省略されていることがあります。)

> また、LPSPI1(2803E000)を使うためのDTS設定についても教えていただければ幸いです。

申し訳ありません。
LPSPI0, LPSPI1 は、m33-firmware-at の対応がまだのため、現在は使えません。
ちょうど、今月末 (2025/6月末) に LPSPI0,1,2,3 の対応をリリースできる見込みですので、もう少々お待ちください。

ただ、現状でもSPI通信がまったくできないわけではなく、GPIO で再現した SPI は使用できます。
linux-5.10-at/arch/arm64/boot/dts/freescale/armadillo_iotg_a9e-lbes5pl2el.dts で既に使われているので、そちらが参考になります。

以上、よろしくお願いします。