Armadilloフォーラム

デバイスツリーファイルについて

yasuda0108

2021年12月23日 16時36分

「9.1.4章 入出力デバイスを扱う」にて、「デバイスツリーファイルを適切に設定してください」とありますが、
設定方法はどこかに記載がありますでしょうか。

https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

コメント

アットマークテクノの古賀です。

yasuda0108さん:
>「9.1.4章 入出力デバイスを扱う」にて、「デバイスツリーファイルを適切に設定してください」とありますが、
>設定方法はどこかに記載がありますでしょうか。
>
>https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

デバイスツリーファイルの内容変更ということであれば、「9.8. Device Treeをカスタマイズする」をご覧になってみて下さい:
 https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
いかがでしょうか?

お世話になっております。安田です。

ご情報ありがとうございます。
こちらで生成したDTS/DTBファイルは、どのようにボードに反映させるのでしょうか?

入江です。

> こちらで生成したDTS/DTBファイルは、どのようにボードに反映させるのでしょうか?

SWUpdateを用いて更新します。

SWUpdateの使用方法については、以下のマニュアルを参照してください。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

SWUpdateを用いてArmadillo上のdtbを書き換える方法の一例は以下のとおりです。
以下の例では、書き込みたいdtbの名前をoriginal.dtbとしています。

[ATDE ~/]$ cd swupdate-mkimage
[ATDE ~/swupdate-mkimage]$ mkdir update-dtb # 作業ディレクトリ作成
[ATDE ~/swupdate-mkimage]$ cp examples/kernel_update_plain.desc \
/path/to/original.dtb \
update-dtb/ # サンプルのdescファイルと、Armadiiloに配置したいdtbをコピー
[ATDE ~/swupdate-mkimage]$ ln -s armadillo_iotg_g4-nousb.dtb update-dtb/armadillo.dtb # armadillo.dtbというdtbへのsymlinkを作成
[ATDE ~/swupdate-mkimage]$ vi update-dtb/kernel_update_plain.desc # サンプルのdescファイルを編集(以下の★の行を書き換える)
[ATDE ~/swupdate-mkimage]$ cat update-dtb/kernel_update_plain.desc # 以下、編集後のdescファイル
# write over files in /boot
# any different version from current system's (based on sw-versions)
# will be installed
swdesc_files --version extra_os.kernel 5.10.0-1 --dest /boot \
"original.dtb" "armadillo.dtb" ★この行を書き換え
 
# add the kernel to files to be preserved on OS update
swdesc_command --version extra_os.kernel 5.10.0-1 \
        'grep -qE "^POST /boot" /etc/swupdate_preserve_files || echo -e "POST /boot/original.dtb\nPOST /boot/armadillo.dtb" >> /etc/swupdate_preserve_files' ★この行を書き換え
 
[ATDE ~/swupdate-mkimage]$ ./mkimage.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc # swuイメージ生成
[ATDE ~/swupdate-mkimage]$ ls update-dtb.swu # 生成されたことを確認する
update-dtb.swu

出来上がったupdate-dtb.swuは、USBメモリや、webサーバを経由して
Armadilloのアップデートに使用できます。
SWUpdateの実行方法についても、製品マニュアルを参照してください。

以上です。

情報のご教示ありがとうございます。
いただいた内容を元に、デバイスツリーファイルの作成を進めさせて頂きます。

お世話になります。
update-dtb.swuの作成を試みているのですが、ご教示いただいた例の「mkimage.sh」が存在しません(find / で見つかりません)。
ディレクトリ内にあった「swupdate_post.sh」を実行してみましたが、エラ-が出ます。
解決方法をお教えいただけますでしょうか。

以下現在の状況です。

#ディレクトリ構成
atmark@atde9:/usr/share/mkswu$ ls
examples  hawkbit  mkswu.conf.defaults  scripts  swupdate-onetime-public.key  swupdate-onetime-public.pem  swupdate_post.sh  update-dtb
 
#update-dtb構成
atmark@atde9:/usr/share/mkswu$ ls -l update-dtb
合計 68
lrwxrwxrwx 1 root root    92  2月 14 13:41 armadillo.dtb -> /home/atmark/linux-5.10-5.10.93-r0/arch/arm64/boot/dts/freescale/armadillo_iotg_g4-nousb.dtb
-rw-r--r-- 1 root root 59915  2月 14 13:35 armadillo_iotg_g4-at-dtweb.dtb #デバイスツリーの作成で生成
-rw-r--r-- 1 root root  1093  2月 14 13:25 kernel_update_plain.desc
 
#.desc編集内容
atmark@atde9:/usr/share/mkswu$ sudo cat update-dtb/kernel_update_plain.desc
# We expose `--install-if different` here in two different ways for
# demonstration purpose (either using the switch or setting the variable)
# Anything below the variable being set will have the switch automatically
# set unless they specify --install-if higher manually
# Note that if a component is installed in both modes, the swu generation
# will fail.
 
 
# write over files in /boot
swdesc_files --version extra_os.kernel 5.10.82-1 \
	--install-if different --dest /boot \
	"armadillo_iotg_g4-at-dtweb.dtb "armadillo.dtb"
 
