Armadilloフォーラム

SDブートを行った場合のブートローダーの設定の保存について

sawadamasanori

2021年6月4日 11時43分

 澤田と申します。
 ArmadilloーIoT ゲートウェイ A6 製品マニュアル 「16章 SDブートの活用」において、「SDブートを行った場合、ブートローダーの設定はeMMCに保存されます。」とのことですが、これはSDカード側のブートローダーの設定を変更した場合は、その変更内容がそのままeMMC側のブートローダーの設定変更としても自動的に上書きされてしまう、という意味でしょうか?

 もし自動的に上書きされてしまうのであったら、SDブートにおいてブートローダーの設定変更を必要とした場合、その影響を想定した上で設定変更する必要があるのかなと思いました。
 この点について、できれば確認させて頂きたいと思い質問させて頂きます。

 何とぞよろしくお願いします。

コメント

sawadamasanori

2021年6月4日 16時30分

> 吉田です。
>
> どこで saveenv しても環境変数は eMMC に保存されます。
>
> ブートローダーの仕様に関しては、製品マニュアルの以下を参照ください。
> https://manual.atmark-techno.com/armadillo-iot-a6/armadillo-iota6_produ…

 御教授頂き有り難うございます。
 SDブートやUSBブートを利用する際、それぞれのメディアにもブートローダーイメージを格納すると思いますが、ArmadilloーIoT A6の起動時において実際に使用されるブートローダーは、たとえSDブートやUSBブートであったとしても、eMMCに格納されているブートローダーである、という解釈でよろしいでしょうか?

 もし御教授頂けますと大変助かります。どうそよろしくお願いします。

sawadamasanori

2021年6月4日 17時10分

> 吉田です。
>
> SD ブートの場合、SD カード内のブートローダーを使用します。
>
> USB ブートの場合、 eMMC のブートローダーを使用します。
> https://manual.atmark-techno.com/armadillo-iot-a6/armadillo-iota6_produ…
 澤田です。御教授頂き有り難うございます。
 すみません、SDブートの場合は、ブートローダーの設定についてはeMMCから読み込んで、その設定に従ってSDカード内のブートローダーを使用して起動するのだと思いますが、すると、後でeMMCブートに切り替えたときも、その設定に従ってeMMC内のブートローダーが起動する、ということでしょうか。
 私の理解が甘くて申し訳ございません。もし御教授頂けますと有り難く存じます。

at_shinya.koga

2021年6月8日 5時13分

こんにちは。アットマークテクノのl古賀です。

澤田さん:
>>SD ブートの場合、SD カード内のブートローダーを使用します。
>>
>>USB ブートの場合、 eMMC のブートローダーを使用します。
>>https://manual.atmark-techno.com/armadillo-iot-a6/armadillo-iota6_produ…
>澤田です。御教授頂き有り難うございます。
>すみません、SDブートの場合は、ブートローダーの設定についてはeMMCから読み込んで、その設定に従ってSDカード内のブートローダーを使用して起動するのだと思いますが、すると、後でeMMCブートに切り替えたときも、その設定に従ってeMMC内のブートローダーが起動する、ということでしょうか。

いえ。違うのです。Armadillo-IoT GW A6 の搭載 CPU/SoC (i.MX6 ULL) の機能により、電源投入時のサブユニットのスライドスイッチの状態と、ユーザースイッチ SW1 の状態の組み合わせでブートストレージが決まる(eMMC, microSD, USB, のどれになるかが決まる)、ということなのです。そして、A6 では、ブートローダーの設定情報は常に eMMC を格納先として使用し、設定情報のロードと保存を eMMC に対して行う、という仕組みなのです。

いかがでしょうか?

sawadamasanori

2021年6月8日 21時36分

古賀様
 澤田です。ご教授いただき感謝します。
 ブートローダーの設定情報の保存は常にeMMCに対して行われるが、その設定情報はブートストレージごとに別々に分けて保存されており、ブート時においてはブートストレージに対応した設定情報がeMMCから読み込まれて、その設定情報に従ってブートローダーが動作する、と分りました。ありがとうございました。
 私の勉強不足が原因で申し訳ございませんでした。
 吉田様と古賀様に感謝申し上げます。有難うございました。

at_shinya.koga

2021年6月9日 0時13分

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

澤田さん:
>ブートローダーの設定情報の保存は常にeMMCに対して行われるが、その設定情報はブートストレージごとに別々に分けて保存されており、

いえ。ブートローダーの設定情報は、eMMC にしかないのです。これは、A6 のブートローダー(u-boot)の動作として、そうなっています。

>ブート時においてはブートストレージに対応した設定情報がeMMCから読み込まれて、その設定情報に従ってブートローダーが動作する、と分りました。

ちょっと違います。ブートローダーを、どのブートストレージからロードして起動するかを決めるのは CPU です(どこからロードするかは、電源投入時のサブユニットのスライドスイッチの状態と、ユーザースイッチ SW1 の状態の組み合わせで決まります)。そして、CPU によってブートストレージからロードされて動作するブートローダーが、自身の設定情報の読み出しと保存を行う先は、(ブートローダーの実装により)eMMC 固定になっている、ということなのです。

ここで、「CPU」と書いたのは、正確に言うと、CPU に内蔵されているブート ROM コードです。CPU は電源投入されると、自身に内蔵されているブート ROM コードを実行開始します。このブート ROM コードが、サブユニットのスライドスイッチの状態と、ユーザスイッチ SW1 の状態を見て、その組み合わせにより、どのブートストレージからブートローダーをロードするか、つまりブートストレージをどれにするかを決めます。ブートストレージが決まったら、ブート ROM コードは、ブートストレージからブートローダーをメモリへロードして、ロードしたブートローダーに実行を移します(ロードされてメモリ上にあるブートローダーの、先頭部分へ CPU のジャンプ命令を使ってジャンプすることにより、ブートローダーの実行を開始します)。そして、動き出したブートローダーは、eMMC から自身の設定情報を読み出し、読み出した設定情報に従った動作を行う、というわけです。

Wikipedia に載っている説明ですと、「ブート」のページの、「その他のブート手順」の節にある箇条書きの、”TI OMAP や一部のDSPは”という項目の説明をご覧ください(日本語版だと、項目の出だしが少々分かりづらいですが、英語版では、"Some modern CPUs and microcontrollers (for example, TI OMAP) or sometimes even DSPs" と書かれています):
https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%BC%E3%83%88#%E3%81%9D%E3%…

設定情報に話を戻しますと、ブートローダーが eMMC にあっても SD にあっても、(A6 の場合は)ブートローダーの設定情報は eMMC だけにある、ということです。

sawadamasanori

2021年6月9日 16時43分

古賀様

 澤田です。私の理解力が不十分で申し訳ございません。御教授頂き感謝申し上げます。

 SDブートを実行した際、SDのブートローダーはeMMCにアクセスして、SDのブートローダーのための設定情報をeMMCから読み出す。
 SDのブートローダーのための設定情報は、eMMCブートやUSBブートの時には読み出されることは無い。
 eMMCブート、SDブート、USBブートに対応してワンセットずつ、それぞれのブートローダーのための設定情報があり、それらはeMMCにのみ保存される。

 以上の理解で正しいと良いのですが、もし間違っていた場合は申し訳ございません。御指摘頂けますと有り難く存じます。
 何とぞよろしくお願いします。
 

at_shinya.koga

2021年6月10日 16時01分

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

澤田さん:
>SDブートを実行した際、SDのブートローダーはeMMCにアクセスして、SDのブートローダーのための設定情報をeMMCから読み出す。
>SDのブートローダーのための設定情報は、eMMCブートやUSBブートの時には読み出されることは無い。

いえ。違います。ブートローダーの設定情報は、一ヵ所にしかなく、ブートストレージを何にしようが、同じ場所に対して設定情報の読み出しと保存を行う実装になっています。

>eMMCブート、SDブート、USBブートに対応してワンセットずつ、それぞれのブートローダーのための設定情報があり、それらはeMMCにのみ保存される。
>
>以上の理解で正しいと良いのですが、もし間違っていた場合は申し訳ございません。御指摘頂けますと有り難く存じます。

ということで、「ブートローダーの設定情報は、ブートストレージを問わず eMMC 内の同じ場所に保存される」が正解です。
つまり、澤田さんから最初に頂いたご質問の

>ArmadilloーIoT ゲートウェイ A6 製品マニュアル 「16章 SDブートの活用」において、「SDブートを行った場合、ブートローダーの設定はeMMCに保存されます。」とのことですが、これはSDカード側のブートローダーの設定を変更した場合は、その変更内容がそのままeMMC側のブートローダーの設定変更としても自動的に上書きされてしまう、という意味でしょうか?

については、「その通りです」というのが回答です。従いまして、

>もし自動的に上書きされてしまうのであったら、SDブートにおいてブートローダーの設定変更を必要とした場合、その影響を想定した上で設定変更する必要があるのかなと思いました。

この想定をして頂く必要があります。いかがでしょうか?

sawadamasanori

2021年6月10日 16時59分

古賀様

 澤田です。御教授頂きありがとうございます。非常に役立つ御説明を頂き、心より感謝申し上げます。
 私におけるCPU及びブートローダー等の働きについての理解が浅いままで質問させて頂いたため、結果として皆様にはお手数をおかけしてしまいました。
 これからしっかり学習してまいりたいと思います。

 有難うございました。

 澤田 拝