Cente FileSystem

最新更新日/2011.02.04 : Ver6.00

Cente FileSystem

製品概要

  • 組込み機器開発専用のFAT互換ファイルシステム
  • RTOS無しでも使用可能
  • FAT12/16/32/VFAT(ロングファイル名)に対応
  • 階層ディレクトリをサポート
  • ANSI準拠のファイル入出力APIおよびPOSIX準拠のディレクトリ操作API
  • Centeオリジナルのファイル/ディレクトリ操作API
  • Shift-JIS/UNICODEそれぞれに対応
  • FAT及びディレクトリのキャッシュ機能
  • キャッシュの自動保存機能により安全性を強化
  • ダイレクトアクセスによる高速ファイル検索機能
  • ハッシュ処理による高速ファイル検索機能
  • FAT領域のbitmap化機能による空きFAT検索の高速化
  • 遅延書込機能によるアプリケーション処理の効率化(RTOS必須)
  • メモリカードの活線挿抜でFATを保護するメタデータ保護機能
  • チェックディスク機能
  • マルチパーティションメディアに対応
  • PCMCIA/CFコントローラドライバサンプルを付属
  • ATAドライバサンプルを付属 

【最新情報・トピックス】

・Ver6.00をリリースしました。(2011.02.04)

詳しくは改版履歴をご覧ください。

・Ver5.71をリリースしました。(2010.06)

詳しくは改版履歴をご覧ください。

・Ver5.70をリリースしました。(2009.12)

 詳しくは改版履歴をご覧ください。

TI社のDSP-BIOSに対応しました。(2009.01)

 テキサス・インスツルメンツ社のDSP BIOSカーネル(TM)/Code Composer Studio(統合開発環境)に対応しました。同社のDSPプロセッサ(DSP C674x等)上で簡単にFATファイルシステム機能を実現することができます(ホストCPUは不要)。

・ハッシュ処理による高速ファイル検索が可能になりました。(Ver5.60)
・Ver5.50で大幅な機能追加や性能改善を行っています。

 詳しくは改変履歴をご覧ください。

 

製品詳細情報

 

価格

価格:84万円/プロジェクト限定ライセンス

  • 表記の価格は、1プロジェクトライセンス、税込みの定価となります。
  • 他のライセンス形態につきましては、お問い合わせください。

 

障害情報

 

改版履歴

2011.02.04 : Ver6.00

・機能仕様の一部を変更

・メタデータ保護機能の仕様を変更しました。また仕様変更に伴いメタデータ保護機能のマクロ名を「POWER_CUT」を「FS_JOURNAL」に改名しました。
・高速fseek処理の仕様を変更しました。また仕様変更に伴い高速fseekマクロ名を「FS_SEEK_BF」を「FS_SEEK_HIGH」に改名しました。
・UNICODE APIの仕様を変更しました。
・rename,moveの仕様を変更しました。

・API追加

UNICODE APIを追加しました。

・API削除

ダイレクトアクセスAPI、ハッシュAPIを削除しました。

・fgetc, fgets, fputc, fputs, fread, fwrite関数修正

ファイルの終端へのfseek後のread/write不具合について修正しました。(Cente障害情報:001-0041)

・putc、fputs関数修正

fflush()後にfputc()又はfputs()を実行すると、FATチェーンの作成が正常に行なわれずデータの上書きが発生する場合があり、その場合、書き込んだサイズ分のデータを読み込むことができない不具合を修正しました。(Cente障害情報:001-0043)

・fs_mk_subd修正

ディレクトリ作成中(mkdir実行中)にディスパッチした場合まだ初期化されていないディレクトリに他のタスクがアクセスできてしまう場合がある不具合を修正しました。(Cente障害情報:001-0045)

・fread関数修正

freadでエラーになった時に読み込んだバイト数を正常に返却できない不具合を修正しました。(Cente障害情報:001-0046)

・move関数修正

ディレクトリのmoveを行う時に、親クラスタ番号の書き換えを正常に行えない不具合を修正しました。(Cente障害情報:001-0047)

・fopen関数修正

同一ファイルの2重openにおけるモードチェック不具合を修正(Cente障害情報:001-0048)

・fs_find_dir_entry_root修正

ディレクトリエントリ作成時にエントリの先頭が0xE5、次のエントリの先頭が0x00だった時に0xE5エントリ
からディレクトリエントリを作成する様に変更しました。

・fs_find_dir_entry_sub修正

ファイル・ディレクトリ作成時に親ディレクトリが存在するか否かチェック処理を追加しました。

・fs_set_dir_entry_root、fs_set_dir_entry修正

ディレクトリエントリのrsv(リザーブ領域)のクリア処理を追加しました。

・fclose関数修正

ファイルサイズが変化しない書き込みを行った後fcloseを行った時にタイムスタンプが更新されない処理を修正しました。

・チェックディスク機能変更

chk_dsk内で、無条件にFATのコピーを行っている箇所があったので、エラー修正が必要な場合のみコピーを行うように変更しました。

・クラスタ番号の終端の変更

クラスタ番号の終端範囲を0x0FFFFFF8~0x0FFFFFFFに変更しました。

・構造体名変更

ST_DIR_ENTRY_SEM、ST_FAT_SEMは同じ意味の構造体なのでST_FSYS_SEMに統一しました

・fs_fat_chain_clear_sub修正