install_if=different
# if you have modules, also remove old ones and ship new ones
swdesc_command --version extra_os.kernel 5.10.82-1 \
	'rm -rf /lib/modules'
# (install with INSTALL_MOD_PATH=..../inst make modules_install)
swdesc_files --version extra_os.kernel 5.10.82-1 --dest /lib/modules \
	"inst/lib/modules"
 
# add the kernel to files to be preserved on OS update
swdesc_command --version extra_os.kernel 5.10.82-1 \
        'grep -qE "^POST /boot" /etc/swupdate_preserve_files || echo -e "POST /boot/armadillo_iotg_g4-at-dtweb.dtb\nPOST /boot/armadillo.dtb" >> /etc/swupdate_preserve_files'
 
#エラ-内容
atmark@atde9:/usr/share/mkswu$ ./mkimage.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc
bash: ./mkimage.sh: そのようなファイルやディレクトリはありません
 
#ディレクトリ内にあったswupdate_post.shを実行
atmark@atde9:/usr/share/mkswu$ ./swupdate_post.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc
./swupdate_post.sh: 6: .: cannot open /var/tmp/scripts/common.sh: No such file

> 入江です。
>
> > こちらで生成したDTS/DTBファイルは、どのようにボードに反映させるのでしょうか?
>
> SWUpdateを用いて更新します。
>
> SWUpdateの使用方法については、以下のマニュアルを参照してください。
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
>
> SWUpdateを用いてArmadillo上のdtbを書き換える方法の一例は以下のとおりです。
> 以下の例では、書き込みたいdtbの名前をoriginal.dtbとしています。
>
>

> [ATDE ~/]$ cd swupdate-mkimage
> [ATDE ~/swupdate-mkimage]$ mkdir update-dtb # 作業ディレクトリ作成
> [ATDE ~/swupdate-mkimage]$ cp examples/kernel_update_plain.desc \
> /path/to/original.dtb \
> update-dtb/ # サンプルのdescファイルと、Armadiiloに配置したいdtbをコピー
> [ATDE ~/swupdate-mkimage]$ ln -s armadillo_iotg_g4-nousb.dtb update-dtb/armadillo.dtb # armadillo.dtbというdtbへのsymlinkを作成
> [ATDE ~/swupdate-mkimage]$ vi update-dtb/kernel_update_plain.desc # サンプルのdescファイルを編集(以下の★の行を書き換える)
> [ATDE ~/swupdate-mkimage]$ cat update-dtb/kernel_update_plain.desc # 以下、編集後のdescファイル
> # write over files in /boot
> # any different version from current system's (based on sw-versions)
> # will be installed
> swdesc_files --version extra_os.kernel 5.10.0-1 --dest /boot \
> "original.dtb" "armadillo.dtb" ★この行を書き換え
> 
> # add the kernel to files to be preserved on OS update
> swdesc_command --version extra_os.kernel 5.10.0-1 \
>         'grep -qE "^POST /boot" /etc/swupdate_preserve_files || echo -e "POST /boot/original.dtb\nPOST /boot/armadillo.dtb" >> /etc/swupdate_preserve_files' ★この行を書き換え
> 
> [ATDE ~/swupdate-mkimage]$ ./mkimage.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc # swuイメージ生成
> [ATDE ~/swupdate-mkimage]$ ls update-dtb.swu # 生成されたことを確認する
> update-dtb.swu
> 

>
> 出来上がったupdate-dtb.swuは、USBメモリや、webサーバを経由して
> Armadilloのアップデートに使用できます。
> SWUpdateの実行方法についても、製品マニュアルを参照してください。
>
> 以上です。
>

at_dominique.m…

2022年2月14日 15時04分

お世話になってます。
アットマークテクノのマルティネです。

> #エラ-内容
> atmark@atde9:/usr/share/mkswu$ ./mkimage.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc
> bash: ./mkimage.sh: そのようなファイルやディレクトリはありません
> 
> #ディレクトリ内にあったswupdate_post.shを実行
> atmark@atde9:/usr/share/mkswu$ ./swupdate_post.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc
> ./swupdate_post.sh: 6: .: cannot open /var/tmp/scripts/common.sh: No such file

分かりにくくて申し訳ございません、1月のアップデートで mkimage.sh は mkswu にリネームされました。「./mkimage.sh」の代わりに「mkswu」を使っていただければイメージ作成できるはずです。
「/usr/share/mkswu」が存在するので、すでにインストールして以前作成していただいた証明鍵を「mkswu --import」でロードしていただきましたね?

