Armadilloフォーラム

A6E Base OS更新後にDTS overlayを適用する方法について

k-nishiki

2023年8月1日 16時10分

Armadillo A6Eの拡張インターフェース(CON8のADC)を使用するために、
dtwebツールで作成したDTS overlay (dtbo)を適用していましたが、Base OSを更新後にデバイスが認識されなくなりました。
更新前:3.17.4-at9
更新後:3.18.2-at1
OS更新後に、/bootフォルダには、もとのdtboファイルと、設定を追加したoverlays.txtは残っていることは確認しました。
そこで最新のカーネルをビルドし、dtboファイルを再作成して、もとのファイルと置き換えリブートしたところ、認識されるようになりました。

あとで気づいたことですが、もとのdtboファイルと再作成したdtboファイルは同一でしたので、再作成する必要はなかったと考えられます。
Base OS更新後にDTS overlayを継続して適用するには、どのような手順を踏むのが正しいのでしょうか?

よろしくお願いいたします。

コメント

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

k-nishikiさん:
>Armadillo A6Eの拡張インターフェース(CON8のADC)を使用するために、
>dtwebツールで作成したDTS overlay (dtbo)を適用していましたが、Base OSを更新後にデバイスが認識されなくなりました。
>更新前:3.17.4-at9
>更新後:3.18.2-at1
>OS更新後に、/bootフォルダには、もとのdtboファイルと、設定を追加したoverlays.txtは残っていることは確認しました。
>そこで最新のカーネルをビルドし、dtboファイルを再作成して、もとのファイルと置き換えリブートしたところ、認識されるようになりました。
>
>あとで気づいたことですが、もとのdtboファイルと再作成したdtboファイルは同一でしたので、再作成する必要はなかったと考えられます。

二点確認させてください:

1.) CON8(拡張インターフェース)に接続していらっしゃる ADC は何でしょうか?製品型番が分かりましたら、教えてくださいませ。

2.) Base OS 更新前に使っていらしたカーネルは、Base OS のものをそのまま使っていらしたでしょうか?もし、ご自分でビルドなさったカーネルをお使いだったのであれば、教えてください。

以上、取り急ぎ状況確認のための質問です。

古賀様、

ご対応ありがとうございます。
1)書き方が不十分でした。もともとCOM8で使用できる内蔵ADCを利用しています。
  ADC1_IN1→COM8 ピン7に設定。
  ADC1_IN2→COM8 ピン8に設定。
2)Base OSは、更新前も、更新後も標準提供のファイルをそのまま利用しています。
  更新前のOSは、インストールディスク(SD)でインストール。
  更新後のOSは、swupdate でインストール。

よろしくお願いいたします。

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

k-nishikiさん(2023年8月2日 13時34分):
>ご対応ありがとうございます。
>1)書き方が不十分でした。もともとCOM8で使用できる内蔵ADCを利用しています。
>  ADC1_IN1→COM8 ピン7に設定。
>  ADC1_IN2→COM8 ピン8に設定。

了解しました。

>2)Base OSは、更新前も、更新後も標準提供のファイルをそのまま利用しています。
>  更新前のOSは、インストールディスク(SD)でインストール。
>  更新後のOSは、swupdate でインストール。

dtweb で作成した .dtbo ファイルと、その .dtbo ファイルを追記した overlays.txt は、Base OS にコピーしたのち persist_file で永続化していらした、ということですよね。

>>更新前:3.17.4-at9
>>更新後:3.18.2-at1
>>OS更新後に、/bootフォルダには、もとのdtboファイルと、設定を追加したoverlays.txtは残っていることは確認しました。
>>そこで最新のカーネルをビルドし、dtboファイルを再作成して、もとのファイルと置き換えリブートしたところ、認識されるようになりました。
>>
>>あとで気づいたことですが、もとのdtboファイルと再作成したdtboファイルは同一でしたので、再作成する必要はなかったと考えられます。

質問とお願いが、一つずつあります。

・質問
 「もとのdtboファイルと再作成したdtboファイルは同一でしたので」とありますが、同一かどうかは、どうやって判定されたでしょうか?

・お願い
 こちらで再現確認したいと思いますので、現在ご使用中の .dtbo ファイル(再作成された .dtbo ファイル)を頂いてもよいでしょうか。

1週間以上の間が空いてしまい、恐縮ですが、どうぞ宜しくお願いします。

アットマークテクノ 古賀様

いつもご対応ありがとうございます。
> dtweb で作成した .dtbo ファイルと、その .dtbo ファイルを追記した overlays.txt は、Base OS にコピーしたのち persist_file で永続化していらした、ということですよね。
はい、マニュアル「11.12.4. DTS overlays によるカスタマイズ」の手順を実行しました。

