at91rm9200 プロセッサとat45db642Dデータフラッシュを使用して変更された 2.6.12.1 を実行しているレガシー ボードのファームウェアを、 at45db641Eデータフラッシュを使用するようにアップグレードする作業を行っています。641E の特徴は次のとおりです。
- 32768ページ
- 264バイトのページサイズ
- ページ (264 バイト)、ブロック (2 KB)、セクター (256 KB)、またはチップ全体 (64 M ビット) を消去する柔軟な消去オプション。
カーネル メモリ マネージャーのページ サイズは標準の 4096 バイトだと思います。
適切な jffs2 イメージをデバイスに配置したいと考えています。私が疑問に思っているmkfs.jffs2オプションは次のとおりです (man ページから):
- --pagesize: ページ サイズ SIZE を使用します。デフォルトは 4 KiB です。このサイズは、データ ノードの最大サイズです。ターゲット システムのメモリ管理ページ サイズに従って設定します (注: これは NAND ページ サイズとは関係ありません)。
- --eraseblock: 消去ブロック サイズ SIZE を使用します。デフォルトは 64 KiB です。ターゲット MTD デバイスの消去ブロック サイズとは異なる消去ブロック サイズを使用すると、JFFS2 が最適に実行されない場合があります。指定された SIZE が 4096 未満の場合、単位は KiB と見なされます。
男性は、ページサイズはカーネルメモリ管理ページサイズ(私の場合はデフォルトと同じ4096)に関連しており、デバイスの264バイトのページではないと述べています。--pagesize=4096 を指定する必要がありますが、--pagesize=264 ではありません。これは正しいですか?
--eraseblock は、MTD デバイスの消去ブロックと同じサイズでなければならないとも述べています。私はいくつかのことについて混乱しています。
- 641E には、いくつかの異なる消去オプションがあります。mkfs.jffs2 --eraseblock オプションにはどれを選択する必要がありますか?
- 正しいオプションが 641E のページ サイズまたはブロック サイズのいずれかである場合、4096 未満の値はバイト単位ではなく KB 単位であると想定されるという事実を考慮して、mkfs.jffs2 にどのように指定できますか?
- このリンク(この関連する不十分な SO の質問で参照) は、jffs2 ノードが消去ブロック内に完全に収まる必要があることを示しています。それらのサイズは 4+ KB であり、デバイスの「消去ブロック」サイズよりも大きいため、リンクには「いくつかの erasblock を 64 または 128 KiB の 1 つの仮想消去ブロックに結合して使用する必要があります。これはより最適です」と続きます。 「ドライバーに 128KiB の消去ブロック サイズを報告させ、それをエミュレートする必要があります。そうすれば動作します。そのままでは動作しません。」このような「仮想消去ブロック」を設定するにはどうすればよいですか?
- at91 データフラッシュ ドライバー内では、
device->erasesize=pagesize
. そのため、名前は似ているが異なる概念がいくつかあるようです: ドライバー消去サイズ、デバイス消去ブロック サイズ、および jffs2 消去ブロック サイズ。これらの関係と違いは何ですか?jffs2 で指定された消去ブロックのサイズは、ドライバーによって実行される操作に最終的にどのように影響しますか?
助けてくれてありがとう。