なお、atmarkのユーザーが/usr/share/mkswuに書き込む権利がないので、変更したファイルをホームか ~/mkswu にコピーした方がスムースに使えると思います。

新しいマニュアルはこちらです:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

お手数ですが、確認の上まだエラーがありましたらまたご連絡ください。

早速のご回答ありがとうございます。
ご指摘の通り、~/mkswuに作成したupdate-dtbをコピーし、mkswuを実行しましたが、エラーとなりました。
ご対応方法をお教えいただけますでしょうか。

#update-dtbフォルダごとコピー
atmark@atde9:~$ cd /home/atmark/mkswu
atmark@atde9:~/mkswu$ ls
initial_setup.desc  initial_setup.swu  mkswu.conf  swupdate.aes-key  swupdate.key  swupdate.pem  update-dtb
 
#.swu作成エラ-
atmark@atde9:~/mkswu$ mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
/usr/bin/mkswu: 25: ./kernel_update_plain.desc: Syntax error: Unterminated quoted string
 
#マニュアル参考に実行でエラ-
atmark@atde9:~/mkswu$ mkswu initial_setup.desc update-dtb/kernel_update_plain.desc
/usr/bin/mkswu: 25: ./kernel_update_plain.desc: Syntax error: Unterminated quoted string

ちなみにですが、マニュアル9.7.2-1 tipsに記載の「mkswu」とはどのようなコマンドなのでしょうか。

> お世話になってます。
> アットマークテクノのマルティネです。
>
>

> > #エラ-内容
> > atmark@atde9:/usr/share/mkswu$ ./mkimage.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc
> > bash: ./mkimage.sh: そのようなファイルやディレクトリはありません
> > 
> > #ディレクトリ内にあったswupdate_post.shを実行
> > atmark@atde9:/usr/share/mkswu$ ./swupdate_post.sh -o update-dtb.swu update-dtb/kernel_update_plain.desc
> > ./swupdate_post.sh: 6: .: cannot open /var/tmp/scripts/common.sh: No such file
> 

>
> 分かりにくくて申し訳ございません、1月のアップデートで mkimage.sh は mkswu にリネームされました。「./mkimage.sh」の代わりに「mkswu」を使っていただければイメージ作成できるはずです。
> 「/usr/share/mkswu」が存在するので、すでにインストールして以前作成していただいた証明鍵を「mkswu --import」でロードしていただきましたね?
>
> なお、atmarkのユーザーが/usr/share/mkswuに書き込む権利がないので、変更したファイルをホームか ~/mkswu にコピーした方がスムースに使えると思います。
>
> 新しいマニュアルはこちらです:
> https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…
>
> お手数ですが、確認の上まだエラーがありましたらまたご連絡ください。
>

at_dominique.m…

2022年2月14日 16時27分

yasuda0108さん、

> atmark@atde9:~/mkswu$ mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
> /usr/bin/mkswu: 25: ./kernel_update_plain.desc: Syntax error: Unterminated quoted string

このエラーですと、kernel_update_plain.descファイルのどこかに終端されてない文字列があります。

先ほどに表示されたファイルを拝見したところ、この部分ですね:

swdesc_files --version extra_os.kernel 5.10.82-1 \
	--install-if different --dest /boot \
	"armadillo_iotg_g4-at-dtweb.dtb "armadillo.dtb"

「"armadillo_iotg_g4-at-dtweb.dtb」を「armadillo_iotg_g4-at-dtweb.dtb」か「"armadillo_iotg_g4-at-dtweb.dtb"」にしないと読み取れません。

> ちなみにですが、マニュアル9.7.2-1 tipsに記載の「mkswu」とはどのようなコマンドなのでしょうか。

「mkswu --import」で ~/swupdate-mkimage にあらかじめ作成された証明鍵(今 ~/mkswu/swupdate.key, swupdate.pem, swupdate.aes-key)とコンフィグファイル(今 ~/mkswu/mkswu.conf) をコピーして、mkswuでイメージ作成ができたら ~/swupdate-mkimage を安全に消すことができます。

swuイメージをまだインストールしなかった場合は必要のないコマンドですが、initial_setup.swuは(初期化しないかぎり)一度しか使えないので、鍵をなくさないように注意が必要です。
(なくした場合、手動でarmadilloの/etc/swupdate.pemと/etc/swupdate.aes-keyを更新する必要がありますので、致命的ではないが手間がかかります)

よろしくお願いします。

ご回答ありがとうございます。
初歩的なミスがあり、大変失礼致しました。

修正後に実行しましたが、下記のエラ-が発生します。
お手数ですがご確認いただけますでしょうか。

atmark@atde9:~/mkswu$ pwd
/home/atmark/mkswu
 
atmark@atde9:~/mkswu$ mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
ERROR: inst/lib/modules が存在しません。
atmark@atde9:~/mkswu$ sudo mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
ERROR: コンフィグファイルが見つかりませんでした。 mkswu --init で作成してください。
 