> ・質問
>  「もとのdtboファイルと再作成したdtboファイルは同一でしたので」とありますが、同一かどうかは、どうやって判定されたでしょうか?
WinMergeツールのバイナリ比較で同一であることを確認しました。

> ・お願い
>  こちらで再現確認したいと思いますので、現在ご使用中の .dtbo ファイル(再作成された .dtbo ファイル)を頂いてもよいでしょうか。
もとのdtboファイルと再作成したdtboファイルを添付します。

よろしくお願いいたします。

ファイル ファイルの説明
dtbo_files.zip 使用しているdtboファイル(古いほうの拡張子は.oldに変更)

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

k-nishikiさん(2023年8月10日 16時11分):
>>・質問
>> 「もとのdtboファイルと再作成したdtboファイルは同一でしたので」とありますが、同一かどうかは、どうやって判定されたでしょうか?
>
>WinMergeツールのバイナリ比較で同一であることを確認しました。
>
>>・お願い
>> こちらで再現確認したいと思いますので、現在ご使用中の .dtbo ファイル(再作成された .dtbo ファイル)を頂いてもよいでしょうか。
>
>もとのdtboファイルと再作成したdtboファイルを添付します。

有難うございます。たしかに、添付して頂いた二つのファイルは同一の内容ですね。
再作成された .dtbo ファイルを使い、以下の手順で再現確認したところ、こちらでも症状が再現して、原因が分かりました。

k-nishikiさん(2023年8月1日 16時10分):
>Armadillo A6Eの拡張インターフェース(CON8のADC)を使用するために、
>dtwebツールで作成したDTS overlay (dtbo)を適用していましたが、Base OSを更新後にデバイスが認識されなくなりました。
>更新前:3.17.4-at9
>更新後:3.18.2-at1

k-nishikiさん(2023年8月2日 13時34分):
>2)Base OSは、更新前も、更新後も標準提供のファイルをそのまま利用しています。
>  更新前のOSは、インストールディスク(SD)でインストール。
>  更新後のOSは、swupdate でインストール。

原因は、3.18.2-at1 から、インストールディスクイメージにも armadillo-iotg-a6e-at-dtweb.dtbo が収録されるようになったことです。3.18.2-at1 以降の「Armadillo Base OSアーカイブ」を展開すると、boot/ に armadillo-iotg-a6e-at-dtweb.dtbo が入っているのが分かります:
 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-a6…
インストールディスクイメージにも armadillo-iotg-a6e-at-dtweb.dtbo が収録されるようになったため、swupdate で 3.18.2-at1 以降の Base OS の SWU を適用すると、自分で作成・配置した armadillo-iotg-a6e-at-dtweb.dtbo が、アップデート時に違う内容のもの(Base OS 付属のもの)に置き換わってしまいます。その結果、内蔵 ADC に対する Device Tree 設定が失われてしまうのです。
最初に頂いたご質問で、

>OS更新後に、/bootフォルダには、もとのdtboファイルと、設定を追加したoverlays.txtは残っていることは確認しました。

とありましたが、「もとのdtboファイルと」とあるのが、実は違っていて、ファイル名は同じであるものの、内容が異なっていた、というのが真相です。そのため、

>そこで最新のカーネルをビルドし、dtboファイルを再作成して、もとのファイルと置き換えリブートしたところ、認識されるようになりました。

と書いていらした通り、armadillo-iotg-a6e-at-dtweb.dtbo を、ご自分で作成されたものに置き換えれば再び認識されるようになった、というわけです。
ということで、

>Base OS更新後にDTS overlayを継続して適用するには、どのような手順を踏むのが正しいのでしょうか?

という質問の回答は、「/etc/swupdate_preserve_files に以下の行を追加する」です:
 https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…

POST /boot/armadillo-iotg-a6e-at-dtweb.dtbo

この行を追加することにより、swupdate で Base OS の SWU をインストールする際、Base OS に収録された armadillo-iotg-a6e-at-dtweb.dtbo をインストール先の面に配置した後で、元の面にあった方の armadillo-iotg-a6e-at-dtweb.dtbo を、インストール先の面に上書きコピーする、というアップデート動作になります。つまり、自分で作成・配置していた armadillo-iotg-a6e-at-dtweb.dtbo が、Base OS の SWU インストール時に消えずに残ります。

以上、回答が遅くなってしまい恐縮です。

アットマークテクノ 古賀様、

ご回答ありがとうございます。
発生原因について了解いたしました。次のアップデートでは、ご回答の方法で実施したいと思います。