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

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

#### FatFsモジュールの特徴

- Windows互換 FATファイル・システム
- プラットフォーム非依存
- コンパクトなコードとRAM使用量
- 多くの構成オプション:
  - 複数のボリューム(物理ドライブ・区画)
  - DBCSを含む複数のANSI/OEMコード・ページ
  - 長いファイル名(LFN) (Unicode APIも選択可)
  - マルチタスク関連
  - マルチ・セクタ・サイズ
  - リード・オンリー構成、一部APIの削除、バッファ構成、その他…

### 上位レイヤ・インターフェース

FatFsモジュールは、アプリケーション・レイヤに対し、次のファイル操作関数(API)を提供します。つまり、このリストはFatFsにできることをシンプルに示しています。

- f_open - ファイルのオープン・作成
- f_close - ファイルのクローズ
- f_read - ファイルの読み出し
- f_write - ファイルの書き込み
- f_lseek - リード/ライト・ポインタの移動, ファイルの拡張
- f_truncate - ファイル・サイズの切り詰め
- f_sync - キャッシュされたデータのフラッシュ
- f_forward - ファイル・データをストリーム関数に転送
- f_stat - ファイル/サブディレクトリの存在チェックと情報の取得
- f_opendir - ディレクトリのオープン
- f_closedir - ディレクトリのクローズ
- f_readdir - ディレクトリの読み出し
- f_mkdir - サブディレクトリの作成
- f_unlink - ファイル/サブディレクトリの削除
- f_chmod - ファイル/サブディレクトリの属性の変更
- f_utime - ファイル/サブディレクトリのタイムスタンプの変更
- f_rename - ファイル/サブディレクトリの名前変更・移動
- f_chdir - カレント・ディレクトリの変更
- f_chdrive - カレント・ドライブの変更
- f_getcwd - カレント・ディレクトリの取得
- f_getfree - ボリューム空き領域の取得
- f_getlabel - ボリューム・ラベルの取得
- f_setlabel - ボリューム・ラベルの設定
- f_mount - ワークエリアの登録・削除
- f_mkfs - 論理ドライブのフォーマット
- f_fdisk - 物理ドライブの分割
- f_gets - 文字列の読み出し
- f_putc - 文字の書き込み
- f_puts - 文字列の書き込み
- f_printf - 書式化文字列の書き込み
- f_tell - 現在のリード/ライト・ポインタの取得
- f_eof - ファイル終端の有無の取得
- f_size - ファイル・サイズの取得
- f_error - ファイルのエラーの有無の取得

### 下位レイヤ・インターフェース

FatFsモジュールは、単なるファイル・システム・レイヤなので、メディア制御レイヤは含まれません。使用するメディアに対応した制御関数は、ユーザによって提供される必要があります。FatFsモジュールは、下位レイヤに対し少なくとも次のインターフェースを要求します。OS関連機能を有効にしたときは、加えてプロセス/メモリ関連関数も必要になります。サンプル・プロジェクトに下位レイヤの実装例を示します。

- disk_initialize - ドライブの初期化
- disk_status - ドライブの状態取得
- disk_read - データの読み出し
- disk_write - データの書き込み
- disk_ioctl - その他のドライブ制御
- get_fattime - 日付・時刻の取得

### 資料

FatFsモジュールはフリー・ソフトウェアとして教育・研究・開発用に公開しています。どのような利用目的（個人利用から商用まで）でも使用・改変・配布について一切の制限はありませんが、全て利用者の責任の下での利用とします。詳しくはアプリケーション・ノートを参照してください。

- FatFsユーザ・フォーラム
- 最初に読め: FatFsモジュール・アプリケーション・ノート 2013. 10. 2
- ねむいさんのぶろぐ (Well written implementations for STM32F/SDIO and LPC2300/MCI)
- ARM-Projects by Martin THOMAS (Examples for LPC2000, AT91SAM and STM32)
- FATファイル・システム仕様書 by Microsoft (The reference document on FAT file system)
- FATファイル・システム概要 (↑を読むためのガイド)
- MMCの使いかた
- パフォーマンス・テスト1 (ATmega64/9.2MHz with MMC via SPI, HDD/CFC via GPIO)
- パフォーマンス・テスト2 (LPC2368/72MHz with MMC via MCI)

戻る