atmark@atde9:~/mkswu$ ls
initial_setup.desc  initial_setup.swu  mkswu.conf  swupdate.aes-key  swupdate.key  swupdate.pem  update-dtb

また、mkswuコマンドについて、ご説明ありがとうございました。

> yasuda0108さん、
>
>

> > atmark@atde9:~/mkswu$ mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
> > /usr/bin/mkswu: 25: ./kernel_update_plain.desc: Syntax error: Unterminated quoted string
> 

>
> このエラーですと、kernel_update_plain.descファイルのどこかに終端されてない文字列があります。
>
> 先ほどに表示されたファイルを拝見したところ、この部分ですね:
>

> swdesc_files --version extra_os.kernel 5.10.82-1 \
> 	--install-if different --dest /boot \
> 	"armadillo_iotg_g4-at-dtweb.dtb "armadillo.dtb"
> 

> 「"armadillo_iotg_g4-at-dtweb.dtb」を「armadillo_iotg_g4-at-dtweb.dtb」か「"armadillo_iotg_g4-at-dtweb.dtb"」にしないと読み取れません。
>
>
> > ちなみにですが、マニュアル9.7.2-1 tipsに記載の「mkswu」とはどのようなコマンドなのでしょうか。
>
> 「mkswu --import」で ~/swupdate-mkimage にあらかじめ作成された証明鍵(今 ~/mkswu/swupdate.key, swupdate.pem, swupdate.aes-key)とコンフィグファイル(今 ~/mkswu/mkswu.conf) をコピーして、mkswuでイメージ作成ができたら ~/swupdate-mkimage を安全に消すことができます。
>
> swuイメージをまだインストールしなかった場合は必要のないコマンドですが、initial_setup.swuは(初期化しないかぎり)一度しか使えないので、鍵をなくさないように注意が必要です。
> (なくした場合、手動でarmadilloの/etc/swupdate.pemと/etc/swupdate.aes-keyを更新する必要がありますので、致命的ではないが手間がかかります)
>
> よろしくお願いします。

at_dominique.m…

2022年2月15日 13時52分

マルティネです。

> atmark@atde9:~/mkswu$ mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
> ERROR: inst/lib/modules が存在しません。

あ、入江さんの desc ファイルではなく新しいバージョンの kernel_update_plain.desc から作りましたね。説明されてからアップデートが挟まって説明の時から差ができました。
このエラーはただ、kernel_update_plain.desc に 「swdesc_files ... inst/lib/modules」でinst/lib/modulesディレクトリを組み込む命令があるのにファイルが存在しないというエラーですね。
yasuda0108さんはカーネルのアップデートしたいわけではないので、この部分は不要です。

armadillo_iotg_g4-at-dtweb.dtb を送りたい場合は例えば以下のコマンドをdescファイルに記載してください。

# 起動するdtbの選択するarmadillo.dtbリンクと
# 作成したdtbファイルを送ります
swdesc_files --version extra_os.kernel 5.10.0-1 --dest /boot \
    armadillo.dtb armadillo_iotg_g4-at-dtweb.dtb
 
# 作成したdtbファイルがアップデートで消されないように
# 保存設定ファイルに記載します
swdesc_command --version extra_os.preserve_dtb 1 \
    'echo /boot/armadillo_iotg_g4-at-dtweb.dtb >> /etc/swupdate_preserve_files'

また、update-dtbのarmadillo.dtbのリンクが/home/...のパスへリンクするのでarmadilloに送っても動かないと思います。作成し直してからmkswuでイメージを作成してください。

atmark@atde9:~/mkswu$ rm -f update-dtb/armadillo.dtb 
atmark@atde9:~/mkswu$ ln -s armadillo_iotg_g4-at-dtweb.dtb update-dtb/armadillo.dtb
atmark@atde9:~/mkswu$ ls -l update-dtb/
合計 84
lrwxrwxrwx 1 atmark atmark    30  2月 15 13:42 armadillo.dtb -> armadillo_iotg_g4-at-dtweb.dtb
-rw-r--r-- 1 atmark atmark 78032  2月 15 13:38 armadillo_iotg_g4-at-dtweb.dtb
-rw-r--r-- 1 atmark atmark   470  2月 15 13:44 update_dtb.desc
atmark@atde9:~/mkswu$ mkswu update-dtb/update_dtb.desc 
update-dtb/update_dtb.swu を作成しました。

このswuをインストールしたら、armadilloの/bootを確認して無事に新しいdtbが入ってる(armadillo.dtbのリンク先)かどうかを確認してください。何かアップデートで再起動できなくなる場合は自動的にインストール前のシステムに戻りますので、swupdateが成功しても最終確認が必要です。

> atmark@atde9:~/mkswu$ sudo mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
> ERROR: コンフィグファイルが見つかりませんでした。 mkswu --init で作成してください。

