Armadilloフォーラム

ATDE9の開発時のコンパイル(DTCコマンド)について

matsui.k

2024年7月18日 12時50分

 お世話になっております。
Windows11 Home 64bitにて、oracle VM VirtualBox7.0でのATDE9の開発についてお伺い致します。

 現在、COM9-27pinをPWM出力に使用するために
https://armadillo.atmark-techno.com/forum/armadillo/11408
のフォーラムを参考にしてdtsを書き換えているのですが、
「2022年3月25日 15時29分」の部分で
②作成したarmadillo_iotg_g4-at-dtweb.dtsをmkswu/update-dtbフォルダへ移動
とありますが、mkswuフォルダにupdate-dtbフォルダが存在しない場合に
dtsを更新するためにはどのような手順で行えば良いでしょうか。
また、
「2022年3月25日 15時49分」の「そこで、コンパイルする必要があります:」
の部分で DTC コマンドを実行していますが、このコマンドを入力しても
そのようなコマンドが存在しないと言われてしまいます。
DTCがコンパイルのコマンドだとは思うのですが、このコマンドを実行するために
何か設定等が必要なのでしょうか。

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

コメント

matsui.k

2024年7月18日 14時04分

ご回答、ありがとうございます。

DT overlayのビルド(make ARCH~実行)時に、「図3.54 DT overlay を作成する例」に記載が無い
添付の画像の様な選択項目が多数出力されたのですが、こちらで手順は合ってますでしょうか。
カーネルソースがATDE9上にあるため、作業用PCをATDEとして実行しています。

> 佐藤です。
>
> >  現在、COM9-27pinをPWM出力に使用するために
> PWMを使いたいのであれば at-dtweb で設定するのが簡単かと思います。
> 以下のマニュアルを参考に試してみてください。
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

ファイル ファイルの説明
make ARCH実行時のターミナル.png

at_makoto.sato

2024年7月18日 14時21分

佐藤です。

「3.5.1. Linux カーネルソースコードの取得」にある、以下の手順は実行しましたでしょうか。

[ATDE ~/linux-[VERSION]]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- x2_defconfig

matsui.k

2024年7月18日 15時28分

ご回答、ありがとうございます。

ご回答の手順を実行する事で、
「図3.54 DT overlay を作成する例」の
7.reboot
まで進む事が出来ました。ありがとうございます。

> 佐藤です。
>
>
> 「3.5.1. Linux カーネルソースコードの取得」にある、以下の手順は実行しましたでしょうか。
>

> [ATDE ~/linux-[VERSION]]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- x2_defconfig
> 

matsui.k

2024年7月18日 16時23分

すいません、もう1点質問なのですが、

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
図3.54 DT overlay を作成する例
にて、
pwm2 を SPDIF_RX (CON9.28) ピンを有効にする例が記述されていますが、
&iomuxc {
pinctrl_pwm2: pwm2grp {
fsl,pins = <
MX8MP_IOMUXC_SPDIF_RX__PWM2_OUT 0x186
>;
};
};

MX8MP_IOMUXC_SPDIF_RX__PWM2_OUT 0x186
でCON9.28をPWM2の出力として設定していると思われますが、
GPIO5IO03 (CON9.27)ピンをpwm3とする場合は
&iomuxc {
pinctrl_pwm3: pwm3grp {
fsl,pins = <
MX8MP_IOMUXC_SPDIF_TX__GPIO5_IO03 0x186
>;
};
};
で良いでしょうか。

> ご回答、ありがとうございます。
>
> ご回答の手順を実行する事で、
> 「図3.54 DT overlay を作成する例」の
> 7.reboot
> まで進む事が出来ました。ありがとうございます。
>
> > 佐藤です。
> >
> >
> > 「3.5.1. Linux カーネルソースコードの取得」にある、以下の手順は実行しましたでしょうか。
> >

> > [ATDE ~/linux-[VERSION]]$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- x2_defconfig
> > 

at_makoto.sato

2024年7月18日 16時44分

佐藤です。