bitmap使用時bitmapの最終クラスタがクリアされない処理を修正しました。

・キャスト処理修正

無駄なキャスト処理を削除しました。

・エラーコード修正

アプリケーションにCT_ERRを返す箇所を修正しました。

2010.06.07 : Ver5.71

・save_cache関数修正

セーブキャッシュ時にデバイスへのアクセスに失敗した場合、FAT、ディレクトリ領域用のセマフォ返却が行なわれない不具合を修正。

・new_cache, new_dcache関数修正

FAT, Directory Cacheのデバイスへのアクセスに失敗した場合のキャッシュの扱いにおける不具合を修正。

・ct_get_api_fsyser, set_api_fsyser関数修正

エラーコード取得時に格納変数配列を超えてアクセスしてしまう不具合を修正。

・fwrite関数修正

書込みエラー発生時に、正しい戻り値を返さない場合がある不具合を修正。

・fclose関数修正

ファイルクローズ時にエラーが発生した場合、ファイル構造体の資源が減少してしまう不具合を修正。

・readdir_uni関数修正

ビックエンディアンでreaddir_uniを実行した場合に、正しいディレクトリ・ファイル情報が取得できない不具合を修正。

・fread, fwrite関数修正

入出力バッファを更新する時に、バッファに保存しているデータに対するセクタ番号の情報を誤った内容に更新してしまう場合がある不具合を修正。

・fs_find_dir_entry_root_sub、fs_find_dir_entry_sub関数修正

ショートファイル名のチルダ(~)後の番号の上限チェックが行われない為ショートファイル名が重複してしまい、ファイル/ディレクトリに正常にアクセスできない不具合、及びバッファオーバーフローが発生しシステムが誤動作する可能性がある不具合を修正。

・fclose, fflush関数修正

入出力バッファ内の未保存データを書き込み時にエラーが発生した場合、再度fflushを行おうとしてもデータをデバイスに反映できない不具合を修正。

・遅延書込みタスク取り扱い変更

マクロ(DLYWT)指定による遅延書込みタスクの組込み方式を廃止しました。
今後はパッケージ内に提案されたサンプルを参考にして頂き導入の可否をご判断願います。

2009.12.14 : Ver5.70

・new_cluster、next_cluster、fs_vins_clust関数修正

戻り値の型がunsigned longであるにも関わらず、マイナス値を返していた箇所を修正しました。

・fs_ini_disklock、fs_rst_disklock関数修正

アンマウント実行時にセマフォの削除が行えず、再度マウントを実行すると過剰にセマフォを生成してしまう不具合を修正しました。

・fread、fwrite、ct_ins_clust関数修正

get_api_fsyserによる、マルチタスク環境下でのエラーの詳細コード取得に対応できていない不具合を修正しました。

・ini_blk_cache_dir関数修正

ini_blk_cache_dir()の引数には最低でも、バッファサイズ / (キャッシュサイズ * ブロック数) が3以上になる値が指定される必要があるが、それを下回る値を指定することができてしまう不具合を修正しました。

・fwrite関数修正