こちらのエラーはただ root ユーザの環境で証明鍵等の設定ファイルが作成されなかっただけです。mkswu に sudo が必要ないので、無視してください。

よろしくお願いします。

ご回答ありがとうございます。
ご指摘いただいた通り試してみましたが、エラ-が出力されてしまいます。
どこか内容に不備がありますでしょうか。

以下現在の状況です。

#作業ディレクトリ
atmark@atde9:~/mkswu$ pwd
/home/atmark/mkswu
atmark@atde9:~/mkswu$ ls
initial_setup.desc  initial_setup.swu  mkswu.conf  swupdate.aes-key  swupdate.key  swupdate.pem  update-dtb
atmark@atde9:~/mkswu$ ls -l update-dtb
合計 64
lrwxrwxrwx 1 root root    30  2月 16 08:49 armadillo.dtb -> armadillo_iotg_g4-at-dtweb.dtb
-rw-r--r-- 1 root root 59915  2月 14 15:16 armadillo_iotg_g4-at-dtweb.dtb
-rw-r--r-- 1 root root   690  2月 16 09:37 kernel_update_plain.desc
 
#.descファイル書き換え後内容
atmark@atde9:~/mkswu$ cat update-dtb/kernel_update_plain.desc
# We expose `--install-if different` here in two different ways for
# demonstration purpose (either using the switch or setting the variable)
# Anything below the variable being set will have the switch automatically
# set unless they specify --install-if higher manually
# Note that if a component is installed in both modes, the swu generation
# will fail.
 
 
# armadillo.dtb link send カーネルバージョンは元記載あったものを使用
swdesc_files --version extra_os.kernel 5.10.82-1 --dest /boot\ 
	armadillo.dtb armadillo_iotg_g4-at-dtweb.dtb
 
# add the kernel to files to be preserved on OS update
swdesc_command --version extra_os.preserve_dtb 1  \
        'echo /boot/armadillo_iotg_g4-at-dtweb.dtb >> /etc/swupdate_preserve_files'
 
#mkswu実行
atmark@atde9:~/mkswu$ mkswu update-dtb/kernel_update_plain.desc
mkdir: ディレクトリ `update-dtb/.kernel_update_plain' を作成できません: 許可がありません

ご指摘内容の下記コード記載の、「update-dtb/update_dtb.desc」が存在しない為、
元々exampleからコピーしていた「kernel_update_plain.desc」の内容を変更しています。
※renameはエラ-がでてできませんでした。

> マルティネです。
>
>

> > atmark@atde9:~/mkswu$ mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
> > ERROR: inst/lib/modules が存在しません。
> 

>
> あ、入江さんの desc ファイルではなく新しいバージョンの kernel_update_plain.desc から作りましたね。説明されてからアップデートが挟まって説明の時から差ができました。
> このエラーはただ、kernel_update_plain.desc に 「swdesc_files ... inst/lib/modules」でinst/lib/modulesディレクトリを組み込む命令があるのにファイルが存在しないというエラーですね。
> yasuda0108さんはカーネルのアップデートしたいわけではないので、この部分は不要です。
>
> armadillo_iotg_g4-at-dtweb.dtb を送りたい場合は例えば以下のコマンドをdescファイルに記載してください。
>

> # 起動するdtbの選択するarmadillo.dtbリンクと
> # 作成したdtbファイルを送ります
> swdesc_files --version extra_os.kernel 5.10.0-1 --dest /boot \
>     armadillo.dtb armadillo_iotg_g4-at-dtweb.dtb
> 
> # 作成したdtbファイルがアップデートで消されないように
> # 保存設定ファイルに記載します
> swdesc_command --version extra_os.preserve_dtb 1 \
>     'echo /boot/armadillo_iotg_g4-at-dtweb.dtb >> /etc/swupdate_preserve_files'
> 

>
> また、update-dtbのarmadillo.dtbのリンクが/home/...のパスへリンクするのでarmadilloに送っても動かないと思います。作成し直してからmkswuでイメージを作成してください。
>

> atmark@atde9:~/mkswu$ rm -f update-dtb/armadillo.dtb 
> atmark@atde9:~/mkswu$ ln -s armadillo_iotg_g4-at-dtweb.dtb update-dtb/armadillo.dtb
> atmark@atde9:~/mkswu$ ls -l update-dtb/
> 合計 84
> lrwxrwxrwx 1 atmark atmark    30  2月 15 13:42 armadillo.dtb -> armadillo_iotg_g4-at-dtweb.dtb
> -rw-r--r-- 1 atmark atmark 78032  2月 15 13:38 armadillo_iotg_g4-at-dtweb.dtb
> -rw-r--r-- 1 atmark atmark   470  2月 15 13:44 update_dtb.desc
> atmark@atde9:~/mkswu$ mkswu update-dtb/update_dtb.desc 
> update-dtb/update_dtb.swu を作成しました。
> 

>
> このswuをインストールしたら、armadilloの/bootを確認して無事に新しいdtbが入ってる(armadillo.dtbのリンク先)かどうかを確認してください。何かアップデートで再起動できなくなる場合は自動的にインストール前のシステムに戻りますので、swupdateが成功しても最終確認が必要です。
>
>

> > atmark@atde9:~/mkswu$ sudo mkswu -o update-dtb.swu update-dtb/kernel_update_plain.desc
> > ERROR: コンフィグファイルが見つかりませんでした。 mkswu --init で作成してください。
> 

> こちらのエラーはただ root ユーザの環境で証明鍵等の設定ファイルが作成されなかっただけです。mkswu に sudo が必要ないので、無視してください。
>
> よろしくお願いします。

at_dominique.m…

2022年2月16日 10時41分

yasuda0108さん、

> #mkswu実行
> atmark@atde9:~/mkswu$ mkswu update-dtb/kernel_update_plain.desc
> mkdir: ディレクトリ `update-dtb/.kernel_update_plain' を作成できません: 許可がありません

