改版履歴

改版履歴

Cente NAND Flash Driver


改版日 2013.01.11
バージョン Ver1.40

・2048バイト/ページのNAND FlashのECC訂正処理において1bit訂正ができない不具合を修正
読出しの際に1bit訂正が可能な場合であってもエラーにしていた不具合を修正しました。
(Cente障害情報:108-0001)
・2048バイト/ページのNAND FlashのECC訂正処理において2bitエラー検出ができない、及びECCコード部の1bitエラー時の訂正ができていない不具合を修正
ECC訂正処理において以下の問題が発生する不具合を修正しました。
①NAND Flashからデータを読出した際に2bitの誤りが発生した場合、データを誤訂正し正常終了する場合があります。
②NAND Flashの冗長領域に書き込まれているECCコードに1bit化けが有った場合、その場所のデータを読み出す時に、不必要な代替ブロックへの置き替えが発生し読み書きが遅くなります。
(Cente障害情報:108-0002)
・システムID格納用配列のサイズ不足により、他の変数を書き換えてしまう不具合を修正
システムID取得時に、用意している配列の範囲を超えた場所にアクセスしてしまい、他の変数を書き換えてしまう不具合を修正しました。
(Cente障害情報:108-0003)
・"#define USE_NANDFLASH_CLOSE  0"設定時に正しいページ操作が行なえない不具合を修正
fs_nandcfg.hのUSE_NANDFLASH_CLOSEマクロを「0」に設定した場合に、以下の問題が発生する不具合を修正しました。
①read_sector()で同じセクタを連続でリードすると、別セクタをリードしてしまう場合があります。
またその後のwrite_sector()で指定セクタと異なるセクタにライトしてしまう場合があります。
②write_sector()でエラーが発生した場合に、続くread_sector()、write_sector()で指定セクタと異なるセクタにアクセスしてしまう場合があります。
③2048バイト/ページのNAND Flashで且つ"#define NAND_FORMAT_2048  0"設定時に同一ブロック(物理ブロック)の同一ページを必要以上にライトしてしまい、速度の遅延が発生する場合があります。
(Cente障害情報:108-0004)
・ページの先頭アドレス以外を指定した場合に、正しいページデータを読み書きできない不具合を修正
以下2つの条件を満たした環境下でread_sector()、write_sector()を実行すると正しいデータを読み書きできない、またデータバッファのサイズを越える位置に書き込んでしまう不具合を修正しました。
①2048バイト/ページのNAND Flash
②fs_nand.h の NAND_FORMAT_2048 マクロを「0」に設定
(Cente障害情報:108-0005)
・ページデータ書き換え時に既存データを0xFFに書き換えてしまう不具合を修正
以下2つの条件を満たした環境下でwrite_sector()を実行すると、指定した場所と関係の無いデータが0xFFに書き換えられる不具合を修正しました。
①2048バイト/ページのNAND Flash
②fs_nand.h の NAND_FORMAT_2048 マクロを「0」に設定
(Cente障害情報:108-0006)
・冗長領域のLogical Block Addressに2bit以上のデータ化けがあった場合、正しくエラーを検出できない不具合を修正
冗長領域のLogical Block Address1とLogical Block Address2の値に2bit以上の違いがあった場合は、論理物理アドレス変換テーブルへの登録を行わずにアクセス対象外のブロックとして管理する必要がありますが、2bit以上の違いがあった場合でも、論理物理アドレス変換テーブルに登録してしまう不具合を修正しました。
(Cente障害情報:108-0007)
・128MBのNAND Flashを正しく論理フォーマットできない不具合を修正
以下の条件下でNAND Flashに対してNFLogical_Format()を実行すると、Partition Boot Sector(PBS)情報を正しい位置に書込めず、その結果、FileSystemのマウント処理でエラーが発生する不具合を修正しました。
①容量が128MB
②ページサイズが2048Byte
③NAND_FORMAT_2048マクロを「0」に設定
(Cente障害情報:108-0008)
・1GBのNAND Flashを正しく識別できない不具合を修正
1GBのNAND Flashを正しく識別できず、512MBのNAND Flashとして動作してしまう不具合を修正しました。
(Cente障害情報:108-0009)
・独自の変数型に変更
変数型をCente FileSystem及びCente NAND Flash Driver独自の変数型に変更しました。
(fs_typedef.hを追加)
・カスタマイズ関数を変更
《fs_nandcommand.c》
-nandFlashInitializePort()を追加しました。
-nandFlashCheckStatus()内でステータスリードコマンドを発行するように変更しました。
-関数名を一部変更しました。
-nandFlashCheckBusy()内でOSシステムコールのget_timeを使用するようにしました。
-nandFlashByte()を削除しました。
-nandFlashResetErr()を削除しました。
-nfCheckStatus()を追加しました。
-レジスタ読込みマクロ関数としてport_in()を使用するようにしました。
《fs_nandcommand.h》
-マクロ関数をsfr_xxxからport_xxxに変更しました。(xxxにはin、out、set、clrが入ります)
《fs_nanddev.c》
-fs_nandinit.c内のsetNandFlashModel()、checkDeviceCode()を、新しく追加したfs_nanddev.cに移動しました。
・カスタマイズマクロを変更
《fs_nandcfg.h》
-NAND_BUSY_CHK_TOUTマクロを追加しました。
-NAND_FORMAT_2048マクロをfs_nand.hから移動しました。
・エラーコード返却内容を変更
《fs_nand.c》
-identify()内でのMBR、PBS読込み時にエラーがあった場合、エラーコード:NF_NOTFATを返すように修正しました。
《fs_nandLog.c》
-NF_ReadSector()内のreadPhyOneSect()実行箇所で、エラー発生時のエラーコードをNF_ECCREAD_ERRとしていましたが、readPhyOneSect()の戻り値を返却するように変更しました。
-NF_WriteSector()内のreadPhyOneSect()実行箇所でエラー発生時のエラーコードをNF_ECCREAD_ERRとしていましたが、readPhyOneSect()の戻り値を返却するように変更しました。
(より詳細なエラーコードを取得できるようになりました)
・論理フォーマット仕様の変更
2048バイト/ページ(容量が128MB~1GB)のNAND Flashに対する論理フォーマット仕様を変更しました。
PBSの「隠しセクタ数」「FATセクタ数」などの設定値を調整し、無駄なセクタ(使用されないセクタ数)が少なくなるようにしました。
また全てのNAND Flashに対してPBSの「拡張ブートレコードシグネチャ」を設定するようにしました。
・全ブロック消去APIを追加
NAND Flashの全ブロック消去用APIとしてEraseAllBlock()を追加しました。<