上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CFの悩み

仕事で組み込み向けLinuxの仕事をしていて、インストールするCFで困った事がありました。


ある特定のCFだけブートできないのです。


状況を説明すると、以下の通りです。


1.組込みLinuxは64MのSunDiskのCFでブートするのは確認済み
2.256MのCFでブートするのは確認済み
3.3年ほど前の128MのCF(以下古い128MのCF)はブートできる。
4.新たに購入した128MのCF(以下新しい128MのCF)はブートできない。
5.古い128MのCFはRedhat7.3のマシンで正常に書き込みできる。
6.新しい128MのCFをRedhat7.3のマシンで読み込みとセクターエラー等のメッセージで書き込めない
7.新しい128MのCFはFedora Core 3 kernel 2.6.9では、正常に書き込める。
8.CFは全てSunDisk


何故か、新しい128MのCFでブートできない。


ブートできないというのは,MBRすら読みに行っていない状況です。ブートできるCFとできないCFをMBRを比較してみましたが、同一のバイナリでした。ということは、CFとIDEの相性と考えられます。


それで、ブートできるCFとできないCFを比較してみました。


調査方法はhdparmコマンドです。ブートできるCF全てと、できないCFのパラメータを参照します。


この結果の資料は仕事場にあるので載せられないのですが、ブートできるCFとできないCFとの違いを比較してみました。pioモードやDMAのサポートの違いなどの細かな違いがありますが、それがbootできない原因では無い様です。一つだけ原因に繋がりそうな明確な違いがありました。hdparm -I で表示されるStandards:の次の行の表示する、Supportedの数字が、ブートできない新しい128MのCFでは12と表示されます。ブートできるCFは10または表示無しでLikely usedが4の場合です。ではSupportedが何を表しているかというと、サポートしているATAの規格らしいです。例えば、これが4であればATA-4の規格に対応していると表示されます。


では12ということはATA-12という意味になりますが、現在規格があるのはATA-7までのはず。ということは12と返すブートできない新しい128MのCFは無茶苦茶な値を返しているということです。


しかし、これが原因で新しい128MのCFがブートできないのかは、まだ曖昧です。ブートできるCFでSHOOT&STOREの64MのCFはATA-10と返します。これも、おかしい値です。しかし、ブートは成功します。


以上の調査での、結論としては、結局はボートとCFの相性問題であると思います。CFがおかしい値を返しても、ボードによっては、それが許容範囲内で問題なく動作するのかもしれません。これ以上の調査はボードのROMを解析することとなりますので難しいです。


おかしい値を返すCFの傾向は、比較的新しい、フォームウェアでデジカメやMP3プレイヤーなどの用途で売り出されている物みたいです。これらのCFのパッケージには,デジカメやMP3で必要であるようなプリントがしてありました。


この問題で浮き彫りになってきたのが、組込みで市販のCFを使用する場合は、同じ容量で同じメーカでもファームウェアのバージョンが違えば相性問題が出てくることです。製品の製造期間が1年や2年で、その間にCFのファームウェアのバージョンが変化すると、相性問題が発生する可能性があります。今後の課題としては、これをどうやってクリアするかです。

スポンサーサイト

ADD COMMNET

title:

name:

mail:

url:

comment:

password:

TRAKBACK URL

RECEVED TRAKBACKS

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。