一時的な処理のために `update-dtb/.kernel_update_plain` を作成しようとしましたが、エラーに書いてあるとおりにmkdirの許可がありません。

「ls -l update-dtb」の出力をみると、このディレクトリはrootユーザーのものなので、atmarkユーザーでは許可がたりてないですね。以前/usr/share/mkswuに変更を行っていたのでその時の影響でしょう。
このディレクトリを「chown」で atmark ユーザーに譲るとイメージ作成ができると思います。以下のコマンドで直してからもう一度mkswuを試してみてください。

sudo chown -R atmark: /home/atmark/mkswu

よろしくお願いします

ありがとうございます。
権限移行し実行しましたが、下記エラ-が出力されます。
.descの記述内容が問題あるのでしょうか。

#error
atmark@atde9:~/mkswu$ mkswu update-dtb/kernel_update_plain.desc
ERROR: Usage: swdesc_files [options] file [files...]
 
#kernel_update_plain.desc
atmark@atde9:~/mkswu$ cat update-dtb/kernel_update_plain.desc
# We expose `--install-if different` here in two different ways for
# demonstration purpose (either using the switch or setting the variable)
# Anything below the variable being set will have the switch automatically
# set unless they specify --install-if higher manually
# Note that if a component is installed in both modes, the swu generation
# will fail.
 
 
# armadillo.dtb link send 
swdesc_files --version extra_os.kernel 5.10.82-1 --dest /boot\ 
	armadillo.dtb armadillo_iotg_g4-at-dtweb.dtb
 
# add the kernel to files to be preserved on OS update
swdesc_command --version extra_os.preserve_dtb 1  \
        'echo /boot/armadillo_iotg_g4-at-dtweb.dtb >> /etc/swupdate_preserve_files'

> yasuda0108さん、
>
>

> > #mkswu実行
> > atmark@atde9:~/mkswu$ mkswu update-dtb/kernel_update_plain.desc
> > mkdir: ディレクトリ `update-dtb/.kernel_update_plain' を作成できません: 許可がありません
> 

>
> 一時的な処理のために `update-dtb/.kernel_update_plain` を作成しようとしましたが、エラーに書いてあるとおりにmkdirの許可がありません。
>
> 「ls -l update-dtb」の出力をみると、このディレクトリはrootユーザーのものなので、atmarkユーザーでは許可がたりてないですね。以前/usr/share/mkswuに変更を行っていたのでその時の影響でしょう。
> このディレクトリを「chown」で atmark ユーザーに譲るとイメージ作成ができると思います。以下のコマンドで直してからもう一度mkswuを試してみてください。
>
>

> sudo chown -R atmark: /home/atmark/mkswu
> 

>
> よろしくお願いします

.descに半角スペースが存在していました。
無事swuファイル作成に成功しました。
ご丁寧にご対応ありがとうございました。

> ありがとうございます。
> 権限移行し実行しましたが、下記エラ-が出力されます。
> .descの記述内容が問題あるのでしょうか。
>
>

> #error
> atmark@atde9:~/mkswu$ mkswu update-dtb/kernel_update_plain.desc
> ERROR: Usage: swdesc_files [options] file [files...]
> 
> #kernel_update_plain.desc
> atmark@atde9:~/mkswu$ cat update-dtb/kernel_update_plain.desc
> # We expose `--install-if different` here in two different ways for
> # demonstration purpose (either using the switch or setting the variable)
> # Anything below the variable being set will have the switch automatically
> # set unless they specify --install-if higher manually
> # Note that if a component is installed in both modes, the swu generation
> # will fail.
> 
> 
> # armadillo.dtb link send 
> swdesc_files --version extra_os.kernel 5.10.82-1 --dest /boot\ 
> 	armadillo.dtb armadillo_iotg_g4-at-dtweb.dtb
> 
> # add the kernel to files to be preserved on OS update
> swdesc_command --version extra_os.preserve_dtb 1  \
>         'echo /boot/armadillo_iotg_g4-at-dtweb.dtb >> /etc/swupdate_preserve_files'
> 
> 

>
> > yasuda0108さん、
> >
> >

> > > #mkswu実行
> > > atmark@atde9:~/mkswu$ mkswu update-dtb/kernel_update_plain.desc
> > > mkdir: ディレクトリ `update-dtb/.kernel_update_plain' を作成できません: 許可がありません
> > 

