NANDフラッシュ簡易ファイルシステムの開発
NAND Flash向け簡易ファイルシステム OUK Flash File System
-
ブロック割り当て
ファイル作成時に使用する最大ファイルサイズを指定して、ブロックを確保します。(API関数OFLcreate()を使用)
1つのファイルに対してブロック単位で連続領域を割り当て、1ブロックに満たないサイズでも1ブロックを消費します。
ブロックセルの使用頻度を平滑化する目的で、空きブロックの検索開始位置を巡回させます。
また、削除されたばかりのブロックがすぐには再利用されないようにしています。 -
シーケンシャル ファイル機能を提供
読み書きポインタの移動(シーク)操作を伴わない、ファイルの先頭から読み書きするシーケンシャル ファイルの機能を提供します。
不良ブロックが発生した場合、次のブロックが上書きされます。そのため、ファイル作成時には余裕をもって確保されます。 -
SEQNUM番号による不良ブロック判定
ページに対して連続する番号(SEQNUM番号)を書き込み、消去/書き込みエラーで残った破損データを区別できるようにします。
ローダーは不良ブロック管理テーブル(BBT)を使用しないため、SEQNUM番号の連続性をチェックすることで破損ブロックを避けます。 -
不良ブロック判定: ベンダー マーク、不良ブロック管理テーブル(BBT)、SEQNUM番号
製造メーカーにより判定方法は多少異なりますが、製造段階に不良ブロックと判定されたブロック セルにはマークが付けられており、そのブロックは消去/使用しません。
OFL_PAGE_BADBLK_POSで定義されているページ先頭からのオフセットの位置の値を判定に使用しています。詳しくはOFLdef.hのIsBadMarkedBlock()関数を参照して下さい。
使用劣化により発生した不良ブロックは不良ブロック テーブル(BBT)で管理されます。
1ブロックあたり2ビットを割り当てたビットマップ テーブルを採用しています。
ただし、ブートプログラム ローダーはこのテーブルを使用せず、製造メーカーが付けたマークとSEQNUM番号を参照して、使用すべきブロックを判断します。
御社のご希望に基づきカスタマイズなども可能です。
まずはお気軽にお問い合わせください。