> すいません、もう1点質問なのです
> MX8MP_IOMUXC_SPDIF_RX__PWM2_OUT 0x186
> でCON9.28をPWM2の出力として設定していると思われますが、
> GPIO5IO03 (CON9.27)ピンをpwm3とする場合は
> &iomuxc {
> pinctrl_pwm3: pwm3grp {
> fsl,pins = <
> MX8MP_IOMUXC_SPDIF_TX__GPIO5_IO03 0x186
> >;
> };
> };
> で良いでしょうか。
"MX8MP_IOMUXC_SPDIF_TX__PWM3_OUT 0x186" にしてみてください。
(すいません。CON9はat-dtwebでは設定できませんでした。勘違いしておりました。)

matsui.k

2024年7月19日 9時36分

1点確認なのですが、
今回作成致しました COM9.27pin を有効化する armadillo_iotg_g4-customize.dtbo ですが、
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
図3.54 DT overlay を作成する例
にて SWUpdate で更新可能のように見受けられます。
アップデートファイルで実行する場合は、
1.linux-[VERION]/arch/arm64/boot/dts/freescalevに armadillo_iotg_g4-customize.dtbo を配置
2.at-dtweb を起動してカーネルディレクトリに linux-[VERSION] を指定して【save】を実行
3.mkswu コマンドで at-dtweb.swu を作成し、USB にコピーして USB を /mnt にマウント
4.armadillo/boot に armadillo_iotg_g4-customize.dtbo を配置
5.armadillo/boot/overlays.txt に fdt_overlays=armadillo_iotg_g4-customize.dtbo を追記
6.armadillo /boot で swupdate_preserve_files -vp overlays.txt \armadillo_iotg_g4-customize.dtbo を実行
7.armadillo 上で swupdate -i /mnt/at-dtweb.swu を実行
の7手順でよろしかったでしょうか。

> 佐藤です。
>
> > すいません、もう1点質問なのです
> > MX8MP_IOMUXC_SPDIF_RX__PWM2_OUT 0x186
> > でCON9.28をPWM2の出力として設定していると思われますが、
> > GPIO5IO03 (CON9.27)ピンをpwm3とする場合は
> > &iomuxc {
> > pinctrl_pwm3: pwm3grp {
> > fsl,pins = <
> > MX8MP_IOMUXC_SPDIF_TX__GPIO5_IO03 0x186
> > >;
> > };
> > };
> > で良いでしょうか。
> "MX8MP_IOMUXC_SPDIF_TX__PWM3_OUT 0x186" にしてみてください。
> (すいません。CON9はat-dtwebでは設定できませんでした。勘違いしておりました。)

at_makoto.sato

2024年7月19日 13時14分

佐藤です。

> 2.at-dtweb を起動してカーネルディレクトリに linux-[VERSION] を指定して【save】を実行
上記実行後、~/mkswu/at-dtweb-Armadillo-IoT_G4 というディレクトリができあがってると思います。
そのディレクトリへ linux-[VERION]/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo をコピーしてください。

[ATDE9]$ cd ~/mkswu/at-dtweb-Armadillo-IoT_G4
[ATDE9]$ cp linux-[VERION]/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo .

次に、at-dtweb.desc を以下のように編集してください。

[ATDE9]$ code at-dtweb.desc
 
swdesc_option component=extra_os.at_dtweb
swdesc_option version=1
 
swdesc_files --dest /boot "armadillo_iotg_g4-at-dtweb.dtbo" "armadillo_iotg_g4-customize.dtbo"
swdesc_script update_overlays.sh -- "armadillo_iotg_g4-at-dtweb.dtbo" "armadillo_iotg_g4-customize.dtbo"
swdesc_script update_preserve_files.sh -- "/boot/armadillo_iotg_g4-at-dtweb.dtbo" "/boot/armadillo_iotg_g4-customize.dtbo"

at-dtwebで、何も設定していないのであれば "armadillo_iotg_g4-at-dtweb.dtbo" の部分は削除してください。

次にswuファイルを作ります。

[ATDE9]$ mkswu at-dtweb.desc

出来上がった、"at-dtweb.swu" は USB メモリでインストールしても良いですが、
ABOSWeb でインストールするほうが楽かと思います。
webブラウザを起動し、https://<armadilloのIP>:58080 へアクセスし
「SWUインストール」のページからインストールできます。

matsui.k

2024年7月19日 14時11分

ご回答ありがとうございます。
ご回答の方法で生成したswuファイルによるswupdateの実行を確認致しました。

立て続けの質問で申し訳ないのですが、
https://armadillo.atmark-techno.com/howto/aiotg4-pwm-buzzer
を参考にpwmchip0/pwm0配下の「period」と「duty_cycle」を設定したのですが、
このechoコマンドで値を設定している処理を、例えば接続しているキーボードの矢印キーに割り当てて
Armadillo起動中にdyty_cycleを動的に変更する、と言った事は可能でしょうか。

> 佐藤です。
>
> > 2.at-dtweb を起動してカーネルディレクトリに linux-[VERSION] を指定して【save】を実行
> 上記実行後、~/mkswu/at-dtweb-Armadillo-IoT_G4 というディレクトリができあがってると思います。
> そのディレクトリへ linux-[VERION]/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo をコピーしてください。
>

> [ATDE9]$ cd ~/mkswu/at-dtweb-Armadillo-IoT_G4
> [ATDE9]$ cp linux-[VERION]/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-customize.dtbo .
> 

>
> 次に、at-dtweb.desc を以下のように編集してください。
>

> [ATDE9]$ code at-dtweb.desc
> 
> swdesc_option component=extra_os.at_dtweb
> swdesc_option version=1
> 
> swdesc_files --dest /boot "armadillo_iotg_g4-at-dtweb.dtbo" "armadillo_iotg_g4-customize.dtbo"
> swdesc_script update_overlays.sh -- "armadillo_iotg_g4-at-dtweb.dtbo" "armadillo_iotg_g4-customize.dtbo"
> swdesc_script update_preserve_files.sh -- "/boot/armadillo_iotg_g4-at-dtweb.dtbo" "/boot/armadillo_iotg_g4-customize.dtbo"
> 

> at-dtwebで、何も設定していないのであれば "armadillo_iotg_g4-at-dtweb.dtbo" の部分は削除してください。
>
> 次にswuファイルを作ります。
>

> [ATDE9]$ mkswu at-dtweb.desc
> 

>
> 出来上がった、"at-dtweb.swu" は USB メモリでインストールしても良いですが、
> ABOSWeb でインストールするほうが楽かと思います。
> webブラウザを起動し、https://<armadilloのIP>:58080 へアクセスし
> 「SWUインストール」のページからインストールできます。

at_makoto.sato

2024年7月19日 15時18分

佐藤です。

> 立て続けの質問で申し訳ないのですが、
> https://armadillo.atmark-techno.com/howto/aiotg4-pwm-buzzer
> を参考にpwmchip0/pwm0配下の「period」と「duty_cycle」を設定したのですが、
> このechoコマンドで値を設定している処理を、例えば接続しているキーボードの矢印キーに割り当てて
> Armadillo起動中にdyty_cycleを動的に変更する、と言った事は可能でしょうか。
たとえばpythonなどでキーイベントを待つプログラムを書き
その中で矢印キーが来たらduty_cycleを更新するというようにする必要があると思います。

あるいは、duty_cycleを書き換えるスクリプトを用意し、buttondを使って矢印キーにそのスクリプトを割り当てるという方法もあります。
buttondについてはマニュアルの以下を参照ください。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

matsui.k

2024年7月19日 16時05分

ご回答ありがとうございます。

ご回答頂いたbuttondのマニュアルにキーボードとbuttondでの処理が記述されておりましたので、
そちらを参考にさせて頂きます。

etc/atmarkにbuttond.conf
が存在しなかったので新規に作成致しますが、
「6.18. ボタンやキーを扱う」を参考にbuttond.confを作成するとしたら内容は
BUTTOND_ARGS="$BUTTOND_ARGS --[押下したキーのパス] --action '[duty_cycleを変更するスクリプト]'"
となると思うのですが、
6.18.2. USB キーボードの対応
の「図6.221 buttond で USB キーボードのイベントを確認する」
で、「一番安定する by-id のパスを控えておきます。」とありますが、

[armadillo ~]# buttond -vvv /dev/input/* /dev/input/by-*/* 1
Skipping directory /dev/input/by-id
Skipping directory /dev/input/by-path
[78972.042] /dev/input/event2 4 4 458976: non-keyboard event ignored
[78972.042] /dev/input/event2 LEFTCTRL (29) pressed: ignored 2
[78972.042] /dev/input/by-id/usb-0566_3029-event-kbd 4 4 458976: non-keyboard event ignored
[78972.042] /dev/input/by-id/usb-0566_3029-event-kbd LEFTCTRL (29) pressed: ignored
[78972.042] /dev/input/by-path/platform-xhci-hcd.1.auto-usb-0:1:1.0-event-kbd 4 4 458976: non-keyboard event ignored
[78972.042] /dev/input/by-path/platform-xhci-hcd.1.auto-usb-0:1:1.0-event-kbd LEFTCTRL (29) pressed: ignored
[78972.130] /dev/input/event2 4 4 458976: non-keyboard event ignored
[78972.130] /dev/input/event2 LEFTCTRL (29) released: ignored
[78972.130] /dev/input/by-id/usb-0566_3029-event-kbd 4 4 458976: non-keyboard event ignored
[78972.130] /dev/input/by-id/usb-0566_3029-event-kbd LEFTCTRL (29) released: ignored
[78972.130] /dev/input/by-path/platform-xhci-hcd.1.auto-usb-0:1:1.0-event-kbd 4 4 458976: non-keyboard event ignored
[78972.130] /dev/input/by-path/platform-xhci-hcd.1.auto-usb-0:1:1.0-event-kbd LEFTCTRL (29) released: ignored

この結果の何を持って安定していると判定しているのでしょうか。

at_makoto.sato

2024年7月19日 16時30分

佐藤です。

> etc/atmarkにbuttond.conf
> が存在しなかったので新規に作成致しますが、
はい、新規作成してください。

> 「6.18. ボタンやキーを扱う」を参考にbuttond.confを作成するとしたら内容は
> BUTTOND_ARGS="$BUTTOND_ARGS --[押下したキーのパス] --action '[duty_cycleを変更するスクリプト]'"
> となると思うのですが、
以下のようになるかなと思います。

BUTTOND_ARGS="$BUTTOND_ARGS -i [by-idのパス]"
BUTTOND_ARGS="$BUTTOND_ARGS --short [押下したキー] --action '[duty_cycleを変更するスクリプト]'"

> この結果の何を持って安定していると判定しているのでしょうか。
by-id はキーボードのブランド・モデルが同一であれば変化しません。
by-pathはUSBハブなどでキーボードを接続した場合、接続したUSBポートによって変化することがあります。
変化しないという点でby-idが安定しているとしています。
(ただ、G4はUSBポートが1個なのでハブを使わない限りは、by-pathでもいいかもしれません。)

matsui.k

2024年7月19日 16時44分

ご回答ありがとうございます。

ご教授頂いた内容を元に、
buttond.confを用いてのduty_cycleを書き換えるスクリプトの呼出しの作成を試みてみます。

重ねて感謝申し上げます。

> 佐藤です。
>
> > etc/atmarkにbuttond.conf
> > が存在しなかったので新規に作成致しますが、
> はい、新規作成してください。
>
> > 「6.18. ボタンやキーを扱う」を参考にbuttond.confを作成するとしたら内容は
> > BUTTOND_ARGS="$BUTTOND_ARGS --[押下したキーのパス] --action '[duty_cycleを変更するスクリプト]'"
> > となると思うのですが、
> 以下のようになるかなと思います。
>

> BUTTOND_ARGS="$BUTTOND_ARGS -i [by-idのパス]"
> BUTTOND_ARGS="$BUTTOND_ARGS --short [押下したキー] --action '[duty_cycleを変更するスクリプト]'"
> 

>
> > この結果の何を持って安定していると判定しているのでしょうか。
> by-id はキーボードのブランド・モデルが同一であれば変化しません。
> by-pathはUSBハブなどでキーボードを接続した場合、接続したUSBポートによって変化することがあります。
> 変化しないという点でby-idが安定しているとしています。
> (ただ、G4はUSBポートが1個なのでハブを使わない限りは、by-pathでもいいかもしれません。)