> >
> > 一時的な処理のために `update-dtb/.kernel_update_plain` を作成しようとしましたが、エラーに書いてあるとおりにmkdirの許可がありません。
> >
> > 「ls -l update-dtb」の出力をみると、このディレクトリはrootユーザーのものなので、atmarkユーザーでは許可がたりてないですね。以前/usr/share/mkswuに変更を行っていたのでその時の影響でしょう。
> > このディレクトリを「chown」で atmark ユーザーに譲るとイメージ作成ができると思います。以下のコマンドで直してからもう一度mkswuを試してみてください。
> >
> >

> > sudo chown -R atmark: /home/atmark/mkswu
> > 

> >
> > よろしくお願いします

初歩的な質問が続き、失礼いたします。

マニュアルの9.8.2 2.Linux カーネルディレクトリの選択にて、
「コンフィギュレーション済みの Linux カーネルディレクトリを選択」とありますが、
こちらはどのような手順で用意するのでしょうか。

現状は下記の状態です。
PC:ATDE9初期状態(at-dtwebインストール済)
Armadillo-G4:localhost/at-debian-image v1.0.0からコンテナ作成済

at_akihito.irie

2022年2月8日 10時59分

入江です。

> マニュアルの9.8.2 2.Linux カーネルディレクトリの選択にて、
> 「コンフィギュレーション済みの Linux カーネルディレクトリを選択」とありますが、
> こちらはどのような手順で用意するのでしょうか。

マニュアルの以下の箇所を実行していただくと当該ディレクトリを用意できます。
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

ありがとうございます。
無事デバイスツリーの設定が実行できました。

ビルド後のDTS/DTBファイルですが、マニュアルに記載のリンク内容/ファイル名と若干異なりますが、問題ございませんでしょうか。
【マニュアル】

[ATDE ~/linux-5.10]$ ls arch/arm64/boot/dts/armadillo-iotg-g4-expansion-interface.dtsi
armadillo-iotg-g4-expansion-interface.dtsi
[ATDE ~/linux-5.10]$ ls arch/arm64/boot/dts/armadillo_iotg_g4-at-dtweb.dtb
armadillo_iotg_g4-at-dtweb.dtb

【生成データ】

atmark@atde9:~/linux-5.10-5.10.93-r0$ ls arch/arm64/boot/dts/freescale/armadillo_iotg_g4-expansion-interface.dtsi
arch/arm64/boot/dts/freescale/armadillo_iotg_g4-expansion-interface.dtsi
atmark@atde9:~/linux-5.10-5.10.93-r0$ ls arch/arm64/boot/dts/freescale/armadillo_iotg_g4-at-dtweb.dtb
arch/arm64/boot/dts/freescale/armadillo_iotg_g4-at-dtweb.dtb

at_akihito.irie

2022年2月9日 9時57分

入江です。

> ビルド後のDTS/DTBファイルですが、マニュアルに記載のリンク内容/ファイル名と若干異なりますが、問題ございませんでしょうか。

おそらくマニュアルの表記ミスです、申し訳ございません。
生成されたものは問題ないはずですので、arch/arm64/boot/dts/freescale/にある、
armadillo_iotg_g4-at-dtweb.dtbをご使用ください。

早速のご返答ありがとうございます。
内容承知しました。
引き続きよろしくお願いいたします。

作成した.swfファイルをUSBメモリにコピーし、G4に接続しましたが、自動アップデートが起動しませんでした。
手動でアップデートを実行しましたが、9.7.3記載の「①証明が間違ったメッセージ」と同様のエラ-が出ました。
こちらはどのように対処すればよいでしょうか。

#USB確認
atmark@atde9:~/mkswu$ df -h
ファイルシス               サイズ  使用  残り 使用% マウント位置
udev                         950M     0  950M    0% /dev
tmpfs                        195M  1.4M  194M    1% /run
/dev/mapper/atde9--vg-root    30G   14G   15G   50% /
tmpfs                        975M     0  975M    0% /dev/shm
tmpfs                        5.0M  8.0K  5.0M    1% /run/lock
/dev/sda1                    470M  217M  229M   49% /boot
tmpfs                        195M   96K  195M    1% /run/user/1000
/dev/sdb1                     29G   96K   29G    1% /media/atmark/6C23-ABC1 #USBメモリ
 
