# FATファイルシステム・モジュール

小規模な組み込みシステム向けの汎用FATファイルシステム・モジュールです。ANSI C準拠でハードウェア・アーキテクチャには依存しないので、必要なワーク・エリアが確保できれば、8051, PIC, AVR, SH, Z80, H8, ARMなど安価なマイコンでそのまま使用可能です。

#### FatFsの特徴

1. ファイル・システム用とファイルI/O用バッファを分離し、複数ファイルの高速アクセスに適する
2. 複数ドライブ、複数パーテーションをサポート
3. FAT12, FAT16, FAT32に対応
4. 8.3形式ファイル名に対応(LFN未対応)
5. FDISKフォーマットおよびSFDフォーマットに対応
6. 8/16ビットマイコン向けにコードを最適化

#### Tiny-FatFsの特徴(FatFsとの相違)

1. RAMの使用量を削減し、小メモリ・システム(RAM:1KB)にも対応
2. 単一ドライブのみサポート

### 上位レイヤI/F

FatFs/Tiny-FatFsモジュールは、次のファイル操作関数を提供しています。

- f_mount - ワークエリアの登録・削除
- f_open - ファイルのオープン・作成
- f_close - ファイルのクローズ
- f_read - ファイルの読み込み
- f_write - ファイルの書き込み
- f_lseek - ファイルR/Wポインタの移動
- f_truncate - ファイル・サイズの切り詰め
- f_sync - キャッシュされたデータのフラッシュ
- f_opendir - ディレクトリのオープン
- f_readdir - ディレクトリの読み出し
- f_getfree - ディスク空き領域の取得
- f_stat - ファイル・ステータスの取得
- f_mkdir - ディレクトリの作成
- f_unlink - ファイル/ディレクトリの削除
- f_chmod - ファイル/ディレクトリの属性の変更
- f_utime - ファイル/ディレクトリのタイムスタンプの変更
- f_rename - ファイル/ディレクトリの名前変更・移動
- f_mkfs - ディスクのフォーマット
- f_forward - ファイル・データをストリーム関数に直接転送する
- fgets - 文字列の読み込み
- fputc - 文字の書き込み
- fputs - 文字列の書き込み
- fprintf - 書式化文字列の書き込み

### 下位レイヤI/F

FatFs/Tiny-FatFsモジュールは、物理ドライブへのアクセスや現在時刻を得るため、下位レイヤに次のインターフェースを要求します。これらのインターフェースを持つそれぞれの記録メディアに対応したディスクI/Oモジュールは、ユーザにより用意する必要があります。資料にサンプル・ドライバあり。

- disk_initialize - ディスク・ドライブの初期化
- disk_status - ディスク・ドライブの状態取得
- disk_read - ディスクからの読み込み
- disk_write - ディスクへの書き込み
- disk_ioctl - その他のドライブ制御
- get_fattime - 日付・時刻の取得

### 資料

FatFs/Tiny-FatFsモジュールはフリー・ソフトウェアとして教育・研究・開発用に公開しています。どのような利用目的（個人・非商用・商用）でも使用・改変・配布について一切の制限はありませんが、全て利用者の責任の下での利用とします。

- FatFsモジュール・アプリケーション・ノート
- サンプル・プロジェクト（AVR, H8/300H, TLCS-870/C, PIC, V850ES）2008. 4. 1
- パフォーマンス・テスト（テスト・ボード：ATmega64/9.2MHz with MMC/HDD/CFC）
- FAT32仕様書 (Microsoft)
- MMCの使いかた