Armadilloフォーラム

SDカードからの自動起動

godmacchi

2016年2月2日 13時21分

お世話になっております。

マニュアルの16項に従ってSDブートを試しております。SDカードはSONY SDHC SF32UYです。一通り設定して起動はうまくいったのですが、保守モードからOS自動起動モードに切り替えて電源投入したところ、hermitが立ち上がり以下のエラーメッセージが出ました。

   mmcsd: No MMC/SD card connected.
   failed image loading from 'mmcblk0p2' device.

そのままhermit上でbootを入力すると正常に起動しました。setenvとsetbootdeviceはマニュアルに従った設定にしております。
試しに、以下のパターンを試しまして、結果は以下のとおりでした。
1.Flashブート/SDファイルシステム/SDカーネルイメージ:NG
2.Flashブート/SDファイルシステム/Flashカーネルイメージ:OK
3.Flashブート/Flashファイルシステム/Flashカーネルイメージ:OK

メッセージの内容はカードが無いということなのですが、bootを入力すると立ち上がるのと、カーネルイメージの読込先を変えると立ち上がるので、mmcblk0p2/boot/linux.bin.gzが認識されるのが遅いのではないかと感じています。何か対処方法はありませんでしょうか?

なお、Hermit-Atのバージョンはv.3.7.0です。

コメント

at_kojiro.yamada

2016年2月2日 14時46分

> そのままhermit上でbootを入力すると正常に起動しました。setenvとsetbootdeviceはマニュアルに従った設定にしております。
> 試しに、以下のパターンを試しまして、結果は以下のとおりでした。
> 1.Flashブート/SDファイルシステム/SDカーネルイメージ:NG
> 2.Flashブート/SDファイルシステム/Flashカーネルイメージ:OK
> 3.Flashブート/Flashファイルシステム/Flashカーネルイメージ:OK

Flashブート/Flashファイルシステム/SDカーネルイメージ
のパターンはどうなるのでしょうか?

以下のように設定できるので試してみてください。

hermit> clearenv
hermit> setbootdevice mmcblk0p2

早速の返信ありがとうございます。

試しましたところ、結果は同じエラーが起きて、hermit>でストップです。
その後、boot手動入力で起動します。

もう一つ気づいたことがありました。自動起動モードでは最初に書いた挙動なのですが、同じ設定で再度保守モードで立ち上げてそのままbootコマンドを入力すると下記のとおり少し違うメッセージになりました。

   mmcsd: No MMC/SD card connected.
   failed image loading from 'mmcblk0p2' device.
   -NG invalid argument

上記メッセージ表示後に、もう一度bootを入力すると正常に起動します。

at_yuma.arakawa

2016年2月2日 20時23分

電源投入から問題再現までのコンソールのログをいただけると、
より適切なアドバイスできるかと思いますので、
ログを添付してもらっても良いですか?

ログを添付します。
全てSDカードから起動しているものを0.logとして、最初に書きましたケース番号に対応して1.log~3.logになっています。追加で実施したケースを4.logにしました。最初に保守モードで立ち上げて設定を変更し、一度OSを立下げて自動起動モードに切り替えた上で電源を入れています。立下げの所からのログになっております。

ファイル ファイルの説明
0.log SDブート/SDファイルシステム/SDカーネル
1.log Flashブート/SDファイルシステム/SDカーネル
2.log Flashブート/SDファイルシステム/Flashカーネル
3.log Flashブート/Flashファイルシステム/Flashカーネル
4.log Flashブート/Flashファイルシステム/SDカーネル

ログありがとうございます。

カーネルをSDからロードするときに失敗しているみたいです。
ログから推測するに、SDカードへのアクセスが早い場合に
失敗するように思います。

電源が入ってから SDカードが反応できるようになるまでの時間が
長いのでしょうか。他のカードだと挙動が変わったりしますか?

カードの電源を入れてから、10ms 待っている部分を 100ms 待つようにした
bootloader を作ってみました。添付しておくので、試してみてください。

ファイル ファイルの説明
loader-100ms.bin

ブートローダありがとうございます。
こちらでも別件でブートローダを多少いじっているので、お手数ですがdiffを頂けないでしょうか?

また、810の動作確認済みデバイスにリストアップされている同シリーズの8GBのカードも手元にあるので、そちらでも試してみます。確認でき次第また投稿させていただきます。

まずは100msecの方を試しましたところ、問題なく起動しました!ブートローダ、ファイルシステム、カーネルの全てがSDカードから起動する設定です。どうもありがとうございます。ログを添付します。

10msecに戻した状態で、8GBのカードでも試してみたいと思います。

ファイル ファイルの説明
5.log SDブート/SDファイルシステム/SDカーネル(100msec遅延起動)

8GBカードで試したところ、10msecでは同じ結果でした。100msecでは問題なく起動するので32GBと同じ状況です。
100msecでも特に支障はないので、100msecをデフォルト設定として進めたいと思います。
どうもありがとうございました。