#vfatフォーマット
atmark@atde9:~/mkswu$ sudo mkfs.vfat -F 32 /dev/sdb1
mkfs.fat 4.2 (2021-01-31)
mkfs.vfat: /dev/sdb1 contains a mounted filesystem.
 
#作成した.swfをUSBメモリへコピー
atmark@atde9:~/mkswu/update-dtb$ cp kernel_update_plain.swu /media/atmark/6C23-ABC1
atmark@atde9:~/mkswu/update-dtb$ ls /media/atmark/6C23-ABC1
'System Volume Information'   kernel_update_plain.swu
atmark@atde9:~/mkswu/update-dtb$ umount /media/atmark/6C23-ABC1
 
#armadilloへUSBメモリ接続
rmadillo:~# [ 3141.257393] usb 2-1: USB disconnect, device number 2
[ 4033.756023] usb 2-1: new SuperSpeed Gen 1 USB device number 3 using xhci-hcd
[ 4035.179067] usb-storage 2-1:1.0: USB Mass Storage device detected
[ 4035.186117] scsi host0: usb-storage 2-1:1.0
[ 4036.195414] scsi 0:0:0:0: Direct-Access     Innostor Innostor         1.00 PQ: 0 ANSI: 6
[ 4036.205790] sd 0:0:0:0: [sda] 60436480 512-byte logical blocks: (30.9 GB/28.8 GiB)
[ 4036.213578] sd 0:0:0:0: [sda] Write Protect is off
[ 4036.218513] sd 0:0:0:0: [sda] Write cache: disabled, read cache: disabled, doesn't support DPO or FUA
[ 4036.250886]  sda: sda1
[ 4036.255209] sd 0:0:0:0: [sda] Attached SCSI removable disk
 
#自動でアップデートされないため、手動で実施
armadillo:~# mount -t vfat /dev/sda1 /mnt
armadillo:~# ls /mnt
'System Volume Information'   kernel_update_plain.swu
 
#証明書間違い?によるアップデート失敗
armadillo:~# swupdate -i /mnt/kernel_update_plain.swu
Swupdate v2021.04.0
 
Licensed under GPLv2. See source distribution for detailed copyright notices.
 
[INFO ] : SWUPDATE started :  Software Update started !
281473099782928:error:2E099064:CMS routines:cms_signerinfo_verify_cert:certificate verify error:crypto/cm
s/cms_smime.c:252:Verify error:self signed certificate
[ERROR] : SWUPDATE failed [0] ERROR : Signature verification failed
[ERROR] : SWUPDATE failed [0] ERROR : Compatible SW not found
[ERROR] : SWUPDATE failed [1] Image invalid or corrupted. Not installing ...
[INFO ] : No SWUPDATE running :  Waiting for requests...

at_akihito.irie

2022年2月16日 13時47分

入江です。

> 作成した.swfファイルをUSBメモリにコピーし、G4に接続しましたが、自動アップデートが起動しませんでした。
> 手動でアップデートを実行しましたが、9.7.3記載の「①証明が間違ったメッセージ」と同様のエラ-が出ました。
> こちらはどのように対処すればよいでしょうか。

swuパッケージを生成した際に使用した秘密鍵と、Armadilloに配置されている
公開鍵が異なるペアであるため、エラーが起こっています。

頂いているログを見る限り、initial_setup.swuが生成されているようですが、
こちらはArmadilloに適用しましたでしょうか。

initial_setup.swuは、ATDE上で生成した公開鍵をArmadilloに配置します。
そのため、最初にArmadilloに対してinitial_setupを適用しなければ、自作の
swuパッケージをインストールできません。

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

ありがとうございます。
initial_setupを適用→自作swuの流れになるのですね。理解いたしました。
ご教示いただいたとおり、initial_setupを使用することで、自動アップデート実行→再起動されました。

at-dtwebにてGPIOコネクタにUARTを追加したdtbファイルを使用し、アップデートした結果、
/dev/ttymxc2が追加されましたので、無事完了していると考えられます。

ご丁寧にご対応ありがとうございました。

> 入江です。
>
> > 作成した.swfファイルをUSBメモリにコピーし、G4に接続しましたが、自動アップデートが起動しませんでした。
> > 手動でアップデートを実行しましたが、9.7.3記載の「①証明が間違ったメッセージ」と同様のエラ-が出ました。
> > こちらはどのように対処すればよいでしょうか。
>
> swuパッケージを生成した際に使用した秘密鍵と、Armadilloに配置されている
> 公開鍵が異なるペアであるため、エラーが起こっています。
>
> 頂いているログを見る限り、initial_setup.swuが生成されているようですが、
> こちらはArmadilloに適用しましたでしょうか。
>
> initial_setup.swuは、ATDE上で生成した公開鍵をArmadilloに配置します。
> そのため、最初にArmadilloに対してinitial_setupを適用しなければ、自作の
> swuパッケージをインストールできません。
>
> 以上、よろしくお願いいたします。
>