アクセス速度パラメータ(#define WRITE_CLUSTER)に 1 を設定した場合で、書き込み開始クラスタの先頭から書き込み終了位置までのサイズが1クラスタ以上、2クラスタ未満の場合に、セクタ番号の更新が行われずDATAが上書きされてしまう不具合を修正しました。

・fs_find_dir_entry関数修正

FAT領域アクセス用のセマフォ獲得及び返却に失敗した場合に、それ以前にディレクトリエントリ領域アクセス用に獲得したセマフォの返却が行なわれない不具合を修正しました。

・fs_ini_disklock関数修正

複数のパーティションに分割されたメディアにおいて、各ドライブは同一ドライバで動作するため、生成するセマフォは1つになるが、fs_ini_disklock()の先頭でセマフォIDのクリアを行なっていたため、同一ドライバでも複数個セマフォが生成されてしまう不具合を修正しました。

・ini_disk_sect、mount_disk関数修正

fs_ini_disklock()によりセマフォ資源を生成している箇所について、その後の処理でエラー終了した場合にセマフォ資源の削除が行なわれない不具合を修正しました。

・ct_ini_disk_sect、mount_disk関数修正

連続未使用クラスタ検索機能を有効(#define FS_FREE_CLUST 1)にした状態でのマウント処理において、獲得したワーク用バッファの返却を二重に行なっている箇所があり、その結果OSの誤動作を招く不具合を修正しました。

・fopen、fopen_cl、fopen_hash、fopen_uni関数修正

高速fseek機能有効時(#define FS_SEEK_BF 1)、fseek用2次キャッシュバッファ獲得後の処理でエラー終了した場合に、バッファの返却が行なわれない不具合を修正しました。

・ini_disk_sect、mount_disk、remove_hash、fs_r_sect、fs_w_sect関数修正

セマフォの獲得/返却またはメモリプールの獲得/返却に失敗した場合に、OSシステムコールのエラーコードをそのままFileSsytem APIが戻り値として返してしまう不具合を修正しました。

・fopen_hash、hash_entry、hash_delete、ini_fsys、reset_fsys関数修正

fopen_hash()で作成したファイルをmoveで移動した後、再度同一名称のファイルをfopen_hash()で作成しようとした場合、ハッシュテーブルへのハッシュ値が存在するため、エラーで終了してしまう不具合を修正しました。

・get_dev0関数修正

マルチパーティション環境(#define FS_MULTI_P 1)で、スーパーフロッピーディスク形式に対応するためのコードを追加しました。

・unmount_disk関数修正

ファイル操作中にメディアが抜かれてしまった場合の対応として、入出力バッファ、高速fseek用バッファのメモリブロック解放がunmount_disk()実行時に必ず行なわれるように改善しました。

・ini_disk、ini_disk_sect、mount_disk、unmount_disk関数修正

デバイスドライバ上でエラーが発生した場合は戻り値として-2を返すように変更を行ない、デバイスドライバ上のエラー、FileSystem上のエラーを区別できるように改善を行ないました。

・fs_find_dir_entry_root、fs_find_dir_entry、fs_fat_chain_clear、set_fsinfo、fs_find_dir_entry_root_uni、fs_find_dir_entry_uni、fs_remove_entry関数修正

サブ関数を新設し、セマフォ獲得・返却関数の呼び出しが一回で済むような形に改善しました。

・fs_iniworkmem関数修正

正常の場合の戻り値としてOSシステムコールからの戻り値をそのまま返していたため、「0」に置き換えて返すように修正しました。

・ini_fsys、ini_disk_sect、reset_fsys関数修正

エラー発生時に直ぐにエラー終了せず、そのエラーが無視され処理が続けて行なわれてしまう不具合を修正しました。

・fread、chg_filelen関数修正

マウントのチェック処理が抜けていたため追加を行ないました。

・save_cache関数修正

FAT領域保護用のセマフォ獲得/返却はct_save_cache()内で行なっているが、メタデータ保護機能又はキャッシュの自動保存機能を有効にした際、各APIではfs_save_cache()を実行しているため、fs_save_cahe()内でFAT領域保護用のセマフォ獲得/返却が行なわれるように修正しました。

・mount_disk、ini_disk_sect関数修正

マウント処理時にFAT32用のディスク構造体メンバの初期化処理を追加しました。

・fclose関数修正

入出力バッファの解放前にファイル構造体メンバの stat を 0 に初期化していたため、マルチタスク環境下では入出力バッファの解放前にそのファイル構造体が別のファイルに割り当てられしまう不具合を修正しました。

・fopen_cl、fopen_hash関数修正

FAT12/16ルートディレクトリ上において、オープン対象ファイルのディレクトリエントリの位置が1セクタを超える場合に正しいディレクトリエントリの検索が行なえず、誤ったディレクトリエントリにサイズ情報を書き込んでしまう不具合を修正しました。

・ライトプロテクトチェックの追加

キャッシュ機能有効の状態でライトプロテクト機構のあるメディアを使用した場合、キャッシュの自動フラッシュが起こってしまい誤動作する可能性があるため、書き込み系APIではST_DISK構造体のdsk_flgにセットされたライトプロテクトビットのチェックを行い、早期にエラー終了するように修正しました。

・デバッグログの削除

メタデータ保護機能評価用として各ソースファイル内に組み込まれていたデバッグログを全て削除しました。

・エラーコード返却不具合修正

  ・fs_er()により戻された0/-1の値を再びfs_er()に渡してしまっている箇所を修正しました。
  ・発生したエラーとエラーコードの意味が異なる箇所を修正しました。
  ・最初に返したエラーコードを、その後、全く意味の異なるエラーコードに置き換えている箇所を修正しました。
  ・エラーコード以外を返している箇所を修正しました。
  ・リエントラントを考慮されていないエラーコード保存箇所を修正しました。

2009.04.04 : Ver5.63

・chg_attr、chg_tstamp関数修正

SAVE_CACHEマクロが有効な時に、ディレクトリキャッシュを保存する処理を追加しました。

・ct_chg_attrfp、ct_chg_tstampfp関数修正

"r"モードで開いたファイルのファイル属性、タイムスタンプが変更されてしまう不具合を修正しました。

・fs_ini_fatlock、fs_ini_direntrylock関数修正

初期化時に構造体の0クリア処理を追加しました。

・new_cluster関数修正

16BitCPUでFAT32フォーマットされたメディアを使用した場合に、new_clusterの戻り値をint型で返してしまい上位ビットが反転してしまう不具合を修正しました。

・get_dev_free、save_cache、refresh_cache関数修正

複数タスクから左記APIを同時に実行すると、タイミングによってFAT情報が後からAPIを実行したタスクに上書きされてしまう不具合を修正しました。

・opendir_cl、fopen_cl、fopen_uni、opendir_uni、readdir_uni、opendir_hash関数修正

複数タスクから左記APIを同時に実行すると、タイミングによってディレクトリ情報が後からAPIを実行したタスクに上書きされてしまう不具合を修正しました。

・get_sect_no関数修正

get_sect_noでエラーが発生した時に、ワークバッファの返却を実行しない不具合を修正しました。

・fopen、fopen_cl、fopen_hash、fopen_uni関数修正

16BitCPUを使用してFS_SEEK_BFマクロを有効にした場合に、クラスタ個数を格納する変数がint型ですとオーバーフローする可能性があるので、unsigned long型に変更しました。

・ct_ini_disk_sect関数修正

16BitCPUを使用する場合に、ct_ini_disk_sectで使用する変数sectSizeがint型だとオーバーフローする可能性があるので、unsigned long型に変更しました。

・fs_num_chk関数修正

16BitCPUを使用する場合に、変数sectSizeがint型だとオーバーフローする可能性があるので、unsigned long型に変更しました。

・ct_ini_disk_sect、ct_mount_disk変更

アロケーションユニットサイズが最大65536バイトのメディアまでマウントする様に変更しました。

2009.03.24 : Ver5.62

・fs_direntry_unlock・fs_fat_unlock関数修正

複数タスクからAPIを実行した時に、セマフォの獲得ができなくなりAPIがエラーを返してしまう不具合を修正しました。

2009.03.17 : Ver5.61

・fs_time.c修正

"rtc.h"と"string.h"をインクルードしている記述を削除しました。

・opendir_hash関数修正

ct_hash_entry関数に渡す第二引数をct_hash_entry関数に合わせてキャストする様に修正しました。

・readdir_uni関数修正

取得したUNICODE文字列の終端コードの付け方にミスがありました。終端コードを1byte(0x00)から2byte(0x0000)に修正しました。

・fs_lock.c修正

戻り値を常に0を返している箇所を修正しました。

・fs_original.c・fs_system.h修正

16BitCPUでクラスタサイズが64KByte以上のデバイスを使用した時に、コンパイラによってshort型の変数の演算を行い、演算結果をlong型に代入する時に、演算結果が17Bit以上になった場合16Bitのみ代入し桁落ちしてしまう不具合を修正しました。

2009.03.06 : Ver5.60

・ハッシュ対応APIの追加

ファイル検索時にハッシュ法を用いる事でファイル検索の高速化を実現しました。

・FAT領域のbitmap化

FAT領域のクラスタの使用/未使用情報をRAM上に持つ事で、空きクラスタ検索時にデバイスドライバのアクセス頻度が低減しクラスタ検索が高速になりました。

・fopen_uni関数修正

既存ファイルを"w"モードでオープンした時に過剰にセマフォ資源を返却している箇所を修正しました。

・ディレクトリキャッシュ処理修正

ディレクトリキャッシュ実行時にローカルバッファに一旦コピーしている箇所を修正しました。

・create_pwc_area関数変更

メータデータ保護機能の管理ファイル作成方法を変更しました。

・fs_system.h修正

-Ver5.50で削除してしまった、Ver5.40までで定義されていたfeofマクロのundefを復活しました。

-ST_WORK構造体で使用していないメンバnameを削除しました。

・fs_memory.c修正

戻り値を常に0を返している箇所の修正しました。

・fs_lock.c修正

-FAT領域セマフォをドライブ毎に獲得する様に取り方修正。

-Ver5.50で削除してしまった、Ver5.40までで用いられていたセマフォ関連関数を復活しました。

・fopen・fopen_cl・fopen_uni・opendir・opendir_cl・opendir_uni・fs_divide・fs_ins_clust関数修正

複数タスクから左記API を同時に実行すると、タイミングによってファイル情報やディレクトリ情報が後から書込み操作したタスクから上書きされてしまう不具合の修正。

 

2008.12.24 : Ver5.50

fwrite・fread関数修正

クラスタサイズが64KByte以上のデバイスを使用した時に、入出力データバッファ内オフセットをunsigned short型にキャストしている箇所があり、データ書き込み・読み込み時に、本来参照すべき入出力データバッファ内オフセットを参照できずにいた不具合を修正。

ST_FILE構造体のsectnoがクラスタ内の先頭セクタか終端セクタかでAPIが参照バッファ内のオフセット位置を間違えていた箇所の修正。

fs_find_dir_entry・fs_find_dir_entry_root関数修正

(ドット)で始まり、ドットを含む4文字以下全て大文字のファイルディレクトリ名の時にremoveできない不具合の修正。

get_dev1関数修正

アロケーションユニットサイズが64Kbyteの時にscが負の値になる不具合を修正。

fs_memory.c・fs_lock.cソース修正

OSのシステムコール発行時にIDのチェックを行い、不正IDの時はエラーを返しシステムコールを実行しない様に修正。

ダイレクトアクセス機能追加

クラスタ番号・オフセットを指定してファイルアクセスできるAPIを追加しました。

UNICODE対応

UNICODEを指定してファイルアクセスできるAPIを追加しました。

マルチパーテーション対応

基本領域・拡張領域にパーテーション分割されたメディアに対応しました。

ディレクトリキャッシュ機能追加

ディレクトリキャッシュ機能を追加しました。

ファイル分割・クラスタ挿入機能追加

ファイルの分割・クラスタを挿入するAPIを追加しました。

リエントラント対応(排他処理変更)

排他処理について変更を行い、複数タスクからの同時アクセスが可能になりました。

fwrite関数修正

ディスクフルまでの書込みを行なった時に、ファイルポインタの指すST_FILE構造体のsectnoに誤ったセクタ番号を格納してしまい、その後ディスクフルにも関わらず誤った場所にデータを書込めてしまう不具合を修正。(FATを破壊してしまう)

2008.08.31 : Ver5.40

fat_recover関数修正

fat_recover関数内で使用している変数chk_countの型がshort型なので、4GByte以上のストレージデバイスに対応されていない不具合を修正。

fat_recover仕様変更

fat_recoverで使用するバッファサイズをユーザー指定可能になる様に変更。

fs_find_dir_entry関数修正

サブディレクトリ上のロングファイル名のショートエントリがセクタの先頭にあった場合、存在するはずのファイル検索に失敗する不具合を修正。

fclose関数修正

メタデータ保護機能有効時にclr_island_flg()を実行するタイミングを修正

fputc・fputs関数修正

1クラスタ確保前にモードチェックを行っていない不具合を修正。

fopen関数修正

"a"モードでファイルを新規作成できなかった場合に、エラー処理を行っていない不具合を修正。

unmount_disk関数修正

ディレクトリをオープンしたままストレージデバイスを抜くと、オープンディレクトリ用資源の枯渇を招いる不具合を修正。

fs_get_c_dent関数修正

FAT32フォーマットされたストレージデバイスを使用した時に、16BitCPU使用時に開始クラスタ番号上位を取得できない不具合を修正。

マクロ名修正

マクロ名の重複を避けるため「UNICODE」を「FS_UNICODE」に改名。

マクロ名「NORTI」を「ITRON」に改名。

2007.11.02 : Ver5.32

fopen関数修正

ファイル(ディレクトリでは無い)下にファイルが出来てしまう不具合を修正。

mkdir関数修正

ファイル(ディレクトリでは無い)下にディレクトリが出来てしまう不具合を修正。

スタック使用量修正

rename, remove, mkdir, rmdir関数においてメタデータ保護機能無効時であってもスタック使用量が多かった点を修正。

ファイル検索関連修正

エントリがクラスタサイズ丁度だった時、ファイル検索の結果見つからなかった時のエラーコードが正しく無い点を修正。

VFAT不具合修正

FAT12/16ルートディレクトリにおいてロングファイル名のショートエントリでの「~」以降の番号付記不具合を修正。

API選択マクロ不具合修正

API選択マクロの指定に依っては、chk_possect関数にまつわるコンパイルエラーが出る不具合修正。

メタデータ保護機能修正

fs_pwc.cのclr_island_flg()で島状FAT警告フラグのdown countにて0以下になってしまう不具合修正。

fs_pwc.cのcreate_pwc_area(), analyze_pwc(), pwc_repair()にて関数の実体にstatic宣言が抜けていた点を修正。

FATキャッシュ関連修正

FAT32にてFSINFOのNextFreeClusterからブロックキャッシュを確保した場合同一セクタを重複して持ってしまう不具合を修正。(フラッシュの際に上書きによりFAT破壊してしまう)

FSINFOの取り扱い変更

FAT32のFSINFOのFreeClusterCountとNextFreeClusterの扱いをSDA仕様に対応しました。

fwrite関数修正

4G超え時FSYSERへのエラーコードセットを追加修正。

fclose関数修正

メディアアクセスエラーであっても fp開放、メモリプール返却するよう修正。

OS依存部修正

fs_memory.c 生成情報パケットの第5引数を削除しNORTi以外のOSに対応しました。

fs_lock.c 生成情報パケットの第4引数を削除しNORTi以外のOSに対応しました。

rename関数修正

Newnameの長さに対する仕様ミスを修正。
(正しくは、oldnameのパス長+newname <= FULLPATHLEN(258))

引数チェック強化

finfo, chg_attr, get_attr, chg_tstamp, get_tstamp の各関数における引数の正当性チェックを強化しました。

get_attrfp関数修正

エラーコードの引渡しミスを修正。

2007.04.24 : Ver5.31

排他制御関連修正(fs_lock.c)

特定のOS(NORTi)用のマクロ(MSEC)を使っていた点を修正。

rename関数修正

ルートディレクトリ(FAT12/16)に対する電源断対応処理不具合修正。

fclose関数修正

“r”モードで開いたファイルに対しても電源断処理を実施していた点を修正。

電源断対応機能修正(fs_pwc.c)

fs_pwc.cにおいてOS用ヘッダファイル(ctkernel.h)を無条件にインクルードしていた点を修正。

chk_dsk関数修正

FAT32において開始クラスタ番号が65535を超える場合正常に修復できない点を修正。

2006.12.07 : Ver5.30

電源断機能の改善

電源断対応アルゴリズムを大幅に見直す事で旧バージョンでの使用制限を撤廃しました。
これに依りより使いやすく且つ信頼性が向上しました。

チェックディスク機能追加

chk_dsk関数を追加。

2006.06.30 : Ver5.20

マウント直後の動作改善(FAT32)

FSINFOの「最終変更クラスタ番号」の利用及び「連続未使用クラスタ検索関数」を追加した事に依りマウント直後の書込み系APIを高速に処理できるよう改善しました。(FAT32)

fseek関数改善

“r”モードで開いたファイルのfseekを高速に処理できるよう改善しました。

キャッシュ関連改善

FATCacheBuffer構造を改良した事に依りFAT操作に関係するAPIの処理速度を高速化しました。

save_cache,refresh_cache関数修正

FATCache未使用ドライブに対しても動作してしまう不具合を修正。

VFAT不具合修正

全角文字を使用したロングファイル名のショートエントリにて「~」以降の番号付記不具合を修正。

fwrite関数修正

4GByte以上の書込み抑制により戻り値が不正になる点を修正。

move関数修正

ドライブ名を大文字化して比較していなかった点を修正。

fopen関数修正

サイズ0のファイルに対し”r”もしくは”a”モードで開いた場合、無関係なデータを入出力バッファに読み込んでしまう点を修正。

reapir関数修正

ルート下へのreapir関数でエラーを返す事がある点を修正。

2006.02.10:Ver5.11

fseek関数改善

4GByteシーク可能に改善。

キャッシュ関連改善

FAT Cacheの設定最大値を 255個から65535個に拡大。

電源断対応機能修正

・fs_pwc.c chkDirPart()において変数pTmpFentPosの型修正。

・fs_pwc.c fatRecon() 変数名の誤りを修正。

・fs_pwc.c fatCpyPart() 論理演算子の不適切を修正。

・fs_pwc.c ini_pwc() FAT12において正常に初期化できない点を修正。

・fs_ansi.c fs_vfopen() 論理演算子の不適切を修正。

・fs_posix.c DT_mkdir() 引数名の誤りを修正。

fseek関数

クラスタチェーンの誤認識によるEOF誤検出を修正。

ロングファイル名不具合修正

ファイルもしくはフォルダのエントリが3セクタにまたがるような長い名前の場合、クラスタサイズが1及び2の時、エントリ領域確保が正しく取得できていない点を修正。

fopen関数修正

"a"モードにおいてドライバエラー発生時NULLPOINTアクセスしてしまう点を修正。

opendir関数修正

ドライブ読出し機能を無効にしていた誤りを修正。

Linux対応について

Linux対応コードを削除(LinuxのAPIとしての機能提供を終了しました)。

2005.06.03:Ver5.10

ctkernel対応

ctkernelモジュールの導入に伴なう修正。

2005.05.23:Ver5.01

move関数機能追加

move関数にディレクトリ移動機能を追加。

VFAT不具合修正

ロングファイル名のショートエントリにて「~」以降の番号付記不具合を修正。

マクロ名改名

「DELETE」マクロ名の重複を回避する為「FS_DELETE」に改名しました。

スタック消費量見直し

電源断対応機能が無効の場合でもスタック消費量が多大だった関数を修正。

該当API:rename,remove,mkdir,rmdir,chg_attr,chg_tstamp

2005.03.04:Ver5.00

対応クラスタサイズを拡大

従来の32KByte以上に対応。

電源断対応機能強化

電源断後のFileSystem起動時間の短縮とFATテーブルのコピー時間の短縮を図りました。

ファイル移動、改名関数追加

move関数を追加。

fs_cfg.hを新設

マクロ定義をこのファイルに集約し、各種条件下でのコンパイルを容易に行えるようになりました。

ヘッダファイル名改名

fsys.h->fs_system.hに変更しました。

ソースファイル名改名

機能別に分離独立しました。(vfsys.c->fs_ansi.c,fs_posix.c…など)

Linuxに対応

Linux上でのアプリケーションとして動作できるようになりました。

ロングファイル名検索・削除修正

512bytes/sector以外のメディアで、ディレクトリエントリからロングファイル名を検索できない、及び削除できない不具合を修正。

fwrite関数修正

メディアの空き領域を超えるサイズでfwriteを実行すると、戻り値が実際に書き込んだサイズと異なる不具合を修正。

fp操作関数修正

ファイルポインタがNULLだった場合の不具合を修正。

fclose,fgetc,fgets,fputc,fputs,fread,fwrite,fseek

ソース整理

ソース整理

2004.04.16:Ver4.02

遅延書き込み機能追加

タスクによる遅延書き込みをすることで積極的なファイル保護機能が充実しました。

ファイル操作関数追加

fflush関数を追加。

S-JIS->UNICODE変換範囲を修正

NO_UNICODEマクロを指定時、半角カタカナ(0xA1~0xDF)部分を範囲に含めていた不具合修正。

電源断対応機能修正

電源断対応機能が1ドライブしか制御できなかったが、複数ドライブ対応に修正。

電源断機能対象でないドライブに対して電源断処理をしてしまう不具合を修正。

q_format関数不具合修正

電源断機能対象でないドライブに対しても電源断初期化処理をしてしまう不具合を修正。

fclose関数不具合修正

デバイスドライバから異常終了だった場合セマフォの返却をしていなかった不具合修正。

ソース整理

ソース整理

2004.02.27:Ver4.01

マルチセクタ機能追加

セクタサイズをユーザで指定できるように改版。

SJISマクロを関数化

日本語変換機構を完全分離。外国語対応を容易にしました。

SJIS⇔UNICODEテーブル削除機能

全角コードを使わない際、テーブルを簡単に削除できるようマクロを追加。

SJIS⇔UNICODE重複回避機能

異なるSJISが同一UNICODEを持つ為、逆変換で不具合がでる事に対応

chg_tstamp,chg_tstampfp関数

閏年以外の年でも2月29日に変更できてしまう不具合修正。

ini_cache関数修正

セマフォを解放せずに関数を抜ける場合がある不具合修正。

fputc,fwrite関数修正

4Gbyte以上を書き込んでしまうことがある不具合修正。

ファイル名対応

名前の最後がスペースでもファイルが出来てしまう不具合修正。(Windowsでファイル削除できなくなる)

削除処理不具合修正

FAT32時、ルート下の先頭にあるショートファイル名を削除できない不具合修正。

文字識別不具合修正

Win2K,XPで作られた8+3の小文字で格納されたファイルを小文字処理できない不具合修正。

2003.12.05:Ver4.00

電源断(リカバリー機能)追加

不意な電源断が起きたときのFATとエントリの整合性を修復する機能を追加。

aとaのファイル名に対応

a.txtが存在する時にa.txtをfopenできないことに対応。

全角小文字ファイルに対応

全角小文字のショートファイル名の時にロングエントリが作成されない不具合に対応。

SJIS->UNICODE変換範囲を修正

SJIS->UNICODE変換処理で変換範囲が少ない不具合に対応。

エントリの削除処理修正

セクタをまたいでエントリがある場合の削除処理を修正。

FAT32の時q_format処理修正

FAT32でq_formatを行なうとゴミが書き込まれる不具合を修正。

q_format処理修正

q_formatを行なった後に読込んでいたセクタを読むと前のデータが読み出される不具合修正。

fseek処理修正

fseek処理でクラス単位でデータを読込む際に同じクラスタデータを複数回読んでいる処理修正。

new_cluster処理修正

FATチェック処理で一度チェックした領域を再度チェックしないように修正。

2003.09.16:Ver3.12

fwrite関数修正(Ver3.08)ミス

Ver3.08不具合項目4を再修正。

ファイル名対応

.で始まるファイル名に対応。

mkdir関数不具合修正

ルート下作成可能数一杯の時、クラスタを確保してしまう点を修正。

q_format関数不具合修正

FAT32時、FATエリアの初期化が正しくおこなわれていない点を修正。

ini_disk関数

固定ディスク時、マウント内に残容量取得処理を追加。

chg_tstamp,chg_tstampfp関数

chg_tstamp,chg_tstampfp関数の引数チェックを追加。

fopen,mkdir関数修正

空白文字列のファイルが作成される点を修正。

reset_fsys関数不具合修正

ini_fsys後ini_disk前にreset_fsys関数をコールした時の資源の解放を本関数で実施するよう修正。

rename関数不具合修正

第2引数に空文字列""を指定してもエラーにならない点を修正。

ショートファイル名で指定した時、無効なエントリが残る点を修正。

fwrite,fputc関数不具合修正

0バイト指定の書き込みをおこなった時クラスタを確保してしまう点を修正。

opendir不具合修正

ルート下へのopendir関数でエラーを返すことがある点を修正。

fopen関数不具合修正

空ファイルをfopen"r"モードでオープンした時、無関係のセクタを読み込むことがある点を修正。

同一のショートファイル名が作成されることがある点を修正。

remove関数不具合修正

remove関数で対象ファイルがある時にエラーコード(R_NO_FILE)を返すことがある点を修正。

2003.06.06:Ver3.11

fseek不具合修正

fseek関数でファイルサイズ以上のセクタをリードする場合がある点を修正。

未対応文字指定時処理修正

未対応文字を指定した時の動作を修正。

2003.05.23:Ver3.08

作成日時、更新日時設定不具合修正

作成日時、更新日時の設定の不具合を修正。

文字識別不具合修正

「+」を含むファイル名のDOS形式不具合修正。

S-JIS-UNICODE変換テーブル変更

S-JIS-UNICODE変換テーブルをWindowsベースに変更。

fwrite関数不具合修正

ファイルポインタがクラスタ境界にありかつ内部バッファがデバイスに対し更新済みのときfwriteによってFATのチェーンに不具合が生じるのを修正。

削除処理不具合修正

FAT32時、ルート下の先頭にあるショートファイル名を削除した時、無関係のセクタに書き込んでしまう不具合修正。

DOS名作成不具合修正

DOS名作成不具合を修正。

2002.12.26:Ver3.07

q_formatFAT32対応

q_format関数をFAT32に対応。

文字識別不具合修正

「=+;」を含むファイル名のDOS形式不具合修正。

ST_DISK型メンバ変更

ST_DISK型のsfをunsignedshort→unsignedlongに変更。

fopen不具合修正

fopenでエラー時、同一名による次のオープンでR_OPENEDを返すことがある不具合修正。

reset_fsys関数追加

reset_fsys関数を追加。

UNICODE変換ミス修正

「/」及び「∥」のS-JIS-UNICODE変換テーブルが間違っていたのを修正。

ファイル作成日時設定

ファイル、ディレクトリの作成時刻、作成日付を設定するようにした。

ソース整理

ソース整理。

2002.08.09:Ver3.06

reflesh_cache関数名変更

reflesh_cache→refresh_cacheに名前を変更。

ini_disk関数引数変更

ini_disk関数の引数を変更。

fclose他API関数型変更

fclosefputsfseekfeofrenameremovemkdirrmdirclosedir関数の戻り値をsignedchar→intに変更。

排他制御コード追加

refresh_cache関数に排他制御処理を追加。

ソース整理

ソース整理。

2002.06.24:Ver3.05

排他制御関連を別ファイル化

NORTiセマフォ関連の記述をfs_lock.cに移行。

同時オープンファイル数上限変更

同時オープン可能ファイル数の設定上限を127から32767個に変更。

get_tstampfpchg_tstampfp不具合修正

エンディアンの違いで、タイムスタンプの値が異なる不具合を修正。

FAT32不具合修正

クラスタ番号の扱いオーバーフローしていた不具合を修正。

ソース整理

ソース整理。

2002.04.17:Ver3.04

rename関数不具合修正

セクタの先頭にショートファイル名がある時、renameによって前エントリを壊してしまう不具合修正。

fseek戻り値不具合修正

クラスタサイズのファイル終端へのfseekでEOFを返す不具合修正。

文字識別不具合修正

8+3の大文字で格納されたファイルを小文字で指定できない不具合修正。

「[」及び「]」を含むファイル名のDOS形式変換不具合修正。

remove関数不具合修正

remove関数でディレクトリを削除する不具合修正。

reapir関数エラーコード修正

reapir関数で最終を示すNULLを返す時エラーコードが-13になる時がある不具合修正。

get_dev_free関数処理速度改善

FAT32に対する空き容量取得の処理速度を改善。

get_dev_free関数不具合修正

FAT16でFAT数256以上のときオーバーフローする不具合修正。

fopen誤仕様修正

読取専用ファイルを"w""a"オープンできてしまうのを修正。

2001.12.03:Ver3.03

処理速度改善

キャッシュ設定時の処理速度を改善。

get_dev_freeget_dev_total関数修正

get_dev_freeget_dev_total関数を4GB以上に対応。

q_format関数不具合修正

FAT128セクタ以上の時正常に処理されない不具合修正。

fseek関数不具合修正

fs_memory.c未設定時、セクタ境界へのfseek不具合修正。

fopen不具合修正

ルート下作成可能数超過時にfopenでNULLを返さない不具合修正。

fwrite戻り値修正

fwrite関数エラー時の戻り値を修正。

VFAT不具合修正

「~」を含むファイル名に対する操作が正しくない点を修正。

ファイルサイズ取得・変更関数追加

chg_filelenget_filelen関数を追加。

FAT32不具合修正

キャッシュ未設定時、FAT更新されていない不具合修正。(FAT32)

ドライブ読出機能追加

opendir("/")またはopendir("\\")指定時ドライブ名を返すよう機能追加。

FILE型名前変更

ST_FILE型をFILE型に名前変更。

エラーコード修正

存在しないファイルをオープンした時のエラーコードが正しくないのを修正。

ソース整理

ソース整理。

2001.08.27:Ver3.02

ロングファイル名作成不具合修正

ロングファイル名作成時の不具合を修正。

remove関数不具合修正

ファイルオープン中のremove動作を行えないよう修正。

ディスクフル時不具合修正

ディスクフル判定の不具合修正。

セマフォ関連不具合修正

セマフォID自動取得時、sig_semをコールしていない不具合修正。

速度改善

小サイズ毎の書き込み時の速度を改善。

"r"モード見直し

"r"モードでの複数オープンを可能に。

バッファの動的取得

バッファを動的に取得するユーザーカスタマイズ部分(fs_memory.c)追加。

remove関数不具合修正

サブディレクトリ下のremove関数不具合修正。

エラーコード格納処理追加

エラーコードを静的変数に格納するよう変更。

タイムスタンプ取得、変更関数追加

get_tstampchg_tstampget_tstampfpchg_tsatmpfp関数を追加。

属性取得、変更関数追加

get_attrchg_attrget_attrfpchg_attrfp関数を追加。

2001.05.30:Ver3.01

reapir機能拡張

ロングファイル名、ショートファイル名ともにfullnameに格納するよう変更。

finfo関数不具合修正

エラーコードが正しくない点を修正。

get_dev_free関数改善

処理速度を向上。

opendir仕様変更

ルートディレクトリ指定時、"a:"及び"a:\\"を可能とするよう変更。

rmdir不具合修正

空でないディレクトリに対しても削除してしまう不具合修正。

opendir不具合修正

ファイルに対しても成功してしまう不具合修正。

キャッシュ関連不具合修正

キャッシュ未使用時、サブFATを書いていない不具合修正。

ファイル名規則不具合修正

大文字小文字別の同一名ファイルに対する仕様ミスを修正。

日立CVer6.0A対応

日立CVer6.0Aに対応。

ライブラリ化

SH4&日立C環境下でのライブラリとして提供。

ヘッダーファイル見直し

fsys.h内の定義を見直し。

rmdir関数不具合修正

サブディレクトリの削除時チェーン構造の消し忘れの不具合を修正。

ソース整理

ソース整理。

2001.04.09:Ver3.00(β版)

評価版リリース

FAT12/16/VFAT/32に対応。

2000.06.12 : Ver1.00

新規作成

 


FATファイルシステムシリーズ


製品マニュアルのお問い合わせ

以下のフォームに必要事項を入力し、「内容確認へ」ボタンを押してください。

印の項目は入力必須です。

個人情報

確認のためもう一度入力してください
-
市区町村名 ※[例] 立川市
町名・番地 ※[例] 錦町1-6-6
建物名 ※[例] 岩崎錦町ビル6F

マニュアルのお問い合わせ内容
製品マニュアル「Cente FileSystem」

※お問合せ/ご質問の内容についてできるだけ詳しくご記入下さい。
アンケート
Centeミドルウェアシリーズ
Centeハードウェアシリーズ
ミドルウェア統合開発キット
組込みアプリケーション開発プラットフォーム
お取引なし
なし
Centeミドルウェアシリーズ
Centeハードウェアシリーズ
ミドルウェア統合開発キット
組込みアプリケーション開発プラットフォーム
認証コード

見えている文字を入力してください。


  • μITRONはMicro Industrial The Realtime Operating System Nucleusの略称です。
  • Centeはデータテクノロジー株式会社の商標登録です。
  • ESPTはビー・ユー・ジー社製のネットワーク通信機能付き小型CPU基板です。
  • その他の製品名・ブランド名は各社の商標または登録商標です。
  • 記載の仕様・価格・概観等については、予告なく変更する場合があります。

このページのトップへ