Armadilloフォーラム

SDブートとFlashブートの比較

akio_tsuchiya

2020年7月16日 16時42分

マルタカテクノ 技術部 土屋と申します。
新たな質問をさせてください。

現在、Armadillo-840の起動イメージ(Linux,Loader,romfs)をFlashに展開し、Flashブートを行っています。
起動すると、画面表示用のイメージファイル、動画ファイル、サウンドファイル等のユーザーアプリケーションコンテンツを、
起動時にマウントしたSDカードから読み込み、ユーザーアプリケーションの起動中に利用しています。

しかし、何かの原因で、SDカードのマウントが正しくできなかった場合のことを考慮し、
Armadillo-840の起動イメージをSDカードに展開し、SDカードから起動するようにした場合、
Flashから起動させる場合と比較して、メリット、デメリットはあるでしょうか?

<例>
-メリット
・SDがマウントできなければシステムが起動せず、フェールセーフ性が高まる。
-デメリット
・FlashよりSDの方がアクセススピードが遅い為、初期起動に時間がかかる。
・FlashよりSDの方が書込み耐久回数が少ない可能性があるので運用の注意が必要。

何卒、宜しくお願い申し上げます。

コメント

at_kojiro.yamada

2020年7月16日 17時53分

> マルタカテクノ 技術部 土屋と申します。
> 新たな質問をさせてください。
>
> 現在、Armadillo-840の起動イメージ(Linux,Loader,romfs)をFlashに展開し、Flashブートを行っています。
> 起動すると、画面表示用のイメージファイル、動画ファイル、サウンドファイル等のユーザーアプリケーションコンテンツを、
> 起動時にマウントしたSDカードから読み込み、ユーザーアプリケーションの起動中に利用しています。
>
> しかし、何かの原因で、SDカードのマウントが正しくできなかった場合のことを考慮し、
> Armadillo-840の起動イメージをSDカードに展開し、SDカードから起動するようにした場合、
> Flashから起動させる場合と比較して、メリット、デメリットはあるでしょうか?
>
> <例>
> -メリット
> ・SDがマウントできなければシステムが起動せず、フェールセーフ性が高まる。
> -デメリット
> ・FlashよりSDの方がアクセススピードが遅い為、初期起動に時間がかかる。
> ・FlashよりSDの方が書込み耐久回数が少ない可能性があるので運用の注意が必要。
>
> 何卒、宜しくお願い申し上げます。

書き込み回数ですが、
イメージの更新頻度は高くない、もしくは低くできるはずなので、
あまり問題にはならないかと思います。

あとはお客様の運用に合わせて判断していただいて良いかと思います。

早速のご回答、誠に感謝いたします。

> > -デメリット
> > ・FlashよりSDの方が書込み耐久回数が少ない可能性があるので運用の注意が必要。

> 書き込み回数ですが、
> イメージの更新頻度は高くない、もしくは低くできるはずなので、
> あまり問題にはならないかと思います。

この件は、良く理解できました。

運用を考慮し、以下の考慮をいたします。
・書き込み回数を極力減らす。
・書込みデータを極力小さくする。

> > ・FlashよりSDの方がアクセススピードが遅い為、初期起動に時間がかかる。

同じシステムをFlash起動した場合とSD起動した場合では、起動時間に差がある物なのでしょうか?

> > マルタカテクノ 技術部 土屋と申します。
> > 新たな質問をさせてください。
> >
> > 現在、Armadillo-840の起動イメージ(Linux,Loader,romfs)をFlashに展開し、Flashブートを行っています。
> > 起動すると、画面表示用のイメージファイル、動画ファイル、サウンドファイル等のユーザーアプリケーションコンテンツを、
> > 起動時にマウントしたSDカードから読み込み、ユーザーアプリケーションの起動中に利用しています。
> >
> > しかし、何かの原因で、SDカードのマウントが正しくできなかった場合のことを考慮し、
> > Armadillo-840の起動イメージをSDカードに展開し、SDカードから起動するようにした場合、
> > Flashから起動させる場合と比較して、メリット、デメリットはあるでしょうか?
> >
> > <例>
> > -メリット
> > ・SDがマウントできなければシステムが起動せず、フェールセーフ性が高まる。
> > -デメリット
> > ・FlashよりSDの方がアクセススピードが遅い為、初期起動に時間がかかる。
> > ・FlashよりSDの方が書込み耐久回数が少ない可能性があるので運用の注意が必要。
> >
> > 何卒、宜しくお願い申し上げます。
>
> 書き込み回数ですが、
> イメージの更新頻度は高くない、もしくは低くできるはずなので、
> あまり問題にはならないかと思います。
>
> あとはお客様の運用に合わせて判断していただいて良いかと思います。

at_kojiro.yamada

2020年7月17日 11時39分

話が戻ってしまって申し訳ありませんが、
少し確認させてください。

> しかし、何かの原因で、SDカードのマウントが正しくできなかった場合のことを考慮し、
> Armadillo-840の起動イメージをSDカードに展開し、SDカードから起動するようにした場合、
(中略)
> -メリット
> ・SDがマウントできなければシステムが起動せず、フェールセーフ性が高まる。

NORフラッシュは正常に動作していてArmadilloは起動できているけど、
何かの原因でSDカードは正常に動作していない

上記の状況は好ましくなくて、それよりも

SDカードは正常に動作していないなら、システム全体が動作しない

こちらのほうが好ましい、

ということであっていますか?

つまり、NORフラッシュにカーネルやブートローダーなどを置きたくないわけではなく、
SDカードに置いたほうが、そのシステムにとっては都合が良い、
という認識であっていますか?

マルタカテクノ 技術 土屋です。

お返事をしていなくて申し訳ありません。

> つまり、NORフラッシュにカーネルやブートローダーなどを置きたくないわけで
> はなく、
> SDカードに置いたほうが、そのシステムにとっては都合が良い、
> という認識であっていますか?

はい、その通りです。

現在の起動シーケンスは次の順序です。

①内臓FlashからOSを起動。(ユーザーアプリもFlash内に格納)
②SDカードをマウント
③ユーザアプリ起動 

上記より、現時点では、
・SDが正しくマウントされなくても、OSやユーザーアプリは起動するが、画面を構成しているイメージファイル等の画像が表示されなくてもユーザーアプリは起動してしまう。
・ここは、OSを改造し、イメージファイルを直接、グラフィックバッファに書き込んでいる。
・この部分の作りにも、大きな問題があるのですが、本来イメージファイルの取得を失敗すば、フレームワーク内の描画システムを使っていれば、
「ObjectがNULL」の状態になるのが、QT等のC++派生の言語仕様ですが、もう少し低レベル(物理層に近い)状態を直接制御している為、
 この部分のフェールセーフが利かなくなっている事が致命的です。
・その状況でアプリケーション稼働は、画面外部の入力スイッチを操作する事で、初期動作をさせることができてしまう。
・この状態が非常に好ましくない為、出荷テストで確認しています。

しかし、現状は、
・出荷テスト時点では、接触がギリギリの状態でテストをすり抜け、出荷後の運搬や、時間経過等によって非接触に移行してしまう個体が
 発生します。(この根本原因は、未だに掴めていません。)
・ユーザー様への納品後、真っ黒な外面動作されるより、「フェールセーフの観点から、動作できない。」を選択できれば幸いです。
・また、ユーザアプリケーションやOSのバージョンアップの過渡期は、古いバージョンの内臓Flashを出荷時にSDカード経由で書き換えています。
・もし、SDカード起動時の、起動時間と耐久性に問題が無ければ、この、書換作業も不要となる可能性があります。

この様な観点から、SD起動とFlas起動の比較情報があれば幸いです。

本来は、全てのユーザーアプリケーションを見直し、根本対策を行う事が望ましいのですが、大きなクラスだけでも100本以上あり、
アプリケーション設計や開発段階の仕様書も、機能ブロック図程度しか存在していない現状では、
先ずは、「応急対策」と「根本対策」を並行して実施する必要があります。

有るべき論に近付けない、弱腰の投稿で申し訳ありません。
しかし、地方の物づくり企業の自社内ソフトウェア開発では、御社のようなユーザーサポートが、大きな助けとなります。

心より、感謝いたします。

> 話が戻ってしまって申し訳ありませんが、
> 少し確認させてください。
>
> > しかし、何かの原因で、SDカードのマウントが正しくできなかった場合のことを考慮し、
> > Armadillo-840の起動イメージをSDカードに展開し、SDカードから起動するようにした場合、
> (中略)
> > -メリット
> > ・SDがマウントできなければシステムが起動せず、フェールセーフ性が高まる。
>
> NORフラッシュは正常に動作していてArmadilloは起動できているけど、
> 何かの原因でSDカードは正常に動作していない
>
> 上記の状況は好ましくなくて、それよりも
>
> SDカードは正常に動作していないなら、システム全体が動作しない
>
> こちらのほうが好ましい、
>
> ということであっていますか?
>
> つまり、NORフラッシュにカーネルやブートローダーなどを置きたくないわけではなく、
> SDカードに置いたほうが、そのシステムにとっては都合が良い、
> という認識であっていますか?