sankyo_takada
2024年8月27日 12時59分
高田と申します。
Armadillo-640の電源ラインにスーパーキャパシタを接続し、電源OFF後も一定時間電源電圧を維持する回路を組んでいます。
これは、電源OFFを検知して外部記録媒体をアンマウントするためです。
この回路で電源OFFしたとき、あまり時間を空けずに(数十秒程度待った後に)再度電源をONすると、U-boot(保守モード)で起動することがあります。
これは、電源OFF時に電圧が徐々に低下し、電圧が下がり切らない状態で電源を投入したためと認識しています。
現状の回路を使用し、電源再投入のタイミングに関わらずLinuxを通常起動するようにしたいのですが、このようなことは可能でしょうか。
環境は以下です。
OS:Debian GNU/Linux 10
overlayfs:無効
ArmadilloのeMMCからブート
よろしくお願いいたします。
コメント
sankyo_takada
at_makoto.sato
sankyo_takada
高田です。
ご回答ありがとうございます。
Armadillo-640のユーザースイッチを押しながら電源を投入しても保守モードで起動しないということですね。
重ねての質問となり恐縮ですが、以下についてもご教示いただけないでしょうか。
①ビルドコマンド
ブートローダーをビルドしましたが、最新の製品マニュアルに記載されているコマンドでビルドしたところ、起動しませんでした。
試しにCROSS_COMPILE 変数を設定せずにビルドしたイメージをArmadilloに適用したところ、起動するようになりました。
実行したコマンドは以下です。
make ARCH=arm armadillo-640_defconfig make ARCH=arm menuconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
過去の製品マニュアルを確認すると、Ver:2.4.12でCROSS_COMPILE 変数を設定するように修正されているようですが、このコマンドでビルドした場合に起動しない原因としては何が考えられるでしょうか。
②電源再投入時に保守モードで起動する原因
デフォルトのブートローダーは、電源再投入のタイミングによっては保守モードで起動するようですが、そもそも保守モードで起動するのはなぜでしょうか。
電源電圧などの電気的な条件が関連している認識でおりますが、ご教示いただけると助かります。
よろしくお願いいたします。
at_makoto.sato
佐藤です。
>
> ①ビルドコマンド
> ブートローダーをビルドしましたが、最新の製品マニュアルに記載されているコマンドでビルドしたところ、起動しませんでした。
> 試しにCROSS_COMPILE 変数を設定せずにビルドしたイメージをArmadilloに適用したところ、起動するようになりました。
こちらでも試したところ、最新の製品マニュアルに記載の通りにビルドしても起動しました。
armadillo上への u-boot.imx のコピーなどに失敗していなかったでしょうか。
> ②電源再投入時に保守モードで起動する原因
> デフォルトのブートローダーは、電源再投入のタイミングによっては保守モードで起動するようですが、そもそも保守モードで起動するのはなぜでしょうか。
> 電源電圧などの電気的な条件が関連している認識でおりますが、ご教示いただけると助かります。
デフォルトのブートローダーは以下の条件のどれかの時に保守モードになります。
電源ON時にSW1スイッチが押されている
電源ON時にCON9の1番ピンがGNDに接続されている
電源ON時にシリアルコンソールで何かキーを押したままにしている
上記以外で保守モードで起動することはありません。
シリアルコンソールは CON9 の UART1 か RS-232C のどちらを使用していますでしょうか。
sankyo_takada
高田です。
> > ①ビルドコマンド
> こちらでも試したところ、最新の製品マニュアルに記載の通りにビルドしても起動しました。
> armadillo上への u-boot.imx のコピーなどに失敗していなかったでしょうか。
改めて確認してみます。
> > ②電源再投入時に保守モードで起動する原因
> デフォルトのブートローダーは以下の条件のどれかの時に保守モードになります。
> 電源ON時にSW1スイッチが押されている
> 電源ON時にCON9の1番ピンがGNDに接続されている
> 電源ON時にシリアルコンソールで何かキーを押したままにしている
> 上記以外で保守モードで起動することはありません。
>
> シリアルコンソールは CON9 の UART1 か RS-232C のどちらを使用していますでしょうか。
保守モードで起動する条件について承知しました。
こちらの環境ではArmadilloに周辺回路を接続しており、電源ラインにはスーパーキャパシタが接続されていますので
何らかの影響があるのではないかと考えています。
シリアルコンソールはRS-232C(CON3)を使用しています。
at_makoto.sato
2024年8月28日 13時27分
佐藤です。
> 現状の回路を使用し、電源再投入のタイミングに関わらずLinuxを通常起動するようにしたいのですが、このようなことは可能でしょうか。
少し手間がかかりますが、ブートローダーをリビルドすることで可能です。
リビルドは ATDE 上で行います。
以下からブートローダーのソースコードを取得してください。
https://armadillo.atmark-techno.com/resources/software/armadillo-640/bo…
その後、以下のマニュアルの通りにビルドします。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…
ここで、マニュアルにある
上記の手順の後に
を実行してください。
そこで表示される画面で、以下のように進み、"Stop auto boot when maintenance mode" を OFF にしてください。
設定が終わったら ESC キーを複数回押して保存して終了します。
その後はマニュアルにある通りににビルドしてください。
ビルドが終わったら、"u-boot.imx" を armadillo 上へコピーし、
以下のマニュアルの通りにブートローダーを書き換えてください。
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_ma…
書き込み完了後に armadillo を起動すると、保守モードに入らずにLinuxが起動するようになると思います。