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
ご回答、ありがとうございます。
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
matsui.k
matsui.k
すいません、もう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
佐藤です。
> すいません、もう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
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
佐藤です。
> 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
ご回答ありがとうございます。
ご回答の方法で生成した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
佐藤です。
> 立て続けの質問で申し訳ないのですが、
> 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
ご回答ありがとうございます。
ご回答頂いた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
佐藤です。
> 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
ご回答ありがとうございます。
ご教授頂いた内容を元に、
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でもいいかもしれません。)
matsui.k
お世話になっております。
ご教授頂きました内容を元に、COM9-27pinの出力を確認する事が出来ました。
ただ、duty_cycleと同じディレクトリにあるperiodについて質問なのですが、
echoコマンドで1,000,000以下を設定しようとするとエラーで弾かれてしまい設定が出来ません。
duty_cycleについては「0 < duty_cycle < period」との仕様があると
https://armadillo.atmark-techno.com/blog/615/4143
にて確認したのですが、periodにもそのような下限の仕様が存在するのでしょうか。
at_makoto.sato
matsui.k
ご回答ありがとうございます。
> 具体的にどのようなエラーが出ましたでしょうか。
> またことのきの、duty_cycleの値とperiodの値はいくつでしょうか。
エラー内容:ash: write error: Invalid argument
duty_cycle:100,000
period:90,000
です。
1点質問なのですが、duty_cycleは「0 < duty_cycle < period」との決まりがあると
https://armadillo.atmark-techno.com/blog/615/4143
のブログで拝見したのですが、periodにもduty_cycleのように値設定時の決まりはございますでしょうか。
また、こちらが試したところ、periodの値はduty_cycleの値が上限になるように見受けられましたが、
この認識で合ってますでしょうか。
at_makoto.sato
佐藤です。
> エラー内容:ash: write error: Invalid argument
> duty_cycle:100,000
> period:90,000
> です。
上記の値だと「0 < duty_cycle < period」を満たさないのでエラーになってると思われます。
> 1点質問なのですが、duty_cycleは「0 < duty_cycle < period」との決まりがあると
> https://armadillo.atmark-techno.com/blog/615/4143
> のブログで拝見したのですが、periodにもduty_cycleのように値設定時の決まりはございますでしょうか。
> また、こちらが試したところ、periodの値はduty_cycleの値が上限になるように見受けられましたが、
> この認識で合ってますでしょうか。
はい、periodの値はduty_cycleの値が上限になります。
duty_cycleとperiodの値は「0 < duty_cycle < period」を満たすように設定してください。
matsui.k
ご回答ありがとうございます。
ご回答の
> 上記の値だと「0 < duty_cycle < period」を満たさないのでエラーになってると思われます。
> はい、periodの値はduty_cycleの値が上限になります。
> duty_cycleとperiodの値は「0 < duty_cycle < period」を満たすように設定してください。
に基づいてperiodとduty_cycleの値を調整致します。
追加で申し訳ないのですが、pwm出力はpwmchipXの
・period
・duty_cycle
・enable
の3種を全て設定したら出力される、の認識で合ってますでしょうか。
例えばperiodとenableのみ設定してduty_cyleは未設定の状態ですとpwmが出力されない、
と言った事も起こりうるのでしょうか。
at_makoto.sato
matsui.k
at_makoto.sato
2024年7月18日 13時18分
佐藤です。
> 現在、COM9-27pinをPWM出力に使用するために
PWMを使いたいのであれば at-dtweb で設定するのが簡単かと思います。
以下のマニュアルを参考に試してみてください。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…