From 7b78a5a287827db9e9b16286f3604aef69b37c5c Mon Sep 17 00:00:00 2001 From: Leo C Date: Mon, 17 Nov 2014 14:47:05 +0100 Subject: Import fatfs R0.10c --- fatfs/doc/ja/appnote.html | 110 ++++++++++++++++++++++---------------------- fatfs/doc/ja/chdir.html | 30 ++++++------ fatfs/doc/ja/chdrive.html | 22 ++++----- fatfs/doc/ja/chmod.html | 40 ++++++++-------- fatfs/doc/ja/close.html | 26 +++++------ fatfs/doc/ja/closedir.html | 26 +++++------ fatfs/doc/ja/dinit.html | 22 ++++----- fatfs/doc/ja/dioctl.html | 86 +++++++++++++++++----------------- fatfs/doc/ja/dread.html | 47 ++++++++++--------- fatfs/doc/ja/dstat.html | 22 ++++----- fatfs/doc/ja/dwrite.html | 50 ++++++++++---------- fatfs/doc/ja/eof.html | 28 +++++------ fatfs/doc/ja/error.html | 28 +++++------ fatfs/doc/ja/fattime.html | 30 ++++++------ fatfs/doc/ja/fdisk.html | 48 +++++++++---------- fatfs/doc/ja/filename.html | 34 +++++++------- fatfs/doc/ja/forward.html | 72 ++++++++++++++--------------- fatfs/doc/ja/getcwd.html | 28 +++++------ fatfs/doc/ja/getfree.html | 40 ++++++++-------- fatfs/doc/ja/getlabel.html | 34 +++++++------- fatfs/doc/ja/gets.html | 36 +++++++-------- fatfs/doc/ja/lseek.html | 76 +++++++++++++++--------------- fatfs/doc/ja/mkdir.html | 24 +++++----- fatfs/doc/ja/mkfs.html | 80 +++++++++++++++++++++++--------- fatfs/doc/ja/mount.html | 50 ++++++++++---------- fatfs/doc/ja/open.html | 96 +++++++++++++++++++------------------- fatfs/doc/ja/opendir.html | 28 +++++------ fatfs/doc/ja/printf.html | 44 +++++++++--------- fatfs/doc/ja/putc.html | 32 ++++++------- fatfs/doc/ja/puts.html | 32 ++++++------- fatfs/doc/ja/rc.html | 18 ++++---- fatfs/doc/ja/read.html | 36 +++++++-------- fatfs/doc/ja/readdir.html | 60 ++++++++++++------------ fatfs/doc/ja/rename.html | 32 ++++++------- fatfs/doc/ja/sdir.html | 28 +++++------ fatfs/doc/ja/setlabel.html | 38 +++++++-------- fatfs/doc/ja/sfatfs.html | 48 +++++++++---------- fatfs/doc/ja/sfile.html | 34 +++++++------- fatfs/doc/ja/sfileinfo.html | 48 +++++++++---------- fatfs/doc/ja/size.html | 26 +++++------ fatfs/doc/ja/stat.html | 67 +++++++++++++++++++++------ fatfs/doc/ja/sync.html | 26 +++++------ fatfs/doc/ja/tell.html | 26 +++++------ fatfs/doc/ja/truncate.html | 22 ++++----- fatfs/doc/ja/unlink.html | 28 +++++------ fatfs/doc/ja/utime.html | 32 ++++++------- fatfs/doc/ja/write.html | 36 +++++++-------- 47 files changed, 1002 insertions(+), 924 deletions(-) (limited to 'fatfs/doc/ja') diff --git a/fatfs/doc/ja/appnote.html b/fatfs/doc/ja/appnote.html index 0fb5579..4985bae 100644 --- a/fatfs/doc/ja/appnote.html +++ b/fatfs/doc/ja/appnote.html @@ -6,24 +6,24 @@ -
下に示す依存関係図は、FatFsモジュール利用の組み込みシステムにおける代表的な構成を示します。
-(a) FatFs用に書かれたディスク・モジュールがある場合は、そのまま追加するだけです。 (b) しかし、多くの既存のディスク・モジュールはそのAPIをFatFsに合わせるため、グルー関数が必要になるでしょう。
+(a) FatFs用に書かれたディスク モジュールがある場合は、そのまま追加するだけです。 (b) しかし、多くの既存のディスク モジュールはそのAPIをFatFsに合わせるため、グルー関数が必要になるでしょう。
必要なのはFatFsモジュールの要求するディスク関数を用意することだけで、それ以外にすることはありません。既に動作しているディスク・モジュールがあるなら、そのAPIをFatFsに合わせるかグルー関数を介してつなぐだけで済みますが、無い場合はほかから移植するか最初から書くかする必要があります。定義されている全ての関数が常に必要なわけではありません。例えば、リード・オンリー構成では書き込み系関数は必要ありません。次の表に構成オプションと要求される関数の対応を示します。
+必要なのはFatFsモジュールの要求するディスク関数を用意することだけで、それ以外にすることはありません。既に動作しているディスク モジュールがあるなら、そのAPIをFatFsに合わせるかグルー関数を介してつなぐだけで済みますが、無い場合はほかから移植するか最初から書くかする必要があります。定義されている全ての関数が常に必要なわけではありません。例えば、リード オンリー構成では書き込み系関数は必要ありません。次の表に構成オプションと要求される関数の対応を示します。
必要な関数 | 必要となる条件 | 備考 | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
disk_status disk_initialize disk_read | 常時 | ffsample.zip (サンプル) その他web上に多数 | |||||||||||||||||
disk_write get_fattime disk_ioctl (CTRL_SYNC) | _FS_READONLY == 0 | ||||||||||||||||||
disk_ioctl (GET_SECTOR_COUNT) disk_ioctl (GET_BLOCK_SIZE) | _USE_MKFS == 1 | ||||||||||||||||||
disk_ioctl (GET_SECTOR_SIZE) | _MAX_SS != _MIN_SS | ||||||||||||||||||
disk_ioctl (CTRL_ERASE_SECTOR) | _USE_ERASE == 1 | ||||||||||||||||||
disk_ioctl (CTRL_TRIM) | _USE_TRIM == 1 | ||||||||||||||||||
ff_convert ff_wtoupper | _USE_LFN >= 1 | option/unicode.c | |||||||||||||||||
ff_cre_syncobj ff_rel_grant ff_req_grant ff_del_syncobj | _FS_REENTRANT == 1 | option/syscall.c (サンプル) | |||||||||||||||||
ff_mem_alloc ff_mem_free | _USE_LFN == 3 |
ARM7 32bit | ARM7 Thumb | CM3 Thumb-2 | AVR | H8/300H | PIC24 | RL78 | V850ES | SH-2A | RX600 | IA-32 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Compiler | GCC | GCC | GCC | GCC | CH38 | C30 | CC78K0R | CA850 | SHC | RXC | VC6 |
Function | _FS_MINIMIZE | _FS_READONLY | _USE_STRFUNC | _FS_RPATH | _FS_LABEL | _USE_MKFS | _USE_FORWARD | _MULTI_PARTITION |
コードページ | コードサイズ[bytes] |
---|---|
SBCS | +3721 |
932(Shift-JIS) | +62609 |
932(Shift_JIS) | +62609 |
936(GBK) | +177797 |
949(Korean) | +139857 |
950(Big5) | +111497 |
LFN機能の上手な使い方は、それを使わないということです。実際、組み込み用途ではLFN機能がどうしても必要になるということはほとんど無いはずです。LFNを有効にすると、選択されたコード・ページに応じてモジュール・サイズが増大されます。右の表に各コード・ページにおけるLFNを有効にしたときのモジュール・サイズの違いを示します。特に、CJK地域では数万の文字が使われていますが、不幸なことにそれは巨大なOEM-Unicode相互変換テーブルを要求し、モジュール・サイズは劇的に増大されます。その結果、それらのコード・ページにおいてLFNを有効にしたFatFsモジュールは、AVRを含む殆どの8ビット・マイコンにインプリメントされることができません。
-LFN機能のハードルはそれだけではありません。マイクロソフト社はFATファイル・システムについていくつかの特許を保有しています。いずれもLFN機能の実装に関するもので、その利用に対して$0.25/unitのライセンス料を要求しています。このため、商用製品でLFN機能を利用するときは、最終仕向地によってはライセンスが必要になります。最近のFAT32ドライバの多くはLFN機能を含んでいるため、それらの使用に当たってライセンスが必要になりますが、FatFsではLFN機能を構成オプションで任意にON/OFFできるため、無効にしてライセンス問題を回避することもできます。
+LFN機能の上手な使い方は、それを使わないということです。実際、組み込み用途ではLFN機能がどうしても必要になるということはほとんど無いはずです。LFNを有効にすると、選択されたコード ページに応じてモジュール サイズが増大します。右の表に各コード ページにおけるLFNを有効にしたときのモジュール サイズの違いを示します。特に、CJK地域では数万の文字が使われていますが、不幸なことにそれは巨大なOEM-Unicode相互変換テーブルを要求し、モジュール サイズは劇的に増大します。その結果、それらのコード ページにおいてLFNを有効にしたFatFsモジュールは、多くの8ビット マイコンにインプリメントすることができません。
+LFN機能のハードルはそれだけではありません。マイクロソフト社はFATファイル システムについていくつかの特許を保有しています。いずれもLFN機能の実装に関するもので、その利用に対して$0.25/unitのライセンス料を要求しています。このため、商用製品でLFN機能を利用するときは、最終仕向地によってはライセンスが必要になります。最近のFAT32ドライバの多くはLFN機能を含んでいるため、それらの使用に当たってライセンスが必要になりますが、FatFsではLFN機能を構成オプションで任意にON/OFFできるため、無効にしてライセンス問題を回避することもできます。
互いに異なるボリュームに対するファイル操作はリエントラントで、常に同時平行に動作できます。同じボリュームに対してはデフォルトではリエントラントではありませんが、_FS_REENTRANTオプションでリエントラント(スレッド・セーフ)にすることはできます。この場合、OS依存の同期オブジェクト操作関数ff_cre_syncobj(), ff_del_syncobj(), ff_req_grant(), ff_rel_grant()もまたプロジェクトに追加されなければなりません。サンプル・コードと解説はoption/syncobj.cにあります。
+互いに異なるボリュームに対するファイル操作はリエントラントで、常に同時平行に動作できます。同じボリュームに対してはデフォルトではリエントラントではありませんが、_FS_REENTRANTオプションでリエントラント(スレッド セーフ)にすることはできます。この場合、OS依存の同期オブジェクト操作関数ff_cre_syncobj(), ff_del_syncobj(), ff_req_grant(), ff_rel_grant()もまたプロジェクトに追加されなければなりません。サンプル コードと解説はoption/syncobj.cにあります。
この場合、あるタスクがボリュームを使用中に他のタスクからそのボリュームに対するファイル関数が呼び出されると、そのアクセスは先のタスクがファイル関数を抜けるまでブロックされます。もし、待ち時間が_TIMEOUTで指定された期間を越すと、その関数はFR_TIMEOUTでアボートします。いくつかのRTOSではタイムアウト機能はサポートされないかも知れません。
-ひとつの例外がf_mount(), f_mkfs(), f_fdisk()にあります。これらの関数は同じボリューム(または関連する物理ドライブ)に対してリエントラントではありません。これらの関数を使用するときは、アプリケーション・レベルで排他制御しなければなりません。
+ひとつの例外がf_mount(), f_mkfs(), f_fdisk()にあります。これらの関数は同じボリューム(または関連する物理ドライブ)に対してリエントラントではありません。これらの関数を使用するときは、アプリケーション レベルで排他制御しなければなりません。
注: このセクションはFatFsモジュールそれ自体のリエントランシーについて説明しています。その下位のディスクI/Oモジュールのリエントランシーに関しては何の前提もありません。
FatFsモジュールではデフォルトでは多重アクセス制御機能をサポートしていません。ファイルに対する多重アクセスは、そのアクセス・モードによって制限されます。一つのファイルに対する多重オープンは、それらが全てリード・モードのときに限って許可されます。書き込みモードを含む多重オープン、また開かれているファイルに対するリネームや削除を行ってはなりません。さもないと、そのボリュームのFAT構造が破壊される可能性があります。
-_FS_LOCKに1以上の値(値は同時に管理できるファイル数)をセットすることで多重アクセス制御機能が有効になり、ファイル単位のアクセス制御を自動で行うこともできます。この場合、上記のルールを破ったオープン・リネーム・削除を試みると、その関数はFR_LOCKEDで失敗します。また、_FS_LOCKを越える数のファイルやサブ・ディレクトリを同時にオープンしようとすると、FR_TOO_MANY_OPEN_FILESで失敗します。
+FatFsモジュールではデフォルトでは多重アクセス制御機能をサポートしていません。ファイルに対する多重アクセスは、そのアクセス モードによって制限されます。一つのファイルに対する多重オープンは、それらが全てリード モードのときに限って許可されます。書き込みモードを含む多重オープン、また開かれているファイルに対するリネームや削除を行ってはなりません。さもないと、そのボリュームのFAT構造が破壊される可能性があります。
+_FS_LOCKに1以上の値(値は同時に管理できるファイル数)をセットすることで多重アクセス制御機能が有効になり、ファイル単位のアクセス制御を自動で行うこともできます。この場合、上記のルールを破ったオープン・リネーム・削除を試みると、その関数はFR_LOCKEDで失敗します。また、_FS_LOCKを越える数のファイルやサブ ディレクトリを同時にオープンしようとすると、FR_TOO_MANY_OPEN_FILESで失敗します。
小規模な組込システムでのファイルの読み書きにおける効率の良いアクセスのため、アプリケーション・プログラマはFatFsモジュールの中でどのような処理が行われているか考慮すべきです。ストレージ上のデータはf_read()により次のシーケンスで転送されます。
-図1. セクタ・ミスアラインド・リード (ショート)
+
小規模な組込システムでのファイルの読み書きにおける効率の良いアクセスのため、アプリケーション プログラマはFatFsモジュールの中でどのような処理が行われているか考慮すべきです。ストレージ上のデータはf_read()により次のシーケンスで転送されます。
+図1. セクタ ミスアラインド リード (ショート)
図2. セクタ・ミスアラインド・リード (ロング)
+
図2. セクタ ミスアラインド リード (ロング)
図3. セクタ・アラインド・リード
+
図3. セクタ アラインド リード
ファイルI/Oバッファはセクタの一部のデータを読み書きするためのセクタ・バッファを意味します。セクタ・バッファは、それぞれのファイル・オブジェクト内のプライベート・セクタ・バッファまたはファイル・システム・オブジェクト内の共有セクタ・バッファのどちらかです。バッファ構成オプションの_FS_TINYは、データ転送にどちらを使うかを決定します。タイニー・バッファ(1)が選択されるとデータ・メモリの消費はそれぞれのファイル・オブジェクトで512バイト減少されます。この場合、FatFsモジュールはファイル・データの転送とFAT/ディレクトリ・アクセスにファイル・システム・オブジェクト内のセクタ・バッファだけを使用します。タイニー・バッファの欠点は、セクタ・バッファにキャッシュされたFATデータがファイル・データの転送により失われ、クラスタ境界の毎にリロードされなければならないことです。でも、悪くない性能と少ないメモリ消費の視点から多くのアプリケーションに適するでしょう。
-図1はセクタの一部のデータがファイルI/Oバッファを経由で転送されることを示します。図2に示される長いデータの転送では、転送データの中間の1セクタまたはそれ以上のセクタにまたがる転送データがアプリケーション・バッファに直接転送されています。図3は転送データ全体がセクタ境界にアライメントされている場合を示しています。この場合、ファイルI/Oバッファは使用されません。直接転送においては最大の範囲のセクタがdisk_read()で一度に読み込まれますが、クラスタ境界を越えるマルチ・セクタ転送はそれが隣接であっても行われません。
-このように、セクタにアライメントしたファイルの読み書きへの配慮はバッファ経由のデータ転送を避け、読み書き性能は改善されるでしょう。その効果に加え、タイニー構成でキャッシュされたFATデータがファイル・データの転送によりフラッシュされず、非タイニー構成と同じ性能を小さなメモリ・フットプリントで達成できます。
+ファイルI/Oバッファはセクタの一部のデータを読み書きするためのセクタ バッファを意味します。セクタ バッファは、それぞれのファイル オブジェクト内のプライベート セクタ バッファまたはファイル システム オブジェクト内の共有セクタ バッファのどちらかです。バッファ構成オプションの_FS_TINYは、データ転送にどちらを使うかを決定します。タイニー バッファ(1)が選択されるとデータ メモリの消費はそれぞれのファイル オブジェクトで_MAX_SSバイト減少されます。この場合、FatFsモジュールはファイル データの転送とFAT/ディレクトリ アクセスにファイル システム オブジェクト内のセクタ バッファだけを使用します。タイニー バッファの欠点は、セクタ バッファにキャッシュされたFATデータがファイル データの転送により失われ、クラスタ境界の毎にリロードされなければならないことです。でも、悪くない性能と少ないメモリ消費の視点から多くのアプリケーションに適するでしょう。
+図1はセクタの一部のデータがファイルI/Oバッファを経由で転送されることを示します。図2に示される長いデータの転送では、転送データの中間の1セクタまたはそれ以上のセクタにまたがる転送データがアプリケーション バッファに直接転送されています。図3は転送データ全体がセクタ境界にアライメントされている場合を示しています。この場合、ファイルI/Oバッファは使用されません。直接転送においては最大の範囲のセクタがdisk_read()で一度に読み込まれますが、クラスタ境界を越えるマルチ セクタ転送はそれが隣接であっても行われません。
+このように、セクタにアライメントしたファイルの読み書きへの配慮はバッファ経由のデータ転送を避け、読み書き性能は改善されるでしょう。その効果に加え、タイニー構成でキャッシュされたFATデータがファイル データの転送によりフラッシュされず、非タイニー構成と同じ性能を小さなメモリ フットプリントで達成できます。
HDDなどのディスク・メディアとは異なり、SDCやCFCなどのフラッシュ・メモリ・メディアの性能を引き出すには、その特性を意識した制御が必要になります。
-HDDなどのディスク メディアとは異なり、SDCやCFCなどのフラッシュ メモリ メディアの性能を引き出すには、その特性を意識した制御が必要になります。
+フラッシュ・メモリ・メディアの書き込み速度はシングル・セクタ書き込みの時に最も低いものになり、一回のトランザクションで転送されるセクタ数が大きくなるほど書き込み速度は向上します。この効果はバス速度が高速になるほど顕著で、10倍以上の差が現れることも珍しくありません。テスト結果は、マルチ・セクタ書き込み(W:16K, 32 sectors)がシングル・セクタ書き込み(W:100, 1 sector)よりどの程度速いかを明確に示しています。大容量メディアほどシングル・セクタ書き込みが遅くなる点もまた重要です。書き込みトランザクションの回数はまた、メディアの寿命にも影響してきます。このため、アプリケーションはなるべく大きなブロック(クラスタ・サイズまたは2の累乗セクタ境界にアライメントした)で読み書きを行う必要があります。もちろん、アプリケーションからメディアに至る全てのレイヤがマルチ・セクタ転送に対応していないと意味がありません。残念ながら、既存のオープン・ソースのドライバの多くはマルチ・セクタ転送に未対応です。なお、FatFsモジュールおよびサンプル・ドライバはマルチ・セクタ転送に対応しています。
+フラッシュ メモリ メディアの書き込み速度はシングル セクタ書き込みの時に最も低いものになり、一回のトランザクションで転送されるセクタ数が大きくなるほど書き込み速度は向上します。この効果はバス速度が高速になるほど顕著で、10倍以上の差が現れることも珍しくありません。テスト結果は、マルチ セクタ書き込み(W:16K, 32 sectors)がシングル セクタ書き込み(W:100, 1 sector)よりどの程度速いかを明確に示しています。大容量メディアほどシングル セクタ書き込みが遅くなる点もまた重要です。書き込みトランザクションの回数はまた、メディアの寿命にも影響してきます。このため、アプリケーションはなるべく大きなブロック(クラスタ サイズまたは2の累乗セクタ境界にアライメントした)で読み書きを行う必要があります。もちろん、アプリケーションからメディアに至る全てのレイヤがマルチ セクタ転送に対応していないと意味がありません。残念ながら、既存のオープン ソースのドライバの多くはマルチ セクタ転送に未対応です。なお、FatFsモジュールおよびサンプル ドライバはマルチ セクタ転送に対応しています。
通常のファイル消去では、記録されたデータに対して何らかの制御が行われるわけではなく、単にFAT上に未使用クラスタとして記録されているだけです。このため、ファイルが消去されたあともそれらは有効なメモリ・ブロックとしてフラッシュ・メモリ上に残ります。そこで、ファイルを消去するとき、占有していたデータ・セクタを明示的に消去(つまり未使用ブロックにする)することにより、メディア内の空きブロックを増やすことができます。これにより、次にそのブロックに書き込むときの消去動作が無くなり、書き込み性能が向上する可能性があります。また、ウェアレベリングに使えるブロックが増え、メディアの耐久性も向上するかも知れません。この機能を有効にするには、構成オプションの_USE_ERASEに1を設定します。これはフラッシュ・メモリ・メディアの内部動作に期待した制御なので、効果があるとは限りません。また、ファイル消去の時間が延びることも考慮に入れるべきです。
+通常のファイル消去では、記録されたデータに対して何らかの制御が行われるわけではなく、単にFAT上に未使用クラスタとして記録されているだけです。このため、ファイルが消去されたあともそれらは有効なメモリ ブロックとしてフラッシュ メモリ上に残ります。そこで、ファイルを消去するとき、占有していたデータ セクタを明示的に消去(つまり未使用ブロックにする)することにより、メディア内の空きブロックを増やすことができます。これにより、次にそのブロックに書き込むときの消去動作が無くなり、書き込み性能が向上する可能性があります。また、ウェアレベリングに使えるブロックが増え、メディアの耐久性も向上するかも知れません。この機能を有効にするには、構成オプションの_USE_TRIMに1を設定します。これはフラッシュ メモリ メディアの内部動作に期待した制御なので、効果があるとは限りません。また、ファイル消去の時間が延びることも考慮に入れるべきです。
ストレージ上のFAT構造を操作している途中で、停電、不正なメディアの取り外し、回復不能なデータ・エラー等の障害が発生すると、処理が中途半端な状態で中断され、その結果としてFATボリュームの構造が破壊される可能性があります。次にFatFsモジュールにおけるクリチカル・セクションと、その間の障害により起きうるエラーの状態を示します。
+ストレージ上のFAT構造を操作している途中で、停電、不正なメディアの取り外し、回復不能なデータ エラー等の障害が発生すると、処理が中途半端な状態で中断され、その結果としてFATボリュームの構造が破壊される可能性があります。次にFatFsモジュールにおけるクリチカル セクションと、その間の障害により起きうるエラーの状態を示します。
赤で示したセクションを実行中に障害が発生した場合、クロス・リンクが発生して操作対象のファイル・ディレクトリが失われる可能性があります。黄色で示したセクションを実行中に障害が発生した場合、つぎのうちいずれかまたは複数の結果が生じる可能性があります。
+赤で示したセクションを実行中に障害が発生した場合、クロス リンクが発生して操作対象のファイル ディレクトリが失われる可能性があります。黄色で示したセクションを実行中に障害が発生した場合、つぎのうちいずれかまたは複数の結果が生じる可能性があります。
いずれも書き込み中や操作の対象でないファイルには影響はありません。これらのクリチカル・セクションは、ファイルを書き込みモードで開いている時間を最小限にするか、f_sync()を適宜使用することで図5のようにリスクを最小化することができます。
+いずれも書き込み中や操作の対象でないファイルには影響はありません。これらのクリチカル セクションは、ファイルを書き込みモードで開いている時間を最小限にするか、f_sync()を適宜使用することで図5のようにリスクを最小化することができます。
ソース・ファイルのヘッダにライセンス条件が記述されているので、利用の際はそれに従うこと。英語を読めない方のために以下に日本語訳を示しておきます。
+ソース ファイルのヘッダにライセンス条件が記述されているので、利用の際はそれに従うこと。英語を読めない方のために以下に日本語訳を示しておきます。
/*----------------------------------------------------------------------------/ / FatFs - FAT file system module R0.10b (C)ChaN, 2014 /-----------------------------------------------------------------------------/ -/ FatFsモジュールは、小規模な組み込みシステム向けの汎用FATファイルシステム・ -/ モジュールです。これはフリー・ソフトウェアとして、教育・研究・開発のために -/ 以下のライセンス・ポリシーの下で公開されています。 +/ FatFsモジュールは、小規模な組み込みシステム向けの汎用FATファイルシステム +/ モジュールです。これはフリー ソフトウェアとして、教育・研究・開発のために +/ 以下のライセンス ポリシーの下で公開されています。 / / Copyright (C) 2014, ChaN, all right reserved. / -/ * FatFsモジュールはフリー・ソフトウェアであり、また無保証です。 +/ * FatFsモジュールはフリー ソフトウェアであり、また無保証です。 / * 用途に制限はありません。あなたの責任の下において、個人的・非営利的な / ものから商用製品の開発に及ぶ目的に使用・改変・再配布することができます。 -/ * ソース・コードを再配布するときは、上記の著作権表示を保持しなければなりません。 +/ * ソース コードを再配布するときは、上記の著作権表示を保持しなければなりません。 / /-----------------------------------------------------------------------------/-
要するにFatFsはタダで自由に使えるということです。ソース・コードを再配布するときは、このブロックをそのまま保持しておくこと。このようにFatFsはBSDライクなライセンスとしていますが、一つ大きな違いがあります。特に組み込み用途での利用価値を高めるため、バイナリ形式(ソース・コードを含まない形式全て)での再配布については、条件は設けていません。その場合は、FatFsおよびそのライセンス文書についてはドキュメントに明記してもしなくてもかまいません。これは、一条項BSDライセンスと等価ということです。もちろんGNU GPLプロジェクトとも共存可能です。何らかの変更を加えて再配布する際は、矛盾しない他のライセンス(GNU GPLや修正BSDライセンスなど)に変更することも可能です。
+要するにFatFsはタダで自由に使えるということです。ソース コードを再配布するときは、このブロックをそのまま保持しておくこと。このようにFatFsはBSDライクなライセンスとしていますが、一つ大きな違いがあります。特に組み込み用途での利用価値を高めるため、バイナリ形式(ソース コードを含まない形式全て)での再配布については、条件は設けていません。その場合は、FatFsおよびそのライセンス文書についてはドキュメントに明記してもしなくてもかまいません。これは、一条項BSDライセンスと等価ということです。もちろんGNU GPLプロジェクトとも共存可能です。何らかの変更を加えて再配布する際は、矛盾しない他のライセンス(GNU GPLや修正BSDライセンスなど)に変更することも可能です。
JgEfBNgύX܂B
+カレント ディレクトリを変更します。
FRESULT f_chdir ( - const TCHAR* path /* [IN] fBNgւ̃|C^ */ + const TCHAR* path /* [IN] ディレクトリ名へのポインタ */ );
FR_OK, FR_DISK_ERR, @@ -49,33 +49,33 @@ FRESULT f_chdir (
e{[̃JgEfBNgύX܂BJgEfBNǵÃ{[̃}Eg삪sꂽƂA[gEfBNgɏݒ肳܂BJgEfBNǵAt@CEVXeEIuWFNgɕێ邽߁Ã{[gpSẴ^XNɑĉe^܂B
+各ボリュームのカレント ディレクトリを変更します。カレント ディレクトリは、そのボリュームのマウント動作が行われたとき、ルート ディレクトリに初期設定されます。カレント ディレクトリは、ファイル システム オブジェクトに保持されるため、そのボリュームを使用する全てのタスクに対して影響を与えます。
_FS_RPATH == 1̂ƂɎgp\ƂȂ܂B
+_FS_RPATH == 1のときに使用可能となります。
- /* JgEhCũJgEfBNgύX ([gdir1) */ + /* カレント ドライブのカレント ディレクトリを変更 (ルート下のdir1へ) */ f_chdir("/dir1"); - /* hCu2̃JgEfBNgύX (efBNg) */ + /* ドライブ2のカレント ディレクトリを変更 (親ディレクトリへ) */ f_chdir("2:..");
JgEhCuύX܂B
+カレント ドライブを変更します。
FRESULT f_chdrive ( - const TCHAR* path /* [IN] ΏۃhCuw肵܂ */ + const TCHAR* path /* [IN] 対象ドライブを指定します */ );
FR_OK, FR_INVALID_DRIVE @@ -40,19 +40,19 @@ FRESULT f_chdrive (
JgEhCuύX܂BVXeN̏l̓hCu0łB̐ݒFatFsW[̐ÓIϐɋL^邽߁ASẴ^XNɑĉe^܂B
+カレント ドライブを変更します。システム起動時の初期値はドライブ0です。この設定はFatFsモジュールの静的変数に記録されるため、全てのタスクに対して影響を与えます。
_FS_RPATH == 1ŁA_VOLUMES > 1̂ƂɎgp\ƂȂ܂B
+_FS_RPATH == 1で、且つ_VOLUMES > 1のときに使用可能となります。
t@C܂̓TuEfBNg̑ύX܂B
+ファイルまたはサブ ディレクトリの属性を変更します。
FRESULT f_chmod ( - const TCHAR* path, /* [IN] IuWFNgւ̃|C^ */ - BYTE attr, /* [IN] ݒl */ - BYTE mask /* [IN] ύX}XN */ + const TCHAR* path, /* [IN] オブジェクト名へのポインタ */ + BYTE attr, /* [IN] 設定値 */ + BYTE mask /* [IN] 変更マスク */ );
l | Ӗ |
---|---|
AM_RDO | [hEI[ |
AM_ARC | A[JCu |
AM_SYS | VXe |
AM_HID | qhD |
値 | 意味 |
AM_RDO | リード オンリー |
AM_ARC | アーカイブ |
AM_SYS | システム |
AM_HID | ヒドゥン |
FR_OK, FR_DISK_ERR, @@ -65,19 +65,19 @@ FRESULT f_chmod (
_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂Ƃgp\łB
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のとき使用可能です。
- /* [hI[ZbgAA[JCuNAȂ͕ύXȂ */ + /* リードオンリーをセット、アーカイブをクリア、その他は変更しない */ f_chmod("file.txt", AM_RDO, AM_RDO | AM_ARC);
t@C܂B
+ファイルを閉じます。
FRESULT f_close ( - FIL* fp /* [IN] t@CEIuWFNgւ̃|C^ */ + FIL* fp /* [IN] ファイル オブジェクトへのポインタ */ );
FR_OK, FR_DISK_ERR, @@ -44,23 +44,23 @@ FRESULT f_close (
t@C܂B炩݂̏̍sꂽt@C̏ꍇALbVꂽ([h/CgEobt@̃f[^AύXꂽFATfBNg)̓fBXNɏ߂܂BIƁÃt@CEIuWFNg͖ɂȂÃł܂B
-t@CEIuWFNgǂݏop[hŁA_FS_LOCKIvVIĂȂꍇ́At@CɃt@CEIuWFNgj邱Ƃł܂BA͏̌݊̓_Ő͂܂B
+ファイルを閉じます。何らかの書き込みの行われたファイルの場合、キャッシュされた状態(リード/ライト バッファ上のデータ、変更されたFATやディレクトリ項目)はディスクに書き戻されます。関数が正常終了すると、そのファイル オブジェクトは無効になり、そのメモリも解放できます。
+ファイル オブジェクトが読み出し専用モードで、_FS_LOCKオプションが選択されていない場合は、ファイルを閉じずにファイル オブジェクトを破棄することもできます。しかし、これは将来の互換性の点で推奨はされません。
SĂ̍\Ŏgp\łB
+全ての構成で使用可能です。
fBNg܂B
+ディレクトリを閉じます。
FRESULT f_closedir ( - DIR* dp /* [IN] fBNgEIuWFNgւ̃|C^ */ + DIR* dp /* [IN] ディレクトリ オブジェクトへのポインタ */ );
FR_OK, FR_INT_ERR, @@ -42,23 +42,23 @@ FRESULT f_closedir (
fBNg܂BIƁÃfBNgEIuWFNg͖ɂȂÃł܂B
-_FS_LOCKIvVIĂȂꍇ́Ȁs킸ɃfBNgEIuWFNgj邱Ƃł܂BA͏̌݊̓_Ő͂܂B
+ディレクトリを閉じます。関数が正常終了すると、そのディレクトリ オブジェクトは無効になり、そのメモリも解放できます。
+_FS_LOCKオプションが選択されていない場合は、この処理を行わずにディレクトリ オブジェクトを破棄することもできます。しかし、これは将来の互換性の点で推奨はされません。
_FS_MINIMIZE <= 1̂Ƃgp\ɂȂ܂B
+_FS_MINIMIZE <= 1のとき使用可能になります。
Xg[WEfoCX܂B
+ストレージ デバイスを初期化します。
DSTATUS disk_initialize ( - BYTE pdrv /* [IN] hCuԍ */ + BYTE pdrv /* [IN] 物理ドライブ番号 */ );
͖̊߂lƂăfBXNEXe[^XԂ܂BfBXNEXe[^X̏ڍׂɊւĂdisk_status()QƂĂB
+この関数は戻り値としてディスク ステータスを返します。ディスク ステータスの詳細に関してはdisk_status()を参照してください。
Xg[WEfoCXAf[^̓ǂݏȂǑSĂ̓삪\ȏԂɂ܂BƁA߂lSTA_NOINITtONA܂B
-AvP[V͂̊ĂяoĂ͂Ȃ܂BȂƁAFAT{[j\܂BG[ɂďKvȂƂ́Af_mount()gpĂBFatFsW[́A}EgɂAKvɉĂ̊Ăяo܂B
+ストレージ デバイスを初期化し、データの読み書きなど全ての動作が可能な状態にします。関数が成功すると、戻り値のSTA_NOINITフラグがクリアされます。
+アプリケーションからはこの関数を呼び出してはなりません。さもないと、FATボリュームが破壊される可能性があります。エラー等により再初期化が必要なときは、f_mount()を使用してください。FatFsモジュールは、自動マウント動作により、必要に応じてこの関数を呼び出します。
ʓIȃf[^ǂݏȊÕXg[WEfoCX̂ɑlXȐs܂B
+一般的なデータ読み書き以外のストレージ デバイス自体に対する様々な制御を行います。
DRESULT disk_ioctl ( - BYTE pdrv, /* [IN] hCuԍ */ - BYTE cmd, /* [IN] R}h */ - void* buff /* [I/O] f[^nobt@ */ + BYTE pdrv, /* [IN] 物理ドライブ番号 */ + BYTE cmd, /* [IN] 制御コマンド */ + void* buff /* [I/O] データ受け渡しバッファ */ );
Xg[WEfoCX̎ނɂT|[gR}h͈قȂ܂AFatFsW[̂́A̔ėpR}ĥݎgpÃfoCXɈˑ͍s܂B
+ストレージ デバイスの種類によりサポートされるコマンドは異なりますが、FatFsモジュール自体は、次の汎用コマンドのみ使用し、特定のデバイスに依存した制御は行いません。
R}h | |
---|---|
CTRL_SYNC | Xg[WEfoCX̃f[^ݏ܂BCgEobNELbVȂǂ݂ꍇ́A܂ĂȂf[^݂܂BfBAւ݂̏ꂼdisk_write()̓Ŋꍇ́ÃR}hɑĂ邱Ƃ͂܂B |
GET_SECTOR_COUNT | buff̎wDWORD^ϐɃhCȗZN^Ԃ܂Bf_mkfs()f_fdisk()ĂяoA쐬{[̃TCY肷邽߂Ɏgp܂B |
GET_SECTOR_SIZE | buff̎wWORD^ϐɃhCũZN^ETCYԂ܂BLl512A1024A2048܂4096łBZN^ETCYŒ\(_MAX_SS ==_MIN_SS)̂Ƃ͂̃R}h͎g邱Ƃ͂ȂAɂ̃ZN^ETCYœ삵ȂȂ܂B |
GET_BLOCK_SIZE | buff̎wDWORD^ϐɃtbVȄubNETCY(ZN^P)Ԃ܂B132768͈̔͂2̗ݏ̒lłȂȂ܂Bsȏꍇ܂̓tbVEȊÕfBAł1Ԃ܂Bf_mkfs()ł̂ݎgpA{[̃f[^̈͂̋EɃACg܂B |
CTRL_ERASE_SECTOR | tbVË̗̖IBbuff̎wDWORD^zɂ͏̈ {JnZN^,IZN^} w肵ČĂяo܂B_USE_ERASE1̂ƂANX^ƂɌĂяo܂B́AATAR}hEZbgTrimR}hƓŁA̋@\T|[gȂꍇ͉Kv͂܂B܂A߂l̓`FbNꂸASɍsȂƂĂFatFs̓ɂ͉e܂B |
コマンド | 解説 |
CTRL_SYNC | デバイスのデータ書き込み処理を完了させます。ドライバがライト バック キャッシュなどを持っている場合は、書き込まれていないデータを即時書き込みます。メディア上への書き込みがそれぞれdisk_write()の中で完了する場合は、このコマンドに対してすることはありません。 |
GET_SECTOR_COUNT | 総セクタ数の取得。buffの指すDWORD型変数にドライブ上の総セクタ数を返します。f_mkfs()およびf_fdisk()内から呼び出され、作成するボリュームのサイズを決定するために使用されます。 |
GET_SECTOR_SIZE | セクタ サイズの取得。buffの指すWORD型変数にドライブのセクタ サイズを返します。有効値は512、1024、2048または4096です。セクタ サイズが固定(_MAX_SS ==_MIN_SS)のときはこのコマンドは使われることはなく、デバイスは常にそのセクタ サイズで動作しなければなりません。 |
GET_BLOCK_SIZE | 消去ブロック サイズの取得。buffの指すDWORD型変数にフラッシュ メモリの消去ブロック サイズ(セクタ単位)を返します。1から32768の範囲で2の累乗の値でなければなりません。ブロック サイズ不明またはフラッシュ メモリ以外のデバイスでは1を返します。f_mkfs()内でのみ使用され、作成されるボリュームのデータ領域はこの境界にアライメントされます。 |
CTRL_TRIM | 不必要セクタの通知。buffの指すDWORD型配列には不必要になった領域 {開始セクタ,終了セクタ} を指定して呼び出されます。TRIM機能が有効(_USE_TRIM == 1)で、クラスタが解放されるとき、およびフォーマット時に呼び出されます。これは、ATAコマンド セットのTrimコマンドと等価で、この機能をサポートしないデバイスは何もする必要はありません。また、戻り値はチェックされず、結果によってFatFsの動作が影響を受けることはありません。 |
FatFŝ̓foCXˑR}h[U`R}h͈؎gp܂AAvP[V牽炩̃foCX䂪sƕ֗ȂƂ܂BAvP[VŕWȊO̐䂪KvȂƂ́AKvɉă[U`R}hljėpƂ悢ł傤BɃR}h̗܂B
+FatFs自体はデバイス依存コマンドやユーザ定義コマンドは一切使用しませんが、アプリケーションから何らかのデバイス制御が行えると便利なことがあります。アプリケーション上で標準以外の制御が必要なときは、必要に応じてユーザ定義コマンドを追加して利用するとよいでしょう。次にコマンドの例を示します。
R}h | |
---|---|
CTRL_FORMAT | fBA̕tH[}bgs܂BbuffNULLłȂƂAis\̂߂̃R[obÑAhX܂B |
CTRL_POWER_IDLE | foCXAChԂɂ܂Bʏ̓ǂݏvŃANeBuԂɖ߂ȂASTA_NOINITtOZbgKv͂܂B |
CTRL_POWER_OFF | foCXVbg_EԂɂ܂BSTA_NOINIT̓Zbg܂BfoCXdisk_initialize()ŃANeBuԂɖ߂܂B |
CTRL_LOCK | [Uɂ郁fBA̎o֎~܂B |
CTRL_UNLOCK | [Uɂ郁fBA̎o܂B |
CTRL_EJECT | fBAro܂BASTA_NOINITSTA_NODISKtO̓Zbg܂B |
MMC_GET_TYPE | J[hE^CvtO(b0:MMCv3, b1:SDv1, b2:SDv2+, b3:LBA)buff̎BYTEϐɓǂݏo܂B(MMC/SDJ[hp) |
MMC_GET_CSD | CSDWX^̓ebuff̎16oCg̃obt@ɓǂݏo܂B(MMC/SDJ[hp) |
MMC_GET_CID | CIDWX^̓ebuff̎16oCg̃obt@ɓǂݏo܂B(MMC/SDJ[hp) |
MMC_GET_OCR | OCRWX^̓ebuff̎4oCg̃obt@ɓǂݏo܂B(MMC/SDJ[hp) |
MMC_GET_SDSTAT | SD STATUSWX^̓ebuff̎64oCg̃obt@ɓǂݏo܂B(SDJ[hp) |
ATA_GET_REV | rWER[hbuff̎16oCg̃obt@ɓǂݏo܂B(ATA/CFJ[hp) |
ATA_GET_MODEL | fER[hbuff̎40oCg̃obt@ɓǂݏo܂B(ATA/CFJ[hp) |
ATA_GET_SN | VAԍbuff̎20oCg̃obt@ɓǂݏo܂B(ATA/CFJ[hp) |
コマンド | 解説 |
CTRL_FORMAT | メディアの物理フォーマットを行います。buffはNULLでないとき、進行表示のためのコールバック関数のアドレスを示します。 |
CTRL_POWER_IDLE | デバイスをアイドル状態にします。通常の読み書き要求でアクティブ状態に戻るなら、STA_NOINITフラグをセットする必要はありません。 |
CTRL_POWER_OFF | デバイスをシャットダウン状態にします。STA_NOINITはセットされます。デバイスはdisk_initialize()でアクティブ状態に戻ります。 |
CTRL_LOCK | ユーザによるメディアの取り出しを禁止します。 |
CTRL_UNLOCK | ユーザによるメディアの取り出しを許可します。 |
CTRL_EJECT | メディアを排出します。完了後、STA_NOINITとSTA_NODISKフラグはセットされます。 |
MMC_GET_TYPE | カード タイプを示すフラグ(b0:MMCv3, b1:SDv1, b2:SDv2+, b3:LBA)をbuffの示すBYTE変数に読み出します。(MMC/SDカード専用) |
MMC_GET_CSD | CSDレジスタの内容をbuffの示す16バイトのバッファに読み出します。(MMC/SDカード専用) |
MMC_GET_CID | CIDレジスタの内容をbuffの示す16バイトのバッファに読み出します。(MMC/SDカード専用) |
MMC_GET_OCR | OCRレジスタの内容をbuffの示す4バイトのバッファに読み出します。(MMC/SDカード専用) |
MMC_GET_SDSTAT | SD STATUSレジスタの内容をbuffの示す64バイトのバッファに読み出します。(SDカード専用) |
ATA_GET_REV | リビジョン コードをbuffの示す16バイトのバッファに読み出します。(ATA/CFカード専用) |
ATA_GET_MODEL | モデル コードをbuffの示す40バイトのバッファに読み出します。(ATA/CFカード専用) |
ATA_GET_SN | シリアル番号をbuffの示す20バイトのバッファに読み出します。(ATA/CFカード専用) |
[hEI[\ŁAZN^ETCYŒ\̂Ƃ́Å͕KvƂ܂B
+リード オンリー構成で、かつセクタ サイズ固定構成のときは、この関数は必要とされません。
Xg[WEfoCXf[^ǂݏo܂B
+ストレージ デバイスからデータを読み出します。
DRESULT disk_read ( - BYTE pdrv, /* [IN] hCuԍ */ - BYTE* buff, /* [OUT] ǂݏoobt@ւ̃|C^ */ - DWORD sector, /* [IN] ǂݏoJnZN^ԍ */ - UINT count /* [IN] ǂݏoZN^ */ + BYTE pdrv, /* [IN] 物理ドライブ番号 */ + BYTE* buff, /* [OUT] 読み出しバッファへのポインタ */ + DWORD sector, /* [IN] 読み出し開始セクタ番号 */ + UINT count /* [IN] 読み出すセクタ数 */ );
buffBYTE^Ȃ̂ŁAw肳AhXɃ[hEACgĂƂ͌܂BACgEAhXւ̓]́Aړ]ɂĔ邱Ƃ܂BAn[hEFA̐ł̂悤ȓ]s\ȂƂ́Åœi]Ȃǂĉ邩A܂͕ʂ̕@őΉȂȂ܂Bɂ̑Ή@܂(ꂩOK)B
+ストレージ デバイスに対するデータの読み書きは、セクタ単位で行われます。FatFsでは512~4096バイトのセクタ サイズをサポートします。固定セクタ サイズ構成(_MIN_SS == MAX_SS)のときは、暗黙的にそのセクタ サイズで動作しなければなりません。可変セクタ サイズ構成(_MIN_SS < MAX_SS)
のときは、初期化後disk_ioctl()でセクタ サイズを問い合わせてくるので、それに対して正しい値を返す必要があります。 +buffはBYTE型なので、指定されるアドレスは常にワード アライメントされているとは限りません。非アライメント アドレスへの転送は、直接転送において発生することがあります。もしも、ハードウェア上の制約でそのような転送が不可能なときは、この関数内で二段転送するなどして解決するか、または別の方法で対応しなければなりません。次にいくつかの対応方法を示します(いずれか一つでOK)。
ʓIɁAZN^̓]v́AXg[WEfoCXɑĉ\Ȍ}`EZN^]ȂȂ܂B̃VOEZN^ǂݏoɕꂽꍇAX[vbgቺ邱Ƃ܂B
+一般的に、複数セクタの転送要求は、ストレージ デバイスに対して可能な限りマルチ セクタ転送しなければなりません。複数のシングル セクタ読み出しに分解された場合、スループットが低下することがあります。
Xg[WEfoCX̏Ԃ擾܂B
+ストレージ デバイスの状態を取得します。
DSTATUS disk_status ( - BYTE pdrv /* [IN] hCuԍ */ + BYTE pdrv /* [IN] 物理ドライブ番号 */ );
Xg[WEfoCX̏Ԃ̃tȎgݍ킹lŕԂ܂B
+現在のストレージ デバイスの状態を次のフラグの組み合わせ値で返します。
Xg[WEfoCXɃf[^݂܂B
+ストレージ デバイスにデータを書き込みます。
DRESULT disk_write ( - BYTE pdrv, /* [IN] hCuԍ */ - const BYTE* buff, /* [IN] ރf[^ւ̃|C^ */ - DWORD sector, /* [IN] ݊JnZN^ԍ */ - UINT count /* [IN] ރZN^ */ + BYTE pdrv, /* [IN] 物理ドライブ番号 */ + const BYTE* buff, /* [IN] 書き込むデータへのポインタ */ + DWORD sector, /* [IN] 書き込み開始セクタ番号 */ + UINT count /* [IN] 書き込むセクタ数 */ );
buffɎw肳AhXɃ[hEACgĂƂ͌܂Bڍׂ́Adisk_read()̉QƂĂB
-ʓIɁAZN^̓]v́AfoCXɑĉ\Ȍ}`EZN^]ȂȂ܂B̃VOEZN^݂ɕꂽꍇAX[vbgቺ邱Ƃ܂B
-FatFs̓fBXNx@\Ƃz肵Ă܂B̊߂ƂAfoCXݒƂLbVɏ܂ꂽȂǁAKf[^݂̏ĂKv͂܂BAbuff̃f[^́Å߂ƖƂȂ܂B̗݊v́Adisk_ioctl()CTRL_SYNCR}hɂčs܂B̂悤Ȓx@\ꂽꍇAX[vbgɌコ邱Ƃł܂B
-AvP[V͂̊ĂяoĂ͂Ȃ܂BȂƁAFAT{[j\܂B
+buffに指定されるアドレスは常にワード アライメントされているとは限りません。詳細は、disk_read()の解説を参照してください。
+一般的に、複数セクタの転送要求は、デバイスに対して可能な限りマルチ セクタ転送しなければなりません。複数のシングル セクタ書き込みに分解された場合、スループットが著しく低下することがあります。
+FatFsはディスク関数が遅延書き込み機能を持つことも想定しています。この関数から戻るとき、デバイスが書き込み中とかキャッシュに書き込まれただけなど、必ずしもメディアへの書き込みが完了している必要はありません。ただし、buffのデータは、この関数から戻ると無効となります。書き込み完了の要求は、disk_ioctl()のCTRL_SYNCコマンドによって行われます。このような遅延書き込み機能が実装された場合、スループットをさらに向上させることができます。
+アプリケーションからはこの関数を呼び出してはなりません。さもないと、FATボリュームが破壊される可能性があります。
[hEI[\(_FS_READONLY == 1)ł͕͂̊KvƂ܂B
+リード オンリー構成(_FS_READONLY == 1)ではこの関数は必要とされません。
[h/CgE|C^t@CI[ɒBĂ邩ǂׂ܂B.
+リード/ライト ポインタがファイル終端に達しているかどうか調べます。.
int f_eof ( - FIL* fp /* [IN] t@CEIuWFNg */ + FIL* fp /* [IN] ファイル オブジェクト */ );
[h/CgE|C^t@CI[ɂǂݏof[^Ȃꍇ́A0ȊO̒lԂ܂BȊO̎0Ԃ܂B
+リード/ライト ポインタがファイル終端にあり読み出すデータがない場合は、0以外の値を返します。それ以外のときは0を返します。
f_eof́ArWł̓}NƂĎĂ܂B
+f_eof関数は、現リビジョンではマクロとして実装されています。
-#define f_eof(fp) (((fp)->fptr) == ((fp)->fsize) ? 1 : 0) +#define f_eof(fp) ((int)((fp)->fptr == (fp)->fsize))
Ɏgp\B
+常に使用可能。
G[̗Lׂ܂B
+エラー発生の有無を調べます。
int f_error ( - FIL* fp /* [IN] t@CEIuWFNg */ + FIL* fp /* [IN] ファイル オブジェクト */ );
t@C쒆̃G[ɂďfĂꍇ́A0ȊO̒lԂ܂BȊO̎0Ԃ܂B
+そのファイルにおいてハード エラーによって処理が中断されている場合は、0以外の値を返します。それ以外の時は0を返します。
f_erroŕArWł̓}NƂĎĂ܂B
+f_error関数は、現リビジョンではマクロとして実装されています。
-#define f_error(fp) (((fp)->flag & FA__ERROR) ? 1 : 0) +#define f_error(fp) ((fp)->err)
Ɏgp\B
+常に使用可能。
ݎ擾܂B
+現在時刻を取得します。
DWORD get_fattime (void);@@ -21,37 +21,37 @@ DWORD get_fattime (void);
݂̃[JE^CDWORDlɃpbNĕԂ܂BrbgEtB[h͎Ɏ悤ɂȂ܂B
+現在のローカル タイムをDWORD値にパックして返します。ビット フィールドは次に示すようになります。
RTCT|[gȂVXełA_~[Ƃĉ炩̓tƂėLȒlԂׂłB0ȂǂԂꍇÃt@C̃^CX^v͖ɂȂ܂B
+RTCをサポートしないシステムでも、ダミーとして何らかの日付として有効な値を返すべきです。0などを返した場合、そのファイルのタイムスタンプは無効になります。
[hEI[\(_FS_READONLY == 1)ł͕͂̊KvƂ܂B
+リード オンリー構成(_FS_READONLY == 1)ではこの関数は必要とされません。
hCu܂B
+物理ドライブを分割します。
FRESULT f_fdisk ( - BYTE pdrv, /* [IN] hCuԍ */ - const DWORD part[], /* [IN] }bvEe[u */ - void* work /* [-] [NGA */ + BYTE pdrv, /* [IN] 物理ドライブ番号 */ + const DWORD part[], /* [IN] 区画マップ テーブル */ + void* work /* [-] ワークエリア */ );
̊́Aw肳ꂽhCuMBRɋe[u쐬܂B敪͈ʓIFDISK`ōs߁Aő4̊{쐬邱Ƃł܂Bgɂ͑ΉĂ܂B}bve[upart[]ɂ̓hCuǂ̂悤ɕ邩w肵ēn܂B̔z4̍ڂ琬A擪̍ڂ1Ԗڂ́AŌ̍ڂ4Ԗڂ̋̃TCY܂Bl100ȉ̏ꍇAhCȗeʂɑ銄p[ZgPʂŎw肵܂B100l̏ꍇ̓ZN^̒ڎwɂȂ܂B
+この関数は、指定された物理ドライブのMBRに区画テーブルを作成します。区画分けは一般的なFDISK形式で行うため、最大4つの基本区画を作成することができます。拡張区画には対応していません。区画マップテーブルpart[]にはドライブをどのように分割するか指定して渡します。この配列は4つの項目から成り、先頭の項目が1番目の、最後の項目が4番目の区画のサイズを示します。値が100以下の場合、ドライブの総容量に対する割合をパーセント単位で指定します。100を超える値の場合はセクタ数の直接指定になります。
_FS_READOLNY == 0 _USE_MKFS == 1 _MULTI_PARTITION == 1 ̂Ƃgp\łB
+_FS_READOLNY == 0 で _USE_MKFS == 1 で _MULTI_PARTITION == 1 のとき使用可能です。
- /* [U`̃{[Ǘe[u (_MULTI_PARTITION == 1 ̂ƂKv) */ + /* ユーザ定義のボリューム管理テーブル (_MULTI_PARTITION == 1 のとき必要) */ PARTITION VolToPart[] = { - {0, 1}, /* _hCu 0 ==> hCu 0, 1 */ - {0, 2}, /* _hCu 1 ==> hCu 0, 2 */ - {1, 0} /* _hCu 2 ==> hCu 1, o */ + {0, 1}, /* 論理ドライブ 0 ==> 物理ドライブ 0, 第1区画 */ + {0, 2}, /* 論理ドライブ 1 ==> 物理ドライブ 0, 第2区画 */ + {1, 0} /* 論理ドライブ 2 ==> 物理ドライブ 1, 自動検出 */ };
- /* VhCu(0)̏ */ + /* 新しい物理ドライブ(0)の初期化 */ FATFS fs; - DWORD plist[] = {50, 50, 0, 0}; /* 2 */ + DWORD plist[] = {50, 50, 0, 0}; /* 2分割 */ BYTE work[_MAX_SS]; - f_fdisk(0, plist, work); /* hCu 0 ̕ */ + f_fdisk(0, plist, work); /* 物理ドライブ 0 の分割 */ f_mount(&fs "0:", 0); - f_mkfs("0:", 0, 0); /* _hCu 0 ̃tH[}bg. ͖. */ + f_mkfs("0:", 0, 0); /* 論理ドライブ 0 のフォーマット. 第二引数は無視される. */ f_mount(0, "0:", 0); f_mount(&fs, "1:", 0); - f_mkfs("1:", 0, 0); /* _hCu 0 ̃tH[}bg. ͖. */ + f_mkfs("1:", 0, 0); /* 論理ドライブ 0 のフォーマット. 第二引数は無視される. */ f_mount(0, "1:", 0);diff --git a/fatfs/doc/ja/filename.html b/fatfs/doc/ja/filename.html index c57d7aa..524566c 100644 --- a/fatfs/doc/ja/filename.html +++ b/fatfs/doc/ja/filename.html @@ -12,28 +12,28 @@
FatFsモジュールでのファイル、ディレクトリ、ドライブの指定方法はDOS/Windows APIとほぼ同じです。パス名のフォーマットは次の通りです。
"[論理ドライブ番号:][/]ディレクトリ名/ファイル名"-
FatFsモジュールは長いファイル名(LFN)および8.3形式ファイル名(SFN)に対応しています。LFNは、(_USE_LFN > 0)のとき使用可能になります。ディレクトリ・セパレータにはDOS/Windows APIと同じく'/'と'\'を使用します。連続したセパレータは無視され1個として扱われます。唯一の違いは、論理ドライブの指定だけです。論理ドライブ番号は、'0'~'9'の一文字の数字とコロンで指定し、省略した場合はデフォルト・ドライブ(0またはカレント・ドライブ)が選択されます。
+FatFsモジュールは長いファイル名(LFN)および8.3形式ファイル名(SFN)に対応しています。LFNは、(_USE_LFN > 0)のとき使用可能になります。ディレクトリ セパレータにはDOS/Windows APIと同じく'/'と'\'を使用します。連続したセパレータは無視され1個として扱われます。唯一の違いは、論理ドライブの指定だけです。論理ドライブ番号は、'0'~'9'の一文字の数字とコロンで指定し、省略した場合はデフォルト ドライブ(0またはカレント ドライブ)が選択されます。
ヌル文字や制御文字('\0'~'\x1F')は、パス名の終端として認識されます。パス名に先行あるいは中に含まれるスペースは、LFN構成では名前の一部として有効ですが、非LFN構成ではスペースはパス名の終端として認識されます。
-標準構成(_FS_RPATH == 0)のときは、全てのオブジェクトがルート・ディレクトリから辿る絶対パスで指定されます。OS指向なカレント・ディレクトリという概念は無く、またドット・ディレクトリ("."や"..")は使用できません。パス名先頭のセパレータは無視されます。デフォルト・ドライブ番号は常に0になります。
-相対パスを有効(_FS_RPATH == 1)にしたときは、先行するセパレータの有無によって検索開始ディレクトリが変わり、セパレータがある場合はルート・ディレクトリから、無い場合はf_chdir()で設定されるカレント・ディレクトリからになります。またパス名にドット・ディレクトリが使用できます。デフォルト・ドライブ番号はf_chdrive()で設定された値となります。
+標準構成(_FS_RPATH == 0)のときは、全てのオブジェクトがルート ディレクトリから辿る絶対パスで指定されます。OS指向なカレント ディレクトリという概念は無く、またドット ディレクトリ("."や"..")は使用できません。パス名先頭のセパレータは無視されます。デフォルト ドライブ番号は常に0になります。
+相対パスを有効(_FS_RPATH == 1)にしたときは、先行するセパレータの有無によって検索開始ディレクトリが変わり、セパレータがある場合はルート ディレクトリから、無い場合はf_chdir()で設定されるカレント ディレクトリからになります。またパス名にドット ディレクトリが使用できます。デフォルト ドライブ番号はf_chdrive()で設定された値となります。
パス名の例 | _FS_RPATH == 0 | _FS_RPATH == 1 |
file.txt | ドライブ0のルート・ディレクトリ下のファイル | カレント・ドライブのカレント・ディレクトリ下のファイル |
/file.txt | ドライブ0のルート・ディレクトリ下のファイル | カレント・ドライブのルート・ディレクトリ下のファイル |
ドライブ0のルート・ディレクトリ | カレント・ドライブのカレント・ディレクトリ | |
2: | ドライブ2のルート・ディレクトリ | ドライブ2のカレント・ディレクトリ |
2:file1.txt | ドライブ2のルート・ディレクトリ下のファイル | ドライブ2のカレント・ディレクトリ下のファイル |
2:/ | ドライブ2のルート・ディレクトリ | ドライブ2のルート・ディレクトリ |
file.txt | ドライブ0のルート ディレクトリ下のファイル | カレント ドライブのカレント ディレクトリ下のファイル |
/file.txt | ドライブ0のルート ディレクトリ下のファイル | カレント ドライブのルート ディレクトリ下のファイル |
ドライブ0のルート ディレクトリ | カレント ドライブのカレント ディレクトリ | |
2: | ドライブ2のルート ディレクトリ | ドライブ2のカレント ディレクトリ |
2:file1.txt | ドライブ2のルート ディレクトリ下のファイル | ドライブ2のカレント ディレクトリ下のファイル |
2:/ | ドライブ2のルート ディレクトリ | ドライブ2のルート ディレクトリ |
../file.txt | 無効 | 親ディレクトリ下のファイル |
. | 無効 | このディレクトリ |
.. | 無効 | カレント・ディレクトリの親ディレクトリ |
dir1/.. | 無効 | カレント・ディレクトリ |
/.. | 無効 | ルート・ディレクトリ(その上は辿れない) |
.. | 無効 | カレント ディレクトリの親ディレクトリ |
dir1/.. | 無効 | カレント ディレクトリ |
/.. | 無効 | ルート ディレクトリ(その上は辿れない) |
また、_STR_VOLUME_IDオプションを有効にすることでドライブ番号の識別には数字のほか、任意の文字列を使用することも可能になります。
+また、_STR_VOLUME_IDオプションを有効にすることでドライブ番号の識別には数字のほか、"sd:file1.txt"や"ram:swapfile.dat"のように、任意の文字列を使用することも可能になります。
複数区画指定を使用する場合、次の点に注意しなければなりません。
t@Cf[^ǂݏoAMXg[ɒړ]܂B
+ファイルからデータを読み出し、送信ストリームに直接転送します。
FRESULT f_forward ( - FIL* fp, /* [IN] t@CEIuWFNg\ */ - UINT (*func)(const BYTE*,UINT), /* [IN] f[^] */ - UINT btf, /* [IN] ]oCg */ - UINT* bf /* [OUT] ]ꂽoCg */ + FIL* fp, /* [IN] ファイル オブジェクト構造体 */ + UINT (*func)(const BYTE*,UINT), /* [IN] データ転送関数 */ + UINT btf, /* [IN] 転送するバイト数 */ + UINT* bf /* [OUT] 転送されたバイト数 */ );
FR_OK, FR_DISK_ERR, @@ -54,40 +54,40 @@ FRESULT f_forward (
t@C̃f[^obt@ɓǂݏoɑMXg[ɒړ]܂BAvP[VŃf[^Eobt@KvƂȂ̂ŁǍꂽŗLłB[h/CgE|C^͓]ꂽoCgi݂܂Bw肳ꂽoCg̓]Ƀt@C̏I[ɒBꍇMXg[rW[ɂȂꍇA*bfbtfȂ܂B
+ファイルのデータをバッファに読み出さずに送信ストリームに直接転送します。アプリケーション側でデータ バッファを必要としないので、メモリの限られた環境で有効です。リード/ライト ポインタは転送されたバイト数だけ進みます。指定されたバイト数の転送中にファイルの終端に達した場合や送信ストリームがビジーになった場合、*bfはbtfよりも小さくなります。
_USE_FORWARD == 1ŁA_FS_TINY == 1̂ƂɎgp\łB
+_USE_FORWARD == 1で、且つ_FS_TINY == 1のときに使用可能です。
/*-----------------------------------------------------------------------*/ -/* f_forwardĂf[^M̗ */ +/* f_forward関数から呼ばれるデータ送信関数の例 */ /*-----------------------------------------------------------------------*/ -UINT out_stream ( /* ߂l: ]ꂽoCg܂̓Xg[̏ */ - const BYTE *p, /* ]f[^w|C^ */ - UINT btf /* >0: ]s(oCg). 0: Xg[̏Ԃׂ */ +UINT out_stream ( /* 戻り値: 転送されたバイト数またはストリームの状態 */ + const BYTE *p, /* 転送するデータを指すポインタ */ + UINT btf /* >0: 転送を行う(バイト数). 0: ストリームの状態を調べる */ ) { UINT cnt = 0; - if (btf == 0) { /* ZXv */ - /* Xg[̏ԂԂ (0: rW[, 1: fB) */ - /* UAfBԂA]vŏȂƂ1oCg */ - /* ]Ȃ f_forward FR_INT_ERR ƂȂB */ + if (btf == 0) { /* センス要求 */ + /* ストリームの状態を返す (0: ビジー, 1: レディ) */ + /* 一旦、レディを返したら、続く転送要求で少なくとも1バイトは */ + /* 転送されないと f_forward関数は FR_INT_ERR となる。 */ if (FIFO_READY) cnt = 1; } - else { /* ]v */ - do { /* SẴoCg]邩AXg[rW[ɂȂ܂ŌJԂ */ + else { /* 転送要求 */ + do { /* 全てのバイトを転送するか、ストリームがビジーになるまで繰り返す */ FIFO_PORT = *p++; cnt++; } while (cnt < btf && FIFO_READY); @@ -98,31 +98,31 @@ UINT out_stream ( /* /*-----------------------------------------------------------------------*/ -/* f_forward̎gp */ +/* f_forward関数の使用例 */ /*-----------------------------------------------------------------------*/ FRESULT play_file ( - char *fn /* ĐI[fBIEt@Cw|C^ */ + char *fn /* 再生するオーディオ ファイル名を指すポインタ */ ) { FRESULT rc; FIL fil; UINT dmy; - /* t@Cǂݏo[hŊJ */ + /* ファイルを読み出しモードで開く */ rc = f_open(&fil, fn, FA_READ); if (rc) return rc; - /* SẴf[^]邩G[܂ő */ + /* 全てのデータが転送されるかエラーが発生するまで続ける */ while (rc == FR_OK && fil.fptr < fil.fsize) { - /* ق̏... */ + /* ほかの処理... */ - /* I܂͗vɉăf[^Xg[ɑo */ + /* 定期的または要求に応じてデータをストリームに送出する */ rc = f_forward(&fil, out_stream, 1000, &dmy); } - /* t@CĖ߂ */ + /* ファイルを閉じて戻る */ f_close(&fil); return rc; } @@ -131,10 +131,10 @@ FRESULT play_file ( - + diff --git a/fatfs/doc/ja/getcwd.html b/fatfs/doc/ja/getcwd.html index b48f3fc..24e4844 100644 --- a/fatfs/doc/ja/getcwd.html +++ b/fatfs/doc/ja/getcwd.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@f_getcwd
-JgEfBNg܂B
+カレント ディレクトリを得ます。
FRESULT f_getcwd ( - TCHAR* buff, /* [OUT] obt@ */ - UINT len /* [IN] obt@ETCY */ + TCHAR* buff, /* [OUT] バッファ */ + UINT len /* [IN] バッファ サイズ */ );- +引数
- buff
-- JgEfBNg̃pXi[obt@
+- カレント ディレクトリのパス名文字列を格納するバッファ
- len
-- TCHARPʂ̃obt@ETCY
+- TCHAR単位のバッファ サイズ
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -49,22 +49,22 @@ FRESULT f_getcwd (
- -JgEhCũJgEfBNg̃tEpX擾܂B_VOLUMES2ȏ̂Ƃ́A_hCuԍ̕tꂽpXƂȂ܂B
+解説
+カレント ドライブのカレント ディレクトリのフル パス文字列を取得します。_VOLUMESが2以上のときは、論理ドライブ番号の付加されたパス名となります。
-- + diff --git a/fatfs/doc/ja/getfree.html b/fatfs/doc/ja/getfree.html index 4de40de..8b99c76 100644 --- a/fatfs/doc/ja/getfree.html +++ b/fatfs/doc/ja/getfree.html @@ -1,7 +1,7 @@ - + @@ -13,31 +13,31 @@Ή
-_FS_RPATH == 2̂Ƃgp\łB
+対応情報
+_FS_RPATH == 2のとき使用可能です。
f_getfree
-{[̋̈̃TCY擾܂B
+ボリューム上の空き領域のサイズを取得します。
FRESULT f_getfree ( - const TCHAR* path, /* [IN] ΏۃhCuw肵܂ */ - DWORD* nclst, /* [OUT] NX^i[ϐւ̃|C^ */ - FATFS** fatfs /* [OUT] t@CEVXeEIuWFNgw|C^ւ̃|C^ */ + const TCHAR* path, /* [IN] 対象ドライブを指定します */ + DWORD* nclst, /* [OUT] 空きクラスタ数を格納する変数へのポインタ */ + FATFS** fatfs /* [OUT] ファイル システム オブジェクトを指すポインタへのポインタ */ );- +引数
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -52,33 +52,33 @@ FRESULT f_getfree (
- -_hCű̈̃TCYNX^PʂŎ擾܂BԂꂽt@CEVXeEIuWFNgcsizeoNX^̃ZN^Ă̂ŁAɃZN^Pʂ̋TCYvZł܂BFAT32{[ɂẮAFSINFȌۂ̋NX^ƓĂȂꍇAsmȒlԂ\܂B̖邽߁A_FS_NOFSINFOIvVŃ}Eg͕̏KtFATXL悤ɍ\邱Ƃł܂B
+解説
+論理ドライブ上の空き領域のサイズをクラスタ単位で取得します。返されたファイル システム オブジェクトのcsizeメンバがクラスタあたりのセクタ数を示しているので、これを元にセクタ単位の空きサイズが計算できます。FAT32ボリュームにおいては、FSINFOの情報が実際の空きクラスタ数と同期していない場合、不正確な値を返す可能性があります。この問題を避けるため、_FS_NOFSINFOオプションでマウント後の初回は必ずフルFATスキャンをするように構成することもできます。
-Ή
-_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂Ƃgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のとき使用可能です。
-gp
+使用例
FATFS *fs; DWORD fre_clust, fre_sect, tot_sect; - /* hCu1̃{[ƋNX^ */ + /* ドライブ1のボリューム情報と空きクラスタ数を得る */ res = f_getfree("1:", &fre_clust, &fs); if (res) die(res); - /* SZN^ƋZN^vZ */ + /* 全セクタ数と空きセクタ数を計算 */ tot_sect = (fs->n_fatent - 2) * fs->csize; fre_sect = fre_clust * fs->csize; - /* {[Ŝ̃TCYƋ̃TCY\ (512oCg/ZN^Ɖ) */ + /* ボリューム全体のサイズと空きのサイズを表示 (512バイト/セクタと仮定) */ printf("%10lu KiB total drive space.\n%10lu KiB available.\n", tot_sect / 2, fre_sect / 2);@@ -86,10 +86,10 @@ FRESULT f_getfree ( - + diff --git a/fatfs/doc/ja/getlabel.html b/fatfs/doc/ja/getlabel.html index 957d212..bfcad0d 100644 --- a/fatfs/doc/ja/getlabel.html +++ b/fatfs/doc/ja/getlabel.html @@ -1,7 +1,7 @@ - + @@ -13,31 +13,31 @@f_getlabel
-{[Ex擾܂B
+ボリューム ラベルを取得します。
FRESULT f_getlabel ( - const TCHAR* path, /* [IN] ΏۃhCu */ - TCHAR* label, /* [OUT] {[i[obt@ */ - DWORD* vsn /* [OUT] {[EVAԍi[ϐ */ + const TCHAR* path, /* [IN] 対象ドライブ */ + TCHAR* label, /* [OUT] ボリューム名を格納するバッファ */ + DWORD* vsn /* [OUT] ボリューム シリアル番号を格納する変数 */ );- +引数
- path
-- ΏۂƂȂ_hCupXk'\0'I[̕ւ̃|C^w肵܂Bk̏ꍇ́AftHgEhCuw肵ƂɂȂ܂B
+- 対象となる論理ドライブのパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。ヌル文字列の場合は、デフォルト ドライブを指定したことになります。
- label
-- {[i[zւ̃|C^w肵܂BȂƂ12vf̃TCYKvłB{[Ȃꍇ̓kԂ܂B̏svȂƂ̓kE|C^w肵ĂB
+- ボリューム名を格納する配列へのポインタを指定します。少なくとも12要素のサイズが必要です。ボリューム名がない場合はヌル文字列が返されます。この情報が不要なときはヌル ポインタを指定してください。
- vsn
-- {[EVAԍi[DWORD^ϐւ̃|C^w肵܂B̏svȂƂ̓kE|C^w肵ĂB
+- ボリューム シリアル番号を格納するDWORD型変数へのポインタを指定します。この情報が不要なときはヌル ポインタを指定してください。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -52,31 +52,31 @@ FRESULT f_getlabel (
-Ή
-_USE_LABEL == 1̂ƂɎgp\łB
+対応情報
+_USE_LABEL == 1のときに使用可能です。
-- + diff --git a/fatfs/doc/ja/gets.html b/fatfs/doc/ja/gets.html index 2babef0..74e0b22 100644 --- a/fatfs/doc/ja/gets.html +++ b/fatfs/doc/ja/gets.html @@ -1,7 +1,7 @@ - + @@ -13,53 +13,53 @@gp
+使用例
char str[12]; - /* ftHgEhCũ{[ */ + /* デフォルト ドライブのボリューム名を得る */ f_getlabel("", str, 0); - /* hCu2̃{[ */ + /* ドライブ2のボリューム名を得る */ f_getlabel("2:", str, 0);f_gets
-t@C當ǂݏo܂B
+ファイルから文字列を読み出します。
TCHAR* f_gets ( - TCHAR* buff, /* [OUT] obt@ */ - int len, /* [IN] obt@̃TCY */ - FIL* fp /* [IN] t@CEIuWFNg */ + TCHAR* buff, /* [OUT] バッファ */ + int len, /* [IN] バッファのサイズ */ + FIL* fp /* [IN] ファイル オブジェクト */ );- +引数
- buff
-- ǂݏoobt@w|C^w肵܂B
+- 文字列を読み出すバッファを指すポインタを指定します。
- len
-- obt@̃TCYvfŎw肵܂B
+- バッファのサイズを要素数で指定します。
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
-߂l
-buffԂ܂B
+戻り値
+関数が成功するとbuffが返されます。
- -̊f_read()̃bp[łBǂݏóAŏ'\n'ǂݍނAt@CI[ɒB邩Alen - 1ǂݏo܂ő܂Bǂݍ܂ꂽ̏I[ɂ'\0't܂BɃt@CI[1ǂݍ܂ȂƂA܂͉炩̃G[Ƃ͎͊skE|C^Ԃ܂Bt@CI[G[f_eof(),f_error()}NŒׂ܂B
-Unicode API\(_LFN_UNICODE == 1)IĂƂ́AbuffUTF-16ɂȂ܂At@C̃GR[h́A_STRF_ENCODEIvVőIł܂BȊO͖̎ϊ(1oCg/1)œǂݏo܂B
+解説
+この関数はf_read()のラッパー関数です。読み出し動作は、最初の'\n'を読み込むか、ファイル終端に達するか、len - 1文字を読み出すまで続きます。読み込まれた文字列の終端には'\0'が付加されます。既にファイル終端で1文字も読み込まれなかったとき、または何らかのエラーが発生したときは関数は失敗しヌル ポインタを返します。ファイル終端かエラーかはf_eof(),f_error()マクロで調べられます。
+Unicode API構成(_LFN_UNICODE == 1)が選択されているときは、buffはUTF-16文字列になりますが、ファイル上のエンコードは、_STRF_ENCODEオプションで選択できます。それ以外の時は無変換(1バイト/1文字)で読み出します。
-- + diff --git a/fatfs/doc/ja/lseek.html b/fatfs/doc/ja/lseek.html index 5578852..88e1ab2 100644 --- a/fatfs/doc/ja/lseek.html +++ b/fatfs/doc/ja/lseek.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@Ή
-_USE_STRFUNC1܂2̂Ƃgp\łB2̂Ƃ́At@CɊ܂܂'\r'菜ăobt@ɓǂݍ܂܂B
+対応情報
+_USE_STRFUNCが1または2のとき使用可能です。2のときは、ファイルに含まれる'\r'が取り除かれてバッファに読み込まれます。
f_lseek
-t@C̃[h/CgE|C^ړ܂B܂AV[N@\gpɂCLMT(q)̍쐬ɂgp܂B
+ファイルのリード/ライト ポインタを移動します。また、高速シーク機能使用時にはCLMT(後述)の作成にも使用します。
FRESULT f_lseek ( - FIL* fp, /* [IN] t@CEIuWFNg\̂ւ̃|C^ */ - DWORD ofs /* [IN] ړItZbg */ + FIL* fp, /* [IN] ファイル オブジェクト構造体へのポインタ */ + DWORD ofs /* [IN] 移動先オフセット */ );- +引数
- fp
-- ΏۂƂȂt@CEIuWFNg\̂ւ̃|C^w肵܂B
+- 対象となるファイル オブジェクト構造体へのポインタを指定します。
- ofs
-- ړ̃ItZbg([h/CgE|C^)lBt@C擪̃ItZbgoCgPʂŎw肵܂B
+- 移動先のオフセット(リード/ライト ポインタ)値。ファイル先頭からのオフセットをバイト単位で指定します。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -48,82 +48,82 @@ FRESULT f_lseek (
- -t@C̃[h/CgE|C^(ɓǂݏoE݂oCg̃ItZbg)ړ܂BItZbǧ_̓t@C擪łB݃[hŃt@CETCY傫Ȓlw肷ƁA܂Ńt@CETCYgAgꂽ̃f[^͖`ƂȂ܂Bf[^xɏ݂Ƃ́A\߂̊ŕKvȃTCY܂Ńt@CETCYgĂƗǂł傤Bf_lseek()IƂ́A[h/CgE|C^ړ`FbNׂłB[h/CgE|C^w菬Ƃ́Ǎl܂B
+解説
+ファイルのリード/ライト ポインタ(次に読み出し・書き込みされるバイトのオフセット)を移動します。オフセットの原点はファイル先頭です。書き込みモードでファイル サイズより大きな値を指定すると、そこまでファイル サイズが拡張され、拡張された部分のデータは未定義となります。データを遅延無く高速に書き込みたいときは、予めこの関数で必要なサイズまでファイル サイズを拡張しておくと良いでしょう。f_lseek()が正常終了したあとは、リード/ライト ポインタが正しく移動したかチェックするべきです。リード/ライト ポインタが指定より小さいときは、次の原因が考えられます。
-
-- ݃[h܂͍V[NE[ĥ߁At@CETCYŃNbvꂽB
-- t@CgɃfBXNtɂȂB
+- 非書き込みモードまたは高速シーク モードのため、ファイル サイズでクリップされた。
+- ファイル拡張中にディスクが満杯になった。
_USE_FASTSEEK1ŁAt@CEIuWFNgcltbloNULLȊO(f_open()NULLɐݒ肳)̂ƂAV[NE[hɂȂ܂B̓t@C̃NX^zu(CLMT)ɕێĂƂɂAFATɃANZX邱ƂȂV[NOEV[Nɍs@\łBV[NE[h́Af_read()/f_wtite()̓ɂKp܂BV[NE[hłf_wtite()/f_lseek()ɂt@CETCY̊g͂ł܂B
-V[NsOɁACLMT쐬ĂKv܂B쐬ɂ́A܂CLMTi[obt@(DWORD^z)Acltbloɂ̃|C^Zbg܂BāAz̐擪vfɂ̔z̃TCY(vf)Af_lseek()ofsCREATE_LINKMAPw肵ČĂяo܂BCLMT쐬Aȍ~f_read()/f_write()/f_lseek()łFATւ̃ANZX͔܂BFR_NOT_ENOUGH_COREŎsƂ͔zTCYsŁA擪vfɂ͎ۂɕKvƂȂvfԂ܂BKvȗvf́A(t@C̕ + 1) * 2 łBƂAt@C5̃tOgɕfĂƂɕKvȗvf́A12ƂȂ܂B
+_USE_FASTSEEKが1で、且つファイル オブジェクトのcltblメンバがNULL以外(f_open()でNULLに設定される)のとき、高速シーク モードになります。これはファイルのクラスタ配置情報(CLMT)をメモリ上に保持しておくことにより、FATにアクセスすることなく後方シークやロング シークを高速に行う機能です。高速シーク モードは、f_read()/f_wtite()の動作にも適用されます。高速シーク モードではf_wtite()/f_lseek()によるファイル サイズの拡張はできません。
+高速シーク動作を行う前に、CLMTを作成しておく必要があります。これを作成するには、まずCLMT格納バッファ(DWORD型配列)を準備し、cltblメンバにそのポインタをセットします。そして、配列の先頭要素にその配列のサイズ(要素数)を入れ、f_lseek()をofsにCREATE_LINKMAPを指定して呼び出します。関数が成功するとCLMTが作成され、以降のf_read()/f_write()/f_lseek()ではFATへのアクセスは発生しません。FR_NOT_ENOUGH_COREで失敗したときは配列サイズが不足で、先頭要素には実際に必要となる要素数が返されます。必要な要素数は、(ファイルの分割数 + 1) * 2 です。たとえば、ファイルが5つのフラグメントに分断されているときに必要な要素数は、12となります。
-Ή
-_FS_MINIMIZE < 3̂Ƃgp\łB
+対応情報
+_FS_MINIMIZE < 3のとき使用可能です。
-- + diff --git a/fatfs/doc/ja/mkdir.html b/fatfs/doc/ja/mkdir.html index ef107d3..63da707 100644 --- a/fatfs/doc/ja/mkdir.html +++ b/fatfs/doc/ja/mkdir.html @@ -1,7 +1,7 @@ - + @@ -13,25 +13,25 @@gp
+使用例
- /* t@CJ */ + /* ファイルを開く */ fp = malloc(sizeof (FIL)); res = f_open(fp, "file.dat", FA_READ|FA_WRITE); if (res) ... - /* t@CEItZbg5000ֈړ */ + /* ファイル オフセット5000へ移動 */ res = f_lseek(fp, 5000); - /* t@CI[ֈړ(t@CNjL̏) */ + /* ファイル終端へ移動(ファイル追記の準備) */ res = f_lseek(fp, f_size(fp)); - /* 3000oCgi߂ */ + /* 3000バイト進める */ res = f_lseek(fp, f_tell(fp) + 3000); - /* 2000oCg߂ (bvAEhɒ) */ + /* 2000バイト戻す (ラップアラウンドに注意) */ res = f_lseek(fp, f_tell(fp) - 2000);-/* NX^s蓖 (Xg[~OECg̃obt@EI[o[h~) */ +/* クラスタ先行割り当て (ストリーミング ライト時のバッファ オーバーラン防止) */ - res = f_open(fp, "record.wav", FA_CREATE_NEW | FA_WRITE); /* t@C쐬 */ + res = f_open(fp, "record.wav", FA_CREATE_NEW | FA_WRITE); /* ファイル作成 */ - res = f_lseek(fp, MAX_SIZE); /* \ȃNX^̐s蓖 */ - if (res || f_tell(fp) != PRE_SIZE) ... /* t@Cgꂽ`FbN */ + res = f_lseek(fp, MAX_SIZE); /* 十分なクラスタの先行割り当て */ + if (res || f_tell(fp) != PRE_SIZE) ... /* 正しくファイルが拡張されたかチェック */ - res = f_lseek(fp, DATA_START); /* f[^EXg[̋L^(AP[VfBC) */ + res = f_lseek(fp, DATA_START); /* データ ストリームの記録(アロケーションディレイ無し) */ ... - res = f_truncate(fp); /* sv̈̐̂ */ - res = f_lseek(fp, 0); /* wb_̋L^ */ + res = f_truncate(fp); /* 不要領域の切り捨て */ + res = f_lseek(fp, 0); /* ヘッダの記録 */ ... res = f_close(fp);-/* V[N@\g */ +/* 高速シーク機能を使う */ - DWORD clmt[SZ_TBL]; /* NE}bvEe[ui[obt@ */ + DWORD clmt[SZ_TBL]; /* リンク マップ テーブル格納バッファ */ - res = f_lseek(fp, ofs1); /* ʏV[N (I[vAcltblNULLɏ) */ + res = f_lseek(fp, ofs1); /* 通常シーク (オープン時、cltblはNULLに初期化される) */ - fp->cltbl = clmt; /* V[N@\̗L */ - clmt[0] = SZ_TBL; /* 擪vfɔzvfZbg */ - res = f_lseek(fp, CREATE_LINKMAP); /* CLMT̍쐬 */ + fp->cltbl = clmt; /* 高速シーク機能の有効化 */ + clmt[0] = SZ_TBL; /* 先頭要素に配列要素数をセット */ + res = f_lseek(fp, CREATE_LINKMAP); /* CLMTの作成 */ ... - res = f_lseek(fp, ofs2); /* ȍ~Af_read/f_write/f_lseekFATANZX͔Ȃ */ + res = f_lseek(fp, ofs2); /* 以降、f_read/f_write/f_lseekでFATアクセスは発生しない */f_mkdir
-fBNg쐬܂B
+ディレクトリを作成します。
FRESULT f_mkdir ( - const TCHAR* path /* [IN] 쐬fBNgւ̃|C^ */ + const TCHAR* path /* [IN] 作成するディレクトリ名へのポインタ */ );-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -52,19 +52,19 @@ FRESULT f_mkdir (
- -̃fBNg쐬܂B
+解説
+空のディレクトリを作成します。
-Ή
-_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂Ƃgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のとき使用可能です。
-- + diff --git a/fatfs/doc/ja/mkfs.html b/fatfs/doc/ja/mkfs.html index 7e09696..19b4341 100644 --- a/fatfs/doc/ja/mkfs.html +++ b/fatfs/doc/ja/mkfs.html @@ -1,7 +1,7 @@ - + @@ -13,30 +13,30 @@gp
+使用例
res = f_mkdir("sub1"); if (res) die(res); @@ -75,6 +75,6 @@ FRESULT f_mkdir (f_mkfs
-_hCuFAT{[쐬(tH[}bg)܂B
+論理ドライブ上にFATボリュームを作成(フォーマット)します。
FRESULT f_mkfs ( - const TCHAR* path, /* [IN] _hCuԍ */ - BYTE sfd, /* [IN] 쐬@ */ - UINT au /* [IN] NXE^TCY */ + const TCHAR* path, /* [IN] 論理ドライブ番号 */ + BYTE sfd, /* [IN] 区画作成方法 */ + UINT au /* [IN] クラス タサイズ */ );- +引数
- path
-- tH[}bgΏۂ̘_hCupXk'\0'I[̕ւ̃|C^w肵܂BhCuԍ܂܂Ȃꍇ́AJgEhCuӖ܂B
+- フォーマット対象の論理ドライブを示すパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。ドライブ番号を含まない場合は、カレント ドライブを意味します。
- sfd
-- p[e[V`B(0(FDISK) ܂ 1(SFD))
+- パーテーション形式。(0(FDISK) または 1(SFD))
- au
-- NX^ETCYoCgPʂŎw肵܂Bl͑ΏۃhCũZN^ETCYn{(n = 1`128ŁA2̗ݏ)łȂȂ܂B0Ȃǂ̖lw肵ꍇA{[̃TCYɉftHg̃NX^ETCYI܂B
+- クラスタ サイズをバイト数またはセクタ数で指定します。値が1~128の範囲場合は、セクタ数を示します。値が_MIN_SS以上の場合は、バイト数を示します。無効値(0または2の累乗でない値など)を指定した場合、ボリュームのサイズに応じたデフォルトのクラスタ サイズが自動選択されます。
- -hCuFAT{[쐬܂BFDISK`w肳ꂽꍇ́AhCuŜ߂{(p[e[V)쐬A̒FAT{[쐬܂BSFD`ł́AFAT{[hCu̐擪ZN^x^ō쐬܂B
-tH[}bg_hCu}`Ep[e[V@\(_MULTI_PARTITION)ɂē̋(1`4)ɌѕtĂꍇ́A̋̒FAT{[쐬܂Bsfd͖A܂Ή镨hCu͂ɐ旧Af_fdisk()܂͑̃c[œKɋݒ肳ĂKv܂B
-p[e[V`ɂ́AFDISK`SFD`̓ʂ肠܂BFDISK`́An[hfBXNAMMCASDCACFCAU DiskȂǂŕWIɎgp܂BFDISK`ł͈̕hCuɈ܂͕̋쐬邱Ƃł܂BǗMBR(hCu̐擪ZN^)ɋL^܂BSFD`͒Pɉ̕sȂ`ŁA{[͕hCu̐擪ZN^Jn܂BSFD`́Atbs[EfBXNA}CNhCuAwfBXNAт̑X[p[Etbs[EfBAŕWIɎgpĂ܂B
-FAT^Cv(FAT12/FAT16/FAT32)́Ã{[NX^ɂĂ̂錈܂[FATdl]ɂȂĂāAȊO̗v͂܂BāAǂFAT^CvɂȂ邩̓{[ETCYƃNX^ETCYɈˑ܂BNX^ETCY͑傫قǐ\オ܂B
-NX^FAT^Cv̋Eɋ߂ȂƂ́AFR_MKFS_ABORTEDŊs\܂B
+説明
+物理ドライブ上にFATボリュームを作成します。FDISK形式が指定された場合は、物理ドライブ全体を占める基本区画(パーテーション)が作成され、その中にFATボリュームが作成されます。SFD形式では、FATボリュームが物理ドライブの先頭セクタからベタで作成されます。
+フォーマットする論理ドライブがマルチ パーテーション機能(_MULTI_PARTITION)によって特定の区画(1~4)に結び付けられている場合は、その区画の中にFATボリュームが作成されます。sfdは無視され、また対応する物理ドライブはこれに先立ち、f_fdisk()または他のツールで適切に区画設定されている必要があります。
+パーテーション形式には、FDISK形式とSFD形式の二通りあります。FDISK形式は、ハードディスク、MMC、SDC、CFC、U Diskなどで標準的に使用されます。FDISK形式では一台の物理ドライブ上に一つまたは複数の区画を作成することができます。区画管理情報はMBR(物理ドライブの先頭セクタ)に記録されます。SFD形式は単に何の分割も行わない形式で、ボリュームは物理ドライブの先頭セクタから開始します。SFD形式は、フロッピー ディスク、マイクロドライブ、光学ディスク、およびその他スーパー フロッピー メディアで標準的に使用されています。
+FATタイプ(FAT12/FAT16/FAT32)は、そのボリューム上のクラスタ数によってのみ決定される決まり[FAT仕様書より]になっていて、それ以外の要因はありません。したがって、どのFATタイプになるかはボリューム サイズとクラスタ サイズに依存します。クラスタ サイズは大きくするほど性能が上がります。
+クラスタ数がFATタイプの境界に近くなるときは、FR_MKFS_ABORTEDで関数が失敗する可能性があります。
-+ + +Ή
-_FS_READONLY == 0ŁA_USE_MKFS == 1̂Ƃgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_USE_MKFS == 1のとき使用可能です。
++- + + diff --git a/fatfs/doc/ja/mount.html b/fatfs/doc/ja/mount.html index c6bc9f1..d465edb 100644 --- a/fatfs/doc/ja/mount.html +++ b/fatfs/doc/ja/mount.html @@ -1,7 +1,7 @@ - + @@ -13,30 +13,30 @@使用例
++/* Format the default drive */ +int main (void) +{ + FATFS fs; /* File system object (volume work area) */ + FIL fil; /* File object */ + FRESULT res; /* API result code */ + UINT bw; /* Bytes written */ + + + /* Register work area */ + f_mount(&fs, "", 0); + + /* Create FAT volume with default cluster size */ + res = f_mkfs("", 0, 0); + if (res) ... + + /* Create a file as new */ + res = f_open(&fil, "hello.txt", FA_CREATE_NEW | FA_WRITE); + if (res) ... + + /* Write a message */ + f_write(&fil, "Hello, World!\r\n", 15, &bw); + if (bw != 15) ... + + /* Close the file */ + f_close(&fil); + + /* Unregister work area */ + f_mount(0, "", 0); + +f_mount
-_hCuɃt@CEVXeEIuWFNgo^E܂B
+論理ドライブにファイル システム オブジェクトを登録・抹消します。
FRESULT f_mount ( - FATFS* fs, /* [IN] t@CEVXeEIuWFNg */ - const TCHAR* path, /* [IN] _hCuԍ */ - BYTE opt /* [IN] IvV */ + FATFS* fs, /* [IN] ファイル システム オブジェクト */ + const TCHAR* path, /* [IN] 論理ドライブ番号 */ + BYTE opt /* [IN] オプション */ );- +引数
- fs
-- o^t@CEVXeEIuWFNgւ̃|C^B
+- 登録するファイル システム オブジェクトへのポインタ。
- path
-- ΏۂƂȂ_hCupXk'\0'I[̕ւ̃|C^w肵܂BhCuԍ܂܂Ȃꍇ́AftHgEhCuw肵ƂɂȂ܂B
+- 対象となる論理ドライブのパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。パス名にドライブ番号が含まれない場合は、デフォルト ドライブを指定したことになります。
- opt
-- t@CEVXeEIuWFNg̓o^ƓɃ}Egsǂw肷tOBo^̂Ƃ͈Ӗ܂B
+- ファイル システム オブジェクトの登録と同時にマウント動作を行うかどうかを指定するフラグ。登録抹消のときは意味を持ちません。
-߂l
+戻り値
FR_OK, FR_INVALID_DRIVE, @@ -48,35 +48,35 @@ FRESULT f_mount (
- -FatFsW[ł́Aꂼ̘_hCut@CEVXeEIuWFNgƂ[NEGAKvłB̊͘_hCuɃt@CEVXeEIuWFNgo^薕肵܂B炩̃t@CgpOɁÅł̘_hCũt@CEVXeEIuWFNg^ĂȂȂ܂BfsɃkE|C^w肷ƁA̘_hCũt@CEVXeEIuWFNg̓o^͖邾łBo^ꂽt@CEVXeEIuWFNg͉̃ł܂BΏۂ̘_hCuɊJĂt@CfBNgꍇA͑SĖɂȂ܂B͎̊̓̂悤ȏɍs܂B
+解説
+FatFsモジュールでは、それぞれの論理ドライブにファイル システム オブジェクトというワーク エリアが必要です。この関数は論理ドライブにファイル システム オブジェクトを登録したり抹消したりします。何らかのファイル関数を使用する前に、この関数でその論理ドライブのファイル システム オブジェクトを与えておかなければなりません。fsにヌル ポインタを指定すると、その論理ドライブのファイル システム オブジェクトの登録は抹消されるだけです。登録抹消されたファイル システム オブジェクトのメモリは解放できます。操作対象の論理ドライブ上に開かれたままのファイルやディレクトリがあった場合、それらに対して作成された構造体は全て無効になります。この関数の内部処理は次のような順に行われます。
-
-- Ώۂ̘_hCupath瓾B
-- ɓo^Ăt@CEVXeEIuWFNg̓NAAo^B
-- fsLȃ|C^̂Ƃ́Ãt@CEVXeEIuWFNgNAo^B
-- }Eg삪w肳ĂƂ́AsB
+- 対象の論理ドライブをpathから得る。
+- 既に登録されているファイル システム オブジェクトはクリアし、登録を解除する。
+- fsが有効なポインタのときは、そのファイル システム オブジェクトをクリアし登録する。
+- マウント動作が指定されているときは、それを実行する。
opt0w肷ƁA}Eg(hCȕAFAT{[̌ABPB͂t@CEVXeEIuWFNg)͍sꂸA͕hCȕԂɊւ炸ɐ܂Bł͉ʃCւ̃ANZX͔Aw肳ꂽt@CEVXeEIuWFNgNA()ÃAhXzɓo^邾łBPɓo^ς݂̃t@CEVXeEIuWFNgNAړIɂg܂BāAă{[ւ̃ANZXsꂽƂ̂ꂩł^̏ꍇ́Aۂ̃}Eg삪s܂B
+optに0を指定すると、マウント動作(物理ドライブの初期化、FATボリュームの検索、BPBを解析しファイル システム オブジェクトを初期化)は行われず、関数は物理ドライブの状態に関わらず常に成功します。関数内では下位レイヤへのアクセスは発生せず、指定されたファイル システム オブジェクトをクリア(無効化)し、そのアドレスを内部配列に登録するだけです。単に登録済みのファイル システム オブジェクトをクリアする目的にも使えます。実際のマウント動作は、ボリュームへのアクセス(パス名を渡すもの全て)が行われたときに、次のうちいずれかの条件が真の場合に行われます。
-
-- t@CEVXeEIuWFNgNA()(f_mount()̎sɂ)
-- hCu(VXeEZbgfBǍɂ)
+- ファイル システム オブジェクトがクリア(無効)状態(f_mount()の実行による)
+- 物理ドライブが未初期化状態(システム リセットやメディアの交換による)
opt1w肷ƁAo^ɑă}Eg삪s܂B}EgɎsƑΉG[Ԃ܂Ao^͗LȂ̂ő{[ւ̃ANZXōĂу}Eg삪s܂B
-
ʃC̎チfBǍoT|[gȂ(disk_status()ɔfȂ)Ƃ́AAvP[V̓fBǍケ̊Ńt@CEVXeEIuWFNgIɃNAčă}Egɍs悤ɂKv܂B
+optに1を指定すると、ファイル システムオブジェクトの登録に続きマウント動作が行われます。メディアが無いなどの理由でマウント動作に失敗すると対応するエラーを返しファイル システム オブジェクト無効状態のままになりますが、登録自体は有効なので続いてボリュームへのアクセスがあれば再びマウント動作が実行されます。
+下位レイヤの実装上メディア交換の検出がサポートされない(disk_status()に反映されない)ときは、アプリケーションはメディア交換の後この関数でファイル システム オブジェクトを明示的にクリアし、マウント動作が正常に行えるようにする必要があります。
-- + diff --git a/fatfs/doc/ja/open.html b/fatfs/doc/ja/open.html index a4c4a18..c308398 100644 --- a/fatfs/doc/ja/open.html +++ b/fatfs/doc/ja/open.html @@ -1,7 +1,7 @@ - + @@ -13,33 +13,33 @@Ή
-SĂ̍\Ŏgp\łB
+対応情報
+全ての構成で使用可能です。
f_open
-t@CI[v܂͍쐬܂B
+ファイルをオープンまたは作成します。
FRESULT f_open ( - FIL* fp, /* [OUT] ̃t@CEIuWFNg\̂ւ̃|C^ */ - const TCHAR* path, /* [IN] t@Cւ̃|C^ */ - BYTE mode /* [IN] [htO */ + FIL* fp, /* [OUT] 空のファイル オブジェクト構造体へのポインタ */ + const TCHAR* path, /* [IN] ファイル名へのポインタ */ + BYTE mode /* [IN] モードフラグ */ );- +引数
@@ -47,7 +47,7 @@ FRESULT f_open (
- fp
-- V쐬t@CEIuWFNg\̂ւ̃|C^w肵܂Bȍ~Ãt@C܂ł̃t@CEIuWFNggpăt@C܂B
+- 新しく作成するファイル オブジェクト構造体へのポインタを指定します。以降、そのファイルを閉じるまでこのファイル オブジェクトを使用してファイル操作をします。
- path
-- Jt@Ct@Ck'\0'I[̕ւ̃|C^w肵܂B
+- 開くファイルのファイル名を示すヌル文字'\0'終端の文字列へのポインタを指定します。
- mode
-- t@C̃ANZX@I[v@߂tOłB̃p[^ɂ͎̑gݍ킹w肵܂B
+- ファイルのアクセス方法やオープン方法を決めるフラグです。このパラメータには次の組み合わせを指定します。
-
- l Ӗ - FA_READ ǂݏo[hŊJ܂BǂݏꍇFA_WRITEƋɎw肵܂B - FA_WRITE ݃[hŊJ܂BǂݏꍇFA_READƋɎw肵܂B - FA_OPEN_EXISTING ̃t@CJ܂Bt@CƂ̓G[ɂȂ܂B(ftHg) - FA_OPEN_ALWAYS ̃t@CJ܂Bt@CƂ̓t@C쐬܂BNjL̏ꍇ́A̕@ŃI[vAf_lseek()Ńt@C̍ŌɈړĂB - FA_CREATE_NEW t@C쐬܂B̃t@Cꍇ́AFR_EXISTŎs܂B + FA_CREATE_ALWAYS t@C쐬܂B̃t@Cꍇ́ATCY0ɂĂJ܂B + 値 意味 + FA_READ 読み出しモードで開きます。読み書きする場合はFA_WRITEと共に指定します。 + FA_WRITE 書き込みモードで開きます。読み書きする場合はFA_READと共に指定します。 + FA_OPEN_EXISTING 既存のファイルを開きます。ファイルが無いときはエラーになります。(デフォルト) + FA_OPEN_ALWAYS 既存のファイルを開きます。ファイルが無いときはファイルを作成します。追記の場合は、この方法でオープンした後、f_lseek()でファイルの最後尾に移動してください。 + FA_CREATE_NEW ファイルを作成します。同名のファイルがある場合は、FR_EXISTで失敗します。 FA_CREATE_ALWAYS ファイルを作成します。同名のファイルがある場合は、サイズを0にしてから開きます。 -߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -72,86 +72,86 @@ FRESULT f_open (
- -̃t@CJAVt@C쐬܂Bƃt@CEIuWFNg쐬Aȍ~̃t@CɑANZXɎgp܂Bt@CƂ́Af_close()gp܂B炩̕ύXsꂽt@Č㐳ȂꍇÃt@Cjꍇ܂B
-ɊJĂt@CJKvꍇ́AdANZXQƂĂBÃt@Cɑ鏑݃[h܂ޏdI[v͏ɋ֎~łB
-t@CEANZXJnOɁAf_mount()gĂꂼ̘_hCuɃ[NEGA(t@CEVXeEIuWFNg)^Kv܂B̏̌A̘_hCuɑđSẴt@Cg悤ɂȂ܂B
+解説
+既存のファイルを開いたり、新しいファイルを作成します。関数が成功するとファイル オブジェクトが作成され、以降そのファイルに対するアクセスに使用します。ファイルを閉じるときは、f_close()を使用します。何らかの変更が行われたファイルがその後正しく閉じられなかった場合、そのファイルが破損する場合があります。
+既に開かれているファイルを開く必要がある場合は、多重アクセス制御を参照してください。しかし、一つのファイルに対する書き込みモードを含む重複オープンは常に禁止です。
+ファイル アクセスを開始する前に、f_mount()を使ってそれぞれの論理ドライブにワーク エリア(ファイル システム オブジェクト)を与える必要があります。この初期化の後、その論理ドライブに対して全てのファイル関数が使えるようになります。
-Ή
-SĂ̍\Ŏgp\łB_FS_READONLY == 1̂Ƃ́AFA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS̊etO̓T|[g܂B
+対応情報
+全ての構成で使用可能です。_FS_READONLY == 1のときは、FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYSの各フラグはサポートされません。
-gp
+使用例
-/* eLXgt@Cǂݏoĕ\ */ +/* テキストファイルを読み出して表示 */ -FATFS FatFs; /* _hCũ[NEGA(t@CEVXeEIuWFNg) */ +FATFS FatFs; /* 論理ドライブのワーク エリア(ファイル システム オブジェクト) */ int main (void) { - FIL fil; /* t@CEIuWFNg */ - char line[82]; /* sobt@ */ - FRESULT fr; /* ߂l */ + FIL fil; /* ファイル オブジェクト */ + char line[82]; /* 行バッファ */ + FRESULT fr; /* 戻り値 */ - /* ftHgEhCuɃ[NGA^ */ + /* デフォルト ドライブにワークエリアを与える */ f_mount(&FatFs, "", 0); - /* eLXgEt@CJ */ + /* テキスト ファイルを開く */ fr = f_open(&fil, "message.txt", FA_READ); if (fr) return (int)fr; - /* 1sǂݏoĕ\ */ + /* 1行ずつ読み出して表示 */ while (f_gets(line, sizeof line, &fil)) printf(line); - /* t@C */ + /* ファイルを閉じる */ f_close(&fil); return 0; }-/* hCu1̃t@C "file.bin" hCu0փRs[ */ +/* ドライブ1のファイル "file.bin" をドライブ0へコピー */ int main (void) { - FATFS fs[2]; /* _hCũ[NGA(t@CEVXeEIuWFNg) */ - FIL fsrc, fdst; /* t@CEIuWFNg */ + FATFS fs[2]; /* 論理ドライブのワークエリア(ファイル システム オブジェクト) */ + FIL fsrc, fdst; /* ファイル オブジェクト */ BYTE buffer[4096]; /* File copy buffer */ FRESULT fr; /* FatFs function common result code */ UINT br, bw; /* File R/W count */ - /* hCu0,1Ƀ[NEGA^ */ + /* ドライブ0,1にワーク エリアを与える */ f_mount(&fs[0], "0:", 0); f_mount(&fs[1], "1:", 0); - /* hCu1̃Rs[t@CJ */ + /* ドライブ1のコピー元ファイルを開く */ res = f_open(&fsrc, "1:file.dat", FA_OPEN_EXISTING | FA_READ); if (fr) return (int)fr; - /* hCu0ɃRs[t@C쐬 */ + /* ドライブ0にコピー先ファイルを作成する */ res = f_open(&fdst, "0:file.dat", FA_CREATE_ALWAYS | FA_WRITE); if (fr) return (int)fr; - /* Rs[Rs[Ƀf[^] */ + /* コピー元からコピー先にデータ転送する */ for (;;) { - res = f_read(&fsrc, buffer, sizeof buffer, &br); /* Rs[炩ǂݏo */ - if (res || br == 0) break; /* G[t@CI[ */ - res = f_write(&fdst, buffer, br, &bw); /* Rs[ɏ */ - if (res || bw < br) break; /* G[fBXNt */ + res = f_read(&fsrc, buffer, sizeof buffer, &br); /* コピー元からから読み出す */ + if (res || br == 0) break; /* エラーかファイル終端 */ + res = f_write(&fdst, buffer, br, &bw); /* それをコピー先に書き込む */ + if (res || bw < br) break; /* エラーかディスク満杯 */ } - /* SẴt@C */ + /* 全てのファイルを閉じる */ f_close(&fsrc); f_close(&fdst); - /* [NEGAJ */ + /* ワーク エリアを開放する */ f_mount(NULL, "0:", 0); f_mount(NULL, "1:", 0); @@ -162,10 +162,10 @@ int main (void) - + diff --git a/fatfs/doc/ja/opendir.html b/fatfs/doc/ja/opendir.html index 9309160..ae40984 100644 --- a/fatfs/doc/ja/opendir.html +++ b/fatfs/doc/ja/opendir.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@f_opendir
-fBNgJ܂B
+ディレクトリを開きます。
FRESULT f_opendir ( - DIR* dp, /* [OUT] fBNgEuWFNg\̂ւ̃|C^ */ - const TCHAR* path /* [IN] fBNgւ̃|C^ */ + DIR* dp, /* [OUT] ディレクトリ ブジェクト構造体へのポインタ */ + const TCHAR* path /* [IN] ディレクトリ名へのポインタ */ );- +引数
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -55,22 +55,22 @@ FRESULT f_opendir (
- -fBNgJ܂BIA쐬ꂽDIR\̂gẴfBNg̍ڂǂݏo܂B
+解説
+ディレクトリを開きます。正常終了したら、作成されたDIR構造体を使ってこのディレクトリの項目を順次読み出せます。
-- + diff --git a/fatfs/doc/ja/printf.html b/fatfs/doc/ja/printf.html index b5c22e0..4de1da2 100644 --- a/fatfs/doc/ja/printf.html +++ b/fatfs/doc/ja/printf.html @@ -1,7 +1,7 @@ - + @@ -13,56 +13,56 @@Ή
-_FS_MINIMIZE <= 1̂Ƃgp\ɂȂ܂B
+対応情報
+_FS_MINIMIZE <= 1のとき使用可能になります。
f_printf
-t@Cɏ݂܂B
+ファイルに書式化文字列を書き込みます。
int f_printf ( - FIL* fp, /* [IN] t@CEIuWFNg */ - const TCHAR* fmt, /* [IN] 䕶 */ + FIL* fp, /* [IN] ファイル オブジェクト */ + const TCHAR* fmt, /* [IN] 書式制御文字列 */ ... );- +引数
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
- fmt
-- k'\0'I[̏䕶w|C^w肵܂Bk͏܂܂B
+- ヌル文字'\0'終端の書式制御文字列を指すポインタを指定します。ヌル文字は書き込まれません。
- ...
-- IvV̈B
+- オプションの引数。
-߂l
-ɏ܂ƁA܂ꂽԂ܂BfBXNt܂͂̑G[ɂ萳ɏ܂ȂƂ́A͎sEOF (-1)Ԃ܂B
+戻り値
+文字列が正常に書き込まれると、書き込まれた文字数が返されます。ディスクが満杯またはその他エラーにより正常に書き込まれなかったときは、関数は失敗しEOF (-1)が返されます。
- -̊́Af_putc()f_puts()̃bp[łB@\CWCũTuZbgƂȂĂāA䕶͎Ɏ̂gp\łB
+解説
+この関数は、f_putc()およびf_puts()のラッパー関数です。書式制御機能はC標準ライブラリのサブセットとなっていて、書式制御文字は次に示すものが使用可能です。
-
- ^Cv: c C s S d D u U x X b B
-- xw: l L
-- tO: 0 -
+- タイプ: c C s S d D u U x X b B
+- 精度指定: l L
+- フラグ: 0 -
-Ή
-_FS_READONLY == 0ŁA_USE_STRFUNC1܂2̂Ƃgp\ɂȂ܂B2̎́Ao͂Ɋ܂܂'\n''\r'+'\n'ɓWJăt@Cɏ܂܂B
-APIUnicodeI(_LFN_UNICODE1)ĂƂ́AfmtUnicodeɂȂ܂At@C̃GR[h́A_STRF_ENCODEIvVőIł܂BȊO͖̎ϊ(1oCg/1)ŏ݂܂B
+対応情報
+_FS_READONLY == 0で、且つ_USE_STRFUNCが1または2のとき使用可能になります。2の時は、出力に含まれる'\n'が'\r'+'\n'に展開されてファイルに書き込まれます。
+APIにUnicodeが選択(_LFN_UNICODEが1)されているときは、fmtはUnicode文字列になりますが、ファイル上のエンコードは、_STRF_ENCODEオプションで選択できます。それ以外の時は無変換(1バイト/1文字)で書き込みます。
-- + diff --git a/fatfs/doc/ja/putc.html b/fatfs/doc/ja/putc.html index 724f4c2..6b80b1a 100644 --- a/fatfs/doc/ja/putc.html +++ b/fatfs/doc/ja/putc.html @@ -1,7 +1,7 @@ - + @@ -13,50 +13,50 @@gp
+使用例
f_printf(&fil, "%d", 1234); /* "1234" */ f_printf(&fil, "%6d,%3d%%", -200, 5); /* " -200, 5%" */ @@ -78,16 +78,16 @@ int f_printf ( f_printf(&fil, "%8s", "abc"); /* " abc" */ f_printf(&fil, "%-8s", "abc"); /* "abc " */ f_printf(&fil, "%c", 'a'); /* "a" */ - f_printf(&fil, "%f", 10.0); /* _͖T|[g */ + f_printf(&fil, "%f", 10.0); /* 浮動小数点は未サポート */f_putc
-t@Cɕ݂܂B
+ファイルに文字を書き込みます。
int f_putc ( - TCHAR chr, /* [IN] ޕ */ - FIL* fp /* [IN] t@CEIuWFNg */ + TCHAR chr, /* [IN] 書き込む文字 */ + FIL* fp /* [IN] ファイル オブジェクト */ );- +引数
- chr
-- ޕw肵܂B
+- 書き込む文字を指定します。
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
-߂l
-ɏ܂ƏԂ܂BfBXNt܂̓G[ɂ菑܂ȂƂEOF (-1)Ԃ܂B
-APIUnicodeI(_LFN_UNICODE1)ĂƂ́AchrUTF-16ɂȂ܂At@C̃GR[h́A_STRF_ENCODEIvVőIł܂BȊO͖̎ϊ(1oCg/1)ŏ݂܂B
+戻り値
+文字が正常に書き込まれると書き込んだ文字数が返されます。ディスクが満杯またはエラーにより書き込まれなかったときはEOF (-1)が返されます。
+APIにUnicodeが選択(_LFN_UNICODEが1)されているときは、chrはUTF-16文字になりますが、ファイル上のエンコードは、_STRF_ENCODEオプションで選択できます。それ以外の時は無変換(1バイト/1文字)で書き込みます。
-- + diff --git a/fatfs/doc/ja/puts.html b/fatfs/doc/ja/puts.html index d815311..4f3167c 100644 --- a/fatfs/doc/ja/puts.html +++ b/fatfs/doc/ja/puts.html @@ -1,7 +1,7 @@ - + @@ -13,50 +13,50 @@Ή
-_FS_READONLY == 0ŁA_USE_STRFUNC 1܂ 2̂Ƃgp\łB2w肷ƁA'\n''\r'+'\n'ɓWJăt@Cɏ܂܂B
+対応情報
+_FS_READONLY == 0で、且つ_USE_STRFUNCが 1または 2のとき使用可能です。2を指定すると、'\n'は'\r'+'\n'に展開されてファイルに書き込まれます。
f_puts
-t@Cɕ݂܂B
+ファイルに文字列を書き込みます。
int f_puts ( - const TCHAR* str, /* [IN] ޕ */ - FIL* fp /* [IN] t@CEIuWFNg */ + const TCHAR* str, /* [IN] 書き込む文字列 */ + FIL* fp /* [IN] ファイル オブジェクト */ );- +引数
- str
-- ރk'\0'I[̕w|C^w肵܂Bk͏܂܂B
+- 書き込むヌル文字'\0'終端の文字列を指すポインタを指定します。ヌル文字は書き込まれません。
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
-߂l
-ɏ܂ƁA܂ꂽԂ܂BfBXNt܂̓G[ɂ菑݂fꂽƂEOF (-1)Ԃ܂B
-APIUnicodeI(_LFN_UNICODE1)ĂƂ́AstrUTF-16ɂȂ܂At@C̃GR[h́A_STRF_ENCODEIvVőIł܂BȊO͖̎ϊ(1oCg/1)ŏ݂܂B
+戻り値
+文字列が正常に書き込まれると、書き込まれた文字数が返されます。ディスクが満杯またはエラーにより書き込みが中断されたときはEOF (-1)が返されます。
+APIにUnicodeが選択(_LFN_UNICODEが1)されているときは、strはUTF-16文字列になりますが、ファイル上のエンコードは、_STRF_ENCODEオプションで選択できます。それ以外の時は無変換(1バイト/1文字)で書き込みます。
-- + diff --git a/fatfs/doc/ja/rc.html b/fatfs/doc/ja/rc.html index 8bcfb24..45a4738 100644 --- a/fatfs/doc/ja/rc.html +++ b/fatfs/doc/ja/rc.html @@ -11,20 +11,20 @@Ή
-_FS_READONLY == 0ŁA_USE_STRFUNC1܂2̂Ƃgp\łB2w肷ƁAɊ܂܂'\n''\r'+'\n'ɓWJăt@Cɏ܂܂B
+対応情報
+_FS_READONLY == 0で、且つ_USE_STRFUNCが1または2のとき使用可能です。2を指定すると、文字列に含まれる'\n'は'\r'+'\n'に展開されてファイルに書き込まれます。
ファイル関数の戻り値
-FatFsのAPIでは、一部の関数を除き結果に応じた共通のリザルト・コード(FRESULT型(enum))を返します。関数が成功した場合は0を返します。失敗した場合は0以外の値を返し、値はエラーの種類を示します。
+FatFsのAPIでは、一部の関数を除き結果に応じた共通のリザルト コード(FRESULT型(enum))を返します。関数が成功した場合は0を返します。失敗した場合は0以外の値を返し、値はエラーの種類を示します。
- FR_OK (0)
- 関数は成功した。
- FR_DISK_ERR
-- 下位レイヤ(disk_read(), disk_write(), disk_ioctl()関数)で回復不能なエラーが発生した。
+
※開かれたファイルの操作においてこのエラーが発生すると、そのファイル・オブジェクトはアボート状態となり、クローズ以外のの操作ができなくなります。- 下位レイヤ(disk_read(), disk_write(), disk_ioctl()関数)で回復不能なエラーが発生した。
※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外のの操作ができなくなります。- FR_INT_ERR
- 内部処理の健全性に異常が検出された。原因としては次のようなことが考えられます。
+※開かれたファイルの操作においてこのエラーが発生すると、そのファイル オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。-※開かれたファイルの操作においてこのエラーが発生すると、そのファイル・オブジェクトはアボート状態となり、クローズ以外の操作ができなくなります。
- ボリューム上のFAT構造にエラーがある。
-- スタック不足や不正なメモリ操作等によるワーク・エリアの破壊。多くはこれが原因。
+- スタック不足や不正なメモリ操作等によるワーク エリアの破壊。多くはこれが原因。
- FR_NOT_READY
- 物理ドライブが動作可能な状態にない。または、ドライブの初期化に失敗した。
- FR_NO_FILE
@@ -38,22 +38,22 @@
- 書き込み禁止属性(AM_RDO)を持つファイルを書き込みモードで開こうとした。
- 書き込み禁止属性を持つファイルやディレクトリを削除しようとした。
-- 空でないディレクトリまたはカレント・ディレクトリを削除しようとした。
+- 空でないディレクトリまたはカレント ディレクトリを削除しようとした。
- FA_READフラグを付けずに開いたファイルに対して読み出しを行った。
- FA_WRITEフラグを付けずに開いたファイルに対して書き込みまたはそれに類する操作を行った。
-- ボリュームまたはディレクトリ・テーブルが満杯でファイルやディレクトリを作成できなかった。
+- ボリュームまたはディレクトリ テーブルが満杯でファイルやディレクトリを作成できなかった。
- FR_EXIST
- 新しく作成しようとしたオブジェクトと同じ名前のオブジェクトが既に存在する。
- FR_INVALID_OBJECT
-- 指定されたファイル・オブジェクトやディレクトリ・オブジェクトが無効(オープンされていない、既に閉じられた、破損しているなど)、またはヌル・ポインタが渡された。また、開かれたままのオブジェクトは、それの属するボリュームのマウント動作により無効となります。
+- 指定されたファイル オブジェクトやディレクトリ オブジェクトが無効(オープンされていない、既に閉じられた、破損しているなど)、またはヌル ポインタが渡された。また、開かれたままのオブジェクトは、それの属するボリュームのマウント動作により無効となります。
- FR_WRITE_PROTECTED
- 物理ドライブが書き込み禁止状態のとき、書き込みを伴う操作を行おうとした。
- FR_INVALID_DRIVE
-- パス名中に指定されたドライブ番号が無効、またはパス名にヌル・ポインタが渡された。(関連オプション: _VOLUMES)
+- パス名中に指定されたドライブ番号が無効、またはパス名にヌル ポインタが渡された。(関連オプション: _VOLUMES)
- FR_NOT_ENABLED
-- そのボリュームの操作に必要なワーク・エリア(ファイル・システム・オブジェクト構造体)が与えられていない。
+- そのボリュームの操作に必要なワーク エリア(ファイル システム オブジェクト構造体)が与えられていない。
- FR_NO_FILESYSTEM
- 物理ドライブ上に有効なFATボリュームが見つからなかった。
- FR_MKFS_ABORTED
diff --git a/fatfs/doc/ja/read.html b/fatfs/doc/ja/read.html index 04ef8b3..c7f2d25 100644 --- a/fatfs/doc/ja/read.html +++ b/fatfs/doc/ja/read.html @@ -1,7 +1,7 @@ - + @@ -13,34 +13,34 @@f_read
-t@Cf[^ǂݏo܂B
+ファイルからデータを読み出します。
FRESULT f_read ( - FIL* fp, /* [IN] t@CEIuWFNg\ */ - void* buff, /* [OUT] ǂݏof[^i[obt@ */ - UINT btr, /* [IN] ǂݏooCg */ - UINT* br /* [OUT] ǂݏoꂽoCg */ + FIL* fp, /* [IN] ファイル オブジェクト構造体 */ + void* buff, /* [OUT] 読み出したデータを格納するバッファ */ + UINT btr, /* [IN] 読み出すバイト数 */ + UINT* br /* [OUT] 読み出されたバイト数 */ );- +引数
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
- buff
-- ǂݏof[^i[obt@w|C^w肵܂B
+- 読み出したデータを格納するバッファを指すポインタを指定します。
- btr
-- ǂݏooCg(0`UINT^̍ől)w肵܂B
+- 読み出すバイト数(0~UINT型の最大値)を指定します。
- br
-- ۂɓǂݏoꂽoCgi[ϐw|C^w肵܂B߂l͊̐ۂɂ炸ɗLłB
+- 実際に読み出されたバイト数を格納する変数を指すポインタを指定します。戻り値は関数の成否にかかわらず常に有効です。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -54,22 +54,22 @@ FRESULT f_read (
- -ǂݍ݊JnʒúÃ݂[h/CgE|C^ɂȂ܂B[h/CgE|C^͓ǂݍ܂ꂽoCgi݂܂BÍA*br̒l`FbNׂłB*brbtrƂ́AǂݍݒɃt@C̏I[ɒBƂĂ܂B
+解説
+読み込み開始位置は、現在のリード/ライト ポインタからになります。リード/ライト ポインタは読み込まれたバイト数だけ進みます。関数が正常終了した後は、*brの値をチェックすべきです。*brがbtrよりも小さいときは、読み込み中にファイルの終端に達したことを示しています。
-- + diff --git a/fatfs/doc/ja/readdir.html b/fatfs/doc/ja/readdir.html index bd1c34e..fc8fc5c 100644 --- a/fatfs/doc/ja/readdir.html +++ b/fatfs/doc/ja/readdir.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@Ή
-SĂ̍\Ŏgp\łB
+対応情報
+全ての構成で使用可能です。
f_readdir
-fBNgڂǂݏo܂B
+ディレクトリ項目を読み出します。
FRESULT f_readdir ( - DIR* dp, /* [IN] fBNgEuWFNg\̂ւ̃|C^ */ - FILINFO* fno /* [OUT] t@C\̂ւ̃|C^ */ + DIR* dp, /* [IN] ディレクトリ ブジェクト構造体へのポインタ */ + FILINFO* fno /* [OUT] ファイル情報構造体へのポインタ */ );- +引数
- dp
-- LȃfBNgEIuWFNg\̂ւ̃|C^w肵܂B
+- 有効なディレクトリ オブジェクト構造体へのポインタを指定します。
- fno
-- ǂݏofBNgڂi[t@C\̂ւ̃|C^w肵܂B
+- 読み出したディレクトリ項目を格納するファイル情報構造体へのポインタを指定します。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -48,37 +48,37 @@ FRESULT f_readdir (
- -fBNg̍(t@CƃfBNg)ǂݏo܂B̊JԂs邱Ƃɂ肻̃fBNg̑SĂ̍ڂǂݏoƂł܂Bt@C̏ڍׂɂĂ FILINFO\̂QƂĂBSĂ̍ڂǂݏoAǂݏoڂƂ́Afname[]oɃkԂ܂BfnoɃkE|C^w肷ƁÃfBNg̃[hECfbNX擪Ɋ߂܂B܂Å͎Ɏ悤Ɋ֘A\IvVɂ蓮삪ς܂B
-hbgEGg("."A"..")́ApXLȂƂ(_FS_RPATH >= 1)ɂ̂ݏo͂Ɍ܂B
-LFN@\LȎ́Å̌Ăяoɐ旧FILINFO\̂lfnamelfsizeLȒlŏĂȂȂ܂BlfnameLFNi[obt@ŁAlfsize͂̃obt@̗vfłBLFNǂݏoKvȂƂ́AlfnameɃkE|C^ZbgĂB̏ɈłYꍇ́ALFNi[obt@ɃkԂ܂B
+解説
+ディレクトリの項目(ファイルとディレクトリ)を順次読み出します。この関数を繰り返し実行することによりそのディレクトリの全ての項目を読み出すことができます。得られるファイル情報の詳細については FILINFO構造体を参照してください。全ての項目が読み出され、読み出す項目がもう無いときは、fname[]メンバにヌル文字列が返されます。fnoにヌル ポインタを指定すると、そのディレクトリのリード インデックスを先頭に巻き戻します。また、この関数は次に示すように関連する構成オプションにより動作が変わります。
+ドット エントリ("."、"..")は、相対パスが有効なとき(_FS_RPATH >= 1)にのみ出力に現れます。
+LFN機能が有効な時は、この関数の呼び出しに先立ってFILINFO構造体のlfnameとlfsizeが有効な値で初期化されていなければなりません。lfnameはLFNを格納するバッファで、lfsizeはそのバッファの要素数です。LFNを読み出す必要がないときは、lfnameにヌル ポインタをセットしてください。次の条件に一つでも該当する場合は、LFN格納バッファにヌル文字列が返されます。
-
-- fBNgڂLFN݂ȂB
-- LFN̒ɑLFNi[obt@܂LFNobt@̃TCYs\B
-- LFNɌ݂OEMR[hɑ݂Ȃ܂܂ĂB(Unicode\̂Ƃ)
+- ディレクトリ項目にLFN情報が存在しない。
+- LFNの長さに対してLFN格納バッファまたはLFN操作バッファのサイズが不十分。
+- LFNに現在のOEMコードに存在しない文字が含まれている。(非Unicode構成のとき)
܂AfBNgڂLFN݂Ȃꍇ́Afname[]ɉp܂܂ꍇ܂B
+また、ディレクトリ項目にLFN情報が存在しない場合は、fname[]に英小文字が含まれる場合があります。
-Ή
-_FS_MINIMIZE <= 1̂ƂɎgp\łB
+対応情報
+_FS_MINIMIZE <= 1のときに使用可能です。
-gp
+使用例
FRESULT scan_files ( - char* path /* Jnm[h ([NGAƂĂgp) */ + char* path /* 開始ノード (ワークエリアとしても使用) */ ) { FRESULT res; FILINFO fno; DIR dir; int i; - char *fn; /* Unicode\z */ + char *fn; /* 非Unicode構成を想定 */ #if _USE_LFN static char lfn[_MAX_LFN + 1]; fno.lfname = lfn; @@ -86,24 +86,24 @@ FRESULT scan_files ( #endif - res = f_opendir(&dir, path); /* fBNgJ */ + res = f_opendir(&dir, path); /* ディレクトリを開く */ if (res == FR_OK) { i = strlen(path); for (;;) { - res = f_readdir(&dir, &fno); /* fBNgڂ1ǂݏo */ - if (res != FR_OK || fno.fname[0] == 0) break; /* G[܂͍ږ̂Ƃ͔ */ - if (fno.fname[0] == '.') continue; /* hbgGg͖ */ + res = f_readdir(&dir, &fno); /* ディレクトリ項目を1個読み出す */ + if (res != FR_OK || fno.fname[0] == 0) break; /* エラーまたは項目無しのときは抜ける */ + if (fno.fname[0] == '.') continue; /* ドットエントリは無視 */ #if _USE_LFN fn = *fno.lfname ? fno.lfname : fno.fname; #else fn = fno.fname; #endif - if (fno.fattrib & AM_DIR) { /* fBNg */ + if (fno.fattrib & AM_DIR) { /* ディレクトリ */ sprintf(&path[i], "/%s", fn); res = scan_files(path); - if (res != FR_OK) break; path[i] = 0; - } else { /* t@C */ + if (res != FR_OK) break; + } else { /* ファイル */ printf("%s/%s\n", path, fn); } } @@ -117,10 +117,10 @@ FRESULT scan_files ( - + diff --git a/fatfs/doc/ja/rename.html b/fatfs/doc/ja/rename.html index 0eafa49..5259846 100644 --- a/fatfs/doc/ja/rename.html +++ b/fatfs/doc/ja/rename.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@f_rename
-t@C܂̓TuEfBNg̖O̕ύX܂͈ړ܂B
+ファイルまたはサブ ディレクトリの名前の変更または移動します。
FRESULT f_rename ( - const TCHAR* old_name, /* [IN] ÂIuWFNg */ - const TCHAR* new_name /* [IN] VIuWFNg */ + const TCHAR* old_name, /* [IN] 古いオブジェクト名 */ + const TCHAR* new_name /* [IN] 新しいオブジェクト名 */ );- +引数
- old_name
-- ύXΏۂ̃t@C܂̓TuEfBNgpXk'\0'I[̕ւ̃|C^w肵܂B
+- 変更対象のファイルまたはサブ ディレクトリのパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。
- new_name
-- VpXk'\0'I[̕ւ̃|C^w肵܂Bɑ݂IuWFNgƓO͎g܂B܂AhCuԍ͎w肵ĂAold_nameŌ߂ꂽ_hCũIuWFNgƂĈ܂B
+- 新しいパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。既に存在するオブジェクトと同じ名前は使えません。また、ドライブ番号は指定しても無視され、old_nameで決められた論理ドライブ上のオブジェクトとして扱われます。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -55,28 +55,28 @@ FRESULT f_rename (
- -t@C܂̓TuEfBNg̖OύX܂B܂Aɕʂ̃fBNgւ̈ړ\łAقȂhCuւ̈ړ͂ł܂BJĂIuWFNgɑĎgpĂ͂Ȃ܂B
+解説
+ファイルまたはサブ ディレクトリの名前を変更します。また、同時に別のディレクトリへの移動も可能ですが、異なるドライブへの移動はできません。開かれているオブジェクトに対して使用してはなりません。
-Ή
-_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のときに使用可能です。
-- + diff --git a/fatfs/doc/ja/sdir.html b/fatfs/doc/ja/sdir.html index 3e6f712..3390549 100644 --- a/fatfs/doc/ja/sdir.html +++ b/fatfs/doc/ja/sdir.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@gp
+使用例
- /* t@C܂̓TufBNg̖OύX */ + /* ファイルまたはサブディレクトリの名前を変更する */ f_rename("oldname.txt", "newname.txt"); - /* t@C܂̓TufBNg̖O̕ύXƕʂ̃fBNgւ̈ړ */ + /* ファイルまたはサブディレクトリの名前の変更と別のディレクトリへの移動 */ f_rename("oldname.txt", "dir1/newname.txt");- + diff --git a/fatfs/doc/ja/setlabel.html b/fatfs/doc/ja/setlabel.html index af4a243..dc71ac3 100644 --- a/fatfs/doc/ja/setlabel.html +++ b/fatfs/doc/ja/setlabel.html @@ -1,7 +1,7 @@ - + @@ -13,25 +13,25 @@DIR
-DIR\̂́Af_opendir(), f_readdir()̃[NEGAƂĎgp܂BAvP[V́A̍\̂̃oĂ͂Ȃ܂B
+DIR構造体は、f_opendir(), f_readdir()のワーク エリアとして使用されます。アプリケーションは、この構造体のメンバを書き換えてはなりません。
typedef struct { - FATFS* fs; /* et@CEVXeEIuWFNgւ̃|C^ */ - WORD id; /* et@CEVXeEIuWFNg̃}EgID */ - WORD index; /* ɌJnfBNgECfbNXԍ */ - DWORD sclust; /* e[uJnNX^ (0:[g) */ - DWORD clust; /* ݂̃NX^ԍ */ - DWORD sect; /* ݂̃ZN^ԍ */ - BYTE* dir; /* ݂SFNGgւ̃|C^ */ - BYTE* fn; /* SFNobt@ւ̃|C^ (in/out) {file[8],ext[3],status[1]} */ + FATFS* fs; /* 親ファイル システム オブジェクトへのポインタ */ + WORD id; /* 親ファイル システム オブジェクトのマウントID */ + WORD index; /* 次に検索開始するディレクトリ インデックス番号 */ + DWORD sclust; /* テーブル開始クラスタ (0:ルート) */ + DWORD clust; /* 現在のクラスタ番号 */ + DWORD sect; /* 現在のセクタ番号 */ + BYTE* dir; /* 現在のSFNエントリへのポインタ */ + BYTE* fn; /* SFNバッファへのポインタ (in/out) {file[8],ext[3],status[1]} */ #if _FS_LOCK - UINT lockid; /* bNID */ + UINT lockid; /* ロックID */ #endif #if _USE_LFN - WCHAR* lfn; /* LFNobt@ւ̃|C^ (in/out) */ - WORD lfn_idx; /* LFNGg̐擪CfbNX (0xFFFF:) */ + WCHAR* lfn; /* LFNバッファへのポインタ (in/out) */ + WORD lfn_idx; /* LFNエントリの先頭インデックス (0xFFFF:無効) */ #endif } DIR;f_setlabel
-{[Ƀ{[Exݒ肵܂B
+ボリュームにボリューム ラベルを設定します。
FRESULT f_setlabel ( - const TCHAR* label /* [IN] ݒ肷{[Exւ̃|C^ */ + const TCHAR* label /* [IN] 設定するボリューム ラベルへのポインタ */ );- +引数
- label
-- ݒ肷{[Exk'\0'I[̕ւ̃|C^w肵܂B
+- 設定するボリューム ラベルを示すヌル文字'\0'終端の文字列へのポインタを指定します。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -48,42 +48,42 @@ FRESULT f_setlabel (
- -̐擪ɃhCuԍ܂ޏꍇ́A̘_hCuɑĐݒ肳܂B܂܂Ȃꍇ́AftHgEhCuɐݒ肳܂B{[Ex폜Ƃ́Akw肵܂B{[Ex̃tH[}bǵAt@C(SFN)ƂقړłA̓_قȂ܂B
+解説
+文字列の先頭にドライブ番号を含む場合は、その論理ドライブに対して設定されます。含まない場合は、デフォルト ドライブに設定されます。ボリューム ラベルを削除するときは、ヌル文字列を指定します。ボリューム ラベルのフォーマットは、ファイル名(SFN)とほぼ同じですが、次の点が異なります。
-
- [JR[hZ11oCgȉBLFNg͓Kp܂B
-- sIh܂ނƂ͂łȂB
-- Cӂ̈ʒuɃXy[XuƂłBAŌƂȂXy[X͏B
+- ローカル文字コード換算で11バイト以下。LFN拡張は適用されません。
+- ピリオドを含むことはできない。
+- 任意の位置にスペースを置くことができる。ただし、最後尾となるスペースは除去される。
-Ή
-_FS_READONLY == 0ŁA_USE_LABEL == 1̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_USE_LABEL == 1のときに使用可能です。
-- + diff --git a/fatfs/doc/ja/sfatfs.html b/fatfs/doc/ja/sfatfs.html index ed5ac87..93b9e7c 100644 --- a/fatfs/doc/ja/sfatfs.html +++ b/fatfs/doc/ja/sfatfs.html @@ -1,7 +1,7 @@ - + @@ -13,43 +13,43 @@gp
+使用例
- /* ftHgEhCuɃ{[Exݒ */ + /* デフォルト ドライブにボリューム ラベルを設定 */ f_setlabel("DATA DISK"); - /* hCu2Ƀ{[Exݒ */ + /* ドライブ2にボリューム ラベルを設定 */ f_setlabel("2:DISK 3 OF 4"); - /* hCu2̃{[Ex폜 */ + /* ドライブ2のボリューム ラベルを削除 */ f_setlabel("2:");- + diff --git a/fatfs/doc/ja/sfile.html b/fatfs/doc/ja/sfile.html index 36a73b3..5da60f9 100644 --- a/fatfs/doc/ja/sfile.html +++ b/fatfs/doc/ja/sfile.html @@ -1,7 +1,7 @@ - + @@ -13,36 +13,36 @@FATFS
-FATFS\(t@CEVXeEIuWFNg)́AX̘_hCũ_Ci~bNE[NEGAێAf_mount()FatFsW[ɓo^܂Bs^C~ÓAf_mount()(}Egw)̎s܂̓fBǍ̍ŏ̃t@CEANZX̎łBAvP[V́A̍\̂̃oĂ͂Ȃ܂B
+FATFS構造体(ファイル システム オブジェクト)は、個々の論理ドライブのダイナミック ワーク エリアを保持し、f_mount()でFatFsモジュールに登録されます。初期化が行われるタイミングは、f_mount()(強制マウント指定)の実行またはメディア交換の後の最初のファイル アクセスの時です。アプリケーションは、この構造体のメンバを書き換えてはなりません。
typedef struct { - BYTE fs_type; /* FAT^Cv */ - BYTE drv; /* hCuԍ */ - BYTE csize; /* NX^̃ZN^ (1,2,4,8,...,128)*/ - BYTE n_fats; /* FAT̑d (1,2) */ - BYTE wflag; /* win[]_[eBEtO */ - BYTE fsi_flag; /* FSINFOtO (b7:Disabled, b0:Dirty)*/ - WORD id; /* t@CEVXeE}EgID */ - WORD n_rootdir; /* [gEfBNg̃Gg (FAT12/16) */ + BYTE fs_type; /* FATタイプ */ + BYTE drv; /* 物理ドライブ番号 */ + BYTE csize; /* クラスタ当たりのセクタ数 (1,2,4,8,...,128)*/ + BYTE n_fats; /* FATの多重化数 (1,2) */ + BYTE wflag; /* win[]ダーティ フラグ */ + BYTE fsi_flag; /* FSINFOフラグ (b7:Disabled, b0:Dirty)*/ + WORD id; /* ファイル システム マウントID */ + WORD n_rootdir; /* ルート ディレクトリのエントリ数 (FAT12/16) */ #if _MAX_SS != _MIN_SS - WORD ssize; /* ZN^ETCY (512, 1024, 2048 or 4096) */ + WORD ssize; /* セクタ サイズ (512, 1024, 2048 or 4096) */ #endif #if _FS_REENTRANT - _SYNC_t sobj; /* IuWFNgID */ + _SYNC_t sobj; /* 同期オブジェクトID */ #endif #if !_FS_READONLY - DWORD last_clust; /* FSINFO: ŌɊ蓖ĂꂽNX^ԍ */ - DWORD free_clust; /* FSINFO: NX^ */ + DWORD last_clust; /* FSINFO: 最後に割り当てられたクラスタ番号 */ + DWORD free_clust; /* FSINFO: 空きクラスタ数 */ #endif #if _FS_RPATH - DWORD cdir; /* JgEfBNg̃NX^ (0:[g) */ + DWORD cdir; /* カレント ディレクトリのクラスタ (0:ルート) */ #endif - DWORD n_fatent; /* FATGg (NX^ + 2) */ - DWORD fsize; /* FAT 1̃ZN^ */ - DWORD volbase; /* {[JnZN^ */ - DWORD fatbase; /* FAT̈JnZN^ */ - DWORD dirbase; /* [gEfBNg̈JnZN^(NX^) */ - DWORD database; /* f[^̈JnZN^ */ - DWORD winsect; /* win[]ɌĂZN^ԍ */ - BYTE win[_MAX_SS]; /* fBXNEANZXEEBhE */ + DWORD n_fatent; /* FATエントリ数 (総クラスタ数 + 2) */ + DWORD fsize; /* FAT 1個のセクタ数 */ + DWORD volbase; /* ボリューム開始セクタ */ + DWORD fatbase; /* FAT領域開始セクタ */ + DWORD dirbase; /* ルート ディレクトリ領域開始セクタ(クラスタ) */ + DWORD database; /* データ領域開始セクタ */ + DWORD winsect; /* win[]に現れているセクタ番号 */ + BYTE win[_MAX_SS]; /* ディスク アクセス ウィンドウ */ } FATFS;- + diff --git a/fatfs/doc/ja/sfileinfo.html b/fatfs/doc/ja/sfileinfo.html index 1a3db24..a9167f1 100644 --- a/fatfs/doc/ja/sfileinfo.html +++ b/fatfs/doc/ja/sfileinfo.html @@ -1,7 +1,7 @@ - + @@ -13,58 +13,58 @@FIL
-FIL\(t@CEIuWFNg)́Af_open()ŏAȌセ̃t@C̏Ԃێ܂B܂Af_close()Ńt@CƖ܂BAvP[V́A̍\̂̃oĂ͂Ȃ܂(cltbl͗O)B^Cj[\ł́AɃZN^Eobt@mۂ̂ŁALTCYɒӂKvłB
+FIL構造体(ファイル オブジェクト)は、f_open()で初期化され、以後そのファイルの状態を保持します。また、f_close()でファイルが閉じられると無効化されます。アプリケーションは、この構造体のメンバを書き換えてはなりません(cltblは例外)。非タイニー構成(_FS_TINY == 0)では、内部に_MAX_SSバイトのセクタ バッファが確保されるので、そのサイズには注意が必要です。
typedef struct { - FATFS* fs; /* et@CEVXeEIuWFNgւ̃|C^ */ - WORD id; /* et@CEVXeEIuWFNg̃}EgID */ - BYTE flag; /* t@CEXe[^XEtO */ - BYTE err; /* G[ftO */ - DWORD fptr; /* t@Cǂݏ|C^ (t@C擪̃oCgEItZbg) */ - DWORD fsize; /* t@CETCY(oCgP) */ - DWORD sclust; /* t@CJnNX^ԍ (0:蓖Ė) */ - DWORD clust; /* ݂̃NX^ */ - DWORD dsect; /* ݂̃f[^EZN^ */ + FATFS* fs; /* 親ファイル システム オブジェクトへのポインタ */ + WORD id; /* 親ファイル システム オブジェクトのマウントID */ + BYTE flag; /* ファイル ステータス フラグ */ + BYTE err; /* エラー中断フラグ */ + DWORD fptr; /* ファイル読み書きポインタ (ファイル先頭からのバイト オフセット) */ + DWORD fsize; /* ファイル サイズ(バイト単位) */ + DWORD sclust; /* ファイル開始クラスタ番号 (0:割り当て無し) */ + DWORD clust; /* 現在のクラスタ */ + DWORD dsect; /* 現在のデータ セクタ */ #if !_FS_READONLY - DWORD dir_sect; /* ̃t@C̃fBNgEGĝZN^ */ - BYTE* dir_ptr; /* ̃t@C̃fBNgւ̃|C^ */ + DWORD dir_sect; /* このファイルのディレクトリ エントリのあるセクタ */ + BYTE* dir_ptr; /* このファイルのディレクトリへのポインタ */ #endif #if _USE_FASTSEEK - DWORD* cltbl; /* t@C̃NX^ENւ̃|C^ (I[vNULLZbg) */ + DWORD* cltbl; /* ファイルのクラスタ リンク情報へのポインタ (オープン時にNULLがセットされる) */ #endif #if _FS_LOCK - UINT lockid; /* t@CEbNID */ + UINT lockid; /* ファイル ロックID */ #endif #if !_FS_TINY - BYTE buf[_MAX_SS]; /* t@CEvCx[gEf[^]obt@ */ + BYTE buf[_MAX_SS]; /* ファイル プライベート データ転送バッファ */ #endif } FIL;-FILINFO
-FILINFO\̂́Af_stat(), f_readdir()ŕԂt@Cێ܂B
+FILINFO構造体は、f_stat(), f_readdir()で返されるファイル情報を保持します。
typedef struct { - DWORD fsize; /* t@CETCY */ - WORD fdate; /* ŌɍXVꂽt */ - WORD ftime; /* ŌɍXVꂽ */ - BYTE fattrib; /* Agr[g */ - TCHAR fname[13]; /* Zt@C (8.3tH[}bg) */ + DWORD fsize; /* ファイル サイズ */ + WORD fdate; /* 最後に更新された日付 */ + WORD ftime; /* 最後に更新された時刻 */ + BYTE fattrib; /* アトリビュート */ + TCHAR fname[13]; /* 短いファイル名 (8.3フォーマット) */ #if _USE_LFN - TCHAR* lfname; /* t@C̃obt@ւ̃|C^ */ - int lfsize; /* t@C̃obt@̃TCY [] */ + TCHAR* lfname; /* 長いファイル名のバッファへのポインタ */ + int lfsize; /* 長いファイル名のバッファのサイズ [文字数] */ #endif } FILINFO;o
+メンバ
- + diff --git a/fatfs/doc/ja/size.html b/fatfs/doc/ja/size.html index caff05d..d75ffc3 100644 --- a/fatfs/doc/ja/size.html +++ b/fatfs/doc/ja/size.html @@ -1,7 +1,7 @@ - + @@ -13,33 +13,33 @@
- fsize
-- t@C̃oCgPʂ̃TCYi[܂BfBNg̏ꍇ͏0łB
+- ファイルのバイト単位のサイズが格納されます。ディレクトリの場合は常に0です。
- fdate
-- t@C̕ύXꂽtA܂̓fBNg̍쐬ꂽti[܂B
+- ファイルの変更された日付、またはディレクトリの作成された日付が格納されます。
- bit15:9
-- 1980NN_ƂN 0..127 œ܂B
+- 1980年を起点とした年が 0..127 で入ります。
- bit8:5
-- 1..12 ̒lœ܂B
+- 月が 1..12 の値で入ります。
- bit4:0
-- 1..31 ̒lœ܂B
+- 日が 1..31 の値で入ります。
- ftime
-- t@C̕ύXꂽA܂̓fBNg̍쐬ꂽi[܂B
+- ファイルの変更された時刻、またはディレクトリの作成された時刻が格納されます。
- bit15:11
-- 0..23 ̒lœ܂B
+- 時が 0..23 の値で入ります。
- bit10:5
-- 0..59 ̒lœ܂B
+- 分が 0..59 の値で入ります。
- bit4:0
-- b/2 0..29 ̒lœ܂B
+- 秒/2が 0..29 の値で入ります。
- fattrib
-- tOi[܂BtOAM_DIR, AM_RDO, AM_HID, AM_SYS, AM_ARC̑gݍ킹ƂȂ܂B
+- 属性フラグが格納されます。フラグはAM_DIR, AM_RDO, AM_HID, AM_SYS, AM_ARCの組み合わせとなります。
- fname[]
-- 8.3`̖O'\0'ŏI镶ƂĊi[܂BLFN\̂Ƃ́Aɑ啶ŕԂ܂BLFN\̂Ƃ͒ZOԂ܂AASCIIpɂȂꍇ܂B
+- 8.3形式の名前が'\0'で終わる文字列として格納されます。非LFN構成のときは、常に大文字で返されます。LFN構成のときは短い名前が返されますが、ASCII英字が小文字になる場合があります。
- lfname
-- Ԃ钷t@Ci[obt@ւ̃|C^B̍\̂gpOɃAvP[Vɂ菉ȂȂ܂B̃oNULLݒ肳LFN͕Ԃ܂BLFN\̂Ƃ͂̃o݂͑܂B
+- 返される長いファイル名を格納するバッファへのポインタ。この構造体を使用する前にアプリケーションにより初期化されなければなりません。このメンバにNULLが設定されるとLFNは返されません。非LFN構成のときはこのメンバは存在しません。
- lfsize
-- t@Ci[obt@̃TCY(vf)B̍\̂gpOɃAvP[Vɂ菉ȂȂ܂BLFN\̂Ƃ͂̃o݂͑܂B
+- 長いファイル名を格納するバッファのサイズ(要素数)。この構造体を使用する前にアプリケーションにより初期化されなければなりません。非LFN構成のときはこのメンバは存在しません。
f_size
-t@C̃TCY擾܂B
+ファイルのサイズを取得します。
DWORD f_size ( - FIL* fp /* [IN] t@CEIuWFNg */ + FIL* fp /* [IN] ファイル オブジェクト */ );- +引数
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
-߂l
-oCgPʂ̃t@CETCYԂ܂B
+戻り値
+バイト単位のファイル サイズが返ります。
- -f_sizéArWł̓}NƂĎĂ܂B
+解説
+f_size関数は、現リビジョンではマクロとして実装されています。
#define f_size(fp) ((fp)->fsize)
@@ -47,16 +47,16 @@ DWORD f_size (-- + diff --git a/fatfs/doc/ja/stat.html b/fatfs/doc/ja/stat.html index 5337f34..724a9d5 100644 --- a/fatfs/doc/ja/stat.html +++ b/fatfs/doc/ja/stat.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@Ή
-Ɏgp\B
+対応情報
+常に使用可能。
f_stat
-t@C܂̓TuEfBNgׁ݂̑A܂̏擾܂B
+ファイルまたはサブ ディレクトリの存在を調べ、またその情報を取得します。
FRESULT f_stat ( - const TCHAR* path, /* [IN] IuWFNgւ̃|C^ */ - FILINFO* fno /* [OUT] t@C\̂ւ̃|C^ */ + const TCHAR* path, /* [IN] オブジェクト名へのポインタ */ + FILINFO* fno /* [OUT] ファイル情報構造体へのポインタ */ );- +引数
- path
-- `FbNIuWFNgk'\0'I[̕w|C^w肵܂B
+- チェックするオブジェクト名を示すヌル文字'\0'終端の文字列を指すポインタを指定します。
- fno
-- IuWFNg݂Ƃɂ̏i[t@C\̂ւ̃|C^w肵܂B̏svȂƂ̓kE|C^w肵ĂB
+- オブジェクトが存在したときにその情報を格納するファイル情報構造体へのポインタを指定します。この情報が不要なときはヌル ポインタを指定してください。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -53,22 +53,61 @@ FRESULT f_stat (
- -w肳ꂽt@C܂̓TuEfBNgׂ݂̑܂B݂Ȃꍇ́AFR_NO_FILEA܂B݂ꍇFR_OKAAt@C\̂ɂւ(TCYA^CX^vAђZt@C)XgA܂B
+解説
+指定されたファイルまたはサブ ディレクトリの存在を調べます。存在しない場合は、FR_NO_FILEが帰ります。存在する場合はFR_OKが帰り、ファイル情報構造体にそれ関する情報(サイズ、タイムスタンプ、属性および短いファイル名)がストアされます。
-+ + +Ή
-_FS_MINIMIZE == 0̂ƂɎgp\łB
+対応情報
+_FS_MINIMIZE == 0のときに使用可能です。
++- + diff --git a/fatfs/doc/ja/sync.html b/fatfs/doc/ja/sync.html index 74f7910..4b594d6 100644 --- a/fatfs/doc/ja/sync.html +++ b/fatfs/doc/ja/sync.html @@ -1,7 +1,7 @@ - + @@ -13,25 +13,25 @@使用例
++ FRESULT fr; + FILINFO fno; + + + printf("Test for 'file.txt'...\n"); + +#if _USE_LFN + fno.lfname = 0; +#endif + fr = f_stat("file.txt", &fno); + switch (fr) { + + case FR_OK: + printf("Size: %u\n", fno.fsize); + printf("Timestamp: %u/%02u/%02u, %02u:%02u\n", + (fno.fdate >> 9) + 1980, fno.fdate >> 5 & 15, fno.fdate & 31, + fno.ftime >> 11, fno.ftime >> 5 & 63); + printf("Attributes: %c%c%c%c%c\n", + (fno.fattrib & AM_DIR) ? 'D' : '-', + (fno.fattrib & AM_RDO) ? 'R' : '-', + (fno.fattrib & AM_HID) ? 'H' : '-', + (fno.fattrib & AM_SYS) ? 'S' : '-', + (fno.fattrib & AM_ARC) ? 'A' : '-'); + break; + + case FR_NO_FILE: + printf("It is not exist.\n"); + break; + + default: + printf("An error occured. (%d)\n", fr); + } +f_sync
-ݒ̃t@C̃LbVꂽtbV܂B
+書き込み中のファイルのキャッシュされた情報をフラッシュします。
FRESULT f_sync ( - FIL* fp /* [IN] t@CEIuWFNg\̂ւ̃|C^ */ + FIL* fp /* [IN] ファイル オブジェクト構造体へのポインタ */ );- +引数
- fp
-- synct@C̃t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- syncするファイルのファイル オブジェクト構造体へのポインタを指定します。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -44,23 +44,23 @@ FRESULT f_sync (
- -̊f_close()Ɠs܂At@C͈Jꂽ܂܂ɂȂAǂݏsł܂BMOȂǁA݃[hŒԃt@CJĂAvP[VɂāAI܂̗͋ǂƂł̊gp邱ƂɂAsӂ̓dffBA̎Oɂ莸f[^ŏɂ邱Ƃł܂B̔wiɂẮAAvP[VEm[gQƂĂB
-ۂ̂ƂAf_close()ł͂̊Ăяot@CEIuWFNgĂ邾Ȃ̂ŁAf_close()Of_sync()uƂ͖ӖłB
+解説
+この関数はf_close()と同じ処理を実行しますが、ファイルは引き続き開かれたままになり、読み書きを続行できます。ロギングなど、書き込みモードで長時間ファイルが開かれているアプリケーションにおいて、定期的または区切りの良いところでこの関数を使用することにより、不意の電源断やメディアの取り外しにより失われるデータを最小にすることができます。この背景については、アプリケーション ノートも参照してください。
+実際のところ、f_close()内ではこの関数を呼び出した後ファイル オブジェクトを無効化しているだけなので、f_close()直前にf_sync()を置くことは無意味です。
-- + diff --git a/fatfs/doc/ja/tell.html b/fatfs/doc/ja/tell.html index 1dee982..d050691 100644 --- a/fatfs/doc/ja/tell.html +++ b/fatfs/doc/ja/tell.html @@ -1,7 +1,7 @@ - + @@ -13,33 +13,33 @@Ή
-_FS_READONLY == 0̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0のときに使用可能です。
f_tell
-݂̃[h/CgE|C^擾܂B
+現在のリード/ライト ポインタを取得します。
DWORD f_tell ( - FIL* fp /* [IN] t@CEIuWFNg */ + FIL* fp /* [IN] ファイル オブジェクト */ );- +引数
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
-߂l
-݂̃[h/CgE|C^(t@C擪̃oCgPʂ̃ItZbg)Ԃ܂B
+戻り値
+現在のリード/ライト ポインタ(ファイル先頭からのバイト単位のオフセット)が返ります。
- -f_telĺArWł̓}NƂĎĂ܂B
+解説
+f_tell関数は、現リビジョンではマクロとして実装されています。
#define f_tell(fp) ((fp)->fptr)
@@ -47,16 +47,16 @@ DWORD f_tell (-- + diff --git a/fatfs/doc/ja/truncate.html b/fatfs/doc/ja/truncate.html index 29bf480..b33a757 100644 --- a/fatfs/doc/ja/truncate.html +++ b/fatfs/doc/ja/truncate.html @@ -1,7 +1,7 @@ - + @@ -13,25 +13,25 @@Ή
-Ɏgp\B
+対応情報
+常に使用可能。
f_truncate
-t@Cl߂܂B
+ファイル長を切り詰めます。
FRESULT f_truncate ( - FIL* fp /* [IN] t@CEIuWFNgւ̃|C^ */ + FIL* fp /* [IN] ファイル オブジェクトへのポインタ */ );- +引数
- fp
-- lߑΏۃt@C̃t@CEIuWFNgւ̃|C^
+- 切り詰め対象ファイルのファイル オブジェクトへのポインタ
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -45,19 +45,19 @@ FRESULT f_truncate (
- -t@C݂̒̃[h/CgE|C^ɐl߂܂B[h/CgE|C^Ƀt@C̏I[wĂƂ́Å͉̌ʂ܂B
+解説
+ファイルの長さが現在のリード/ライト ポインタに切り詰められます。リード/ライト ポインタが既にファイルの終端を指しているときは、この関数は何の効果も持ちません。
-diff --git a/fatfs/doc/ja/unlink.html b/fatfs/doc/ja/unlink.html index 7cfb703..3ae691a 100644 --- a/fatfs/doc/ja/unlink.html +++ b/fatfs/doc/ja/unlink.html @@ -1,7 +1,7 @@ - + @@ -13,25 +13,25 @@Ή
-_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のときに使用可能です。
f_unlink
-t@C܂̓TuEfBNg폜܂B
+ファイルまたはサブ ディレクトリを削除します。
FRESULT f_unlink ( - const TCHAR* path /* [IN] IuWFNgւ̃|C^ */ + const TCHAR* path /* [IN] オブジェクト名へのポインタ */ );-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -53,22 +53,22 @@ FRESULT f_unlink (
- -폜Ώۂ̃IuWFNg̏ɓĂ͂܂ꍇÃANZX͋ۂ͎s܂B +
解説
+削除対象のオブジェクトが次の条件に当てはまる場合、そのアクセスは拒否され関数は失敗します。
-
- [hEI[(AM_RDO)Ăꍇ́A(FR_DENIED)B
-- łȂTuEfBNg܂̓JgEfBNgłꍇ́A(FR_DENIED)B
-- JĂt@C܂̓TuEfBNgłꍇ́AdANZXLȂSɋ(FR_LOCKED)܂AłȂƂ͕sȑƂȂAFAT\j\܂B
+- リード オンリー属性(AM_RDO)を持っている場合は、拒否(FR_DENIED)される。
+- 空でないサブ ディレクトリまたはカレント ディレクトリである場合は、拒否(FR_DENIED)される。
+- 開かれているファイルまたはサブ ディレクトリである場合は、多重アクセス制御が有効なら安全に拒否(FR_LOCKED)されますが、そうでないときは不正な操作となり、FAT構造が破壊される可能性があります。
-- + diff --git a/fatfs/doc/ja/utime.html b/fatfs/doc/ja/utime.html index 382defb..087f57f 100644 --- a/fatfs/doc/ja/utime.html +++ b/fatfs/doc/ja/utime.html @@ -1,7 +1,7 @@ - + @@ -13,28 +13,28 @@Ή
-_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のときに使用可能です。
f_utime
-t@C܂̓TuEfBNg̃^CX^vύX܂B
+ファイルまたはサブ ディレクトリのタイムスタンプを変更します。
FRESULT f_utime ( - const TCHAR* path, /* [IN] IuWFNgւ̃|C^ */ - const FILINFO* fno /* [IN] ݒ肷t */ + const TCHAR* path, /* [IN] オブジェクト名へのポインタ */ + const FILINFO* fno /* [IN] 設定する日付 */ );- +引数
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -54,16 +54,16 @@ FRESULT f_utime (
- -IuWFNg̃^CX^vύX܂B
+解説
+オブジェクトのタイムスタンプを変更します。
-gp
+使用例
FRESULT set_timestamp ( - char *obj, /* t@Cւ̃|C^ */ + char *obj, /* ファイル名へのポインタ */ int year, int month, int mday, @@ -84,16 +84,16 @@ FRESULT set_timestamp (-- + diff --git a/fatfs/doc/ja/write.html b/fatfs/doc/ja/write.html index 35da3fa..c3de4a0 100644 --- a/fatfs/doc/ja/write.html +++ b/fatfs/doc/ja/write.html @@ -1,7 +1,7 @@ - + @@ -13,34 +13,34 @@Ή
-_FS_READONLY == 0ŁA_FS_MINIMIZE == 0̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0で、且つ_FS_MINIMIZE == 0のときに使用可能です。
f_write
-t@CɃf[^݂܂B
+ファイルにデータを書き込みます。
FRESULT f_write ( - FIL* fp, /* [IN] t@CEIuWFNg */ - const void* buff, /* [IN] ݃f[^ */ - UINT btw, /* [IN] ރoCg */ - UINT* bw /* [OUT] ܂ꂽoCg */ + FIL* fp, /* [IN] ファイル オブジェクト */ + const void* buff, /* [IN] 書き込みデータ */ + UINT btw, /* [IN] 書き込むバイト数 */ + UINT* bw /* [OUT] 書き込まれたバイト数 */ );- +引数
- fp
-- t@CEIuWFNg\̂ւ̃|C^w肵܂B
+- ファイル オブジェクト構造体へのポインタを指定します。
- buff
-- ރf[^i[obt@w|C^w肵܂B
+- 書き込むデータを格納したバッファを指すポインタを指定します。
- btw
-- ރoCg(0`UINT^̍ől)w肵܂B
+- 書き込むバイト数(0~UINT型の最大値)を指定します。
- bw
-- ܂ꂽoCgi[ϐw|C^w肵܂B߂l͊̐ۂɂ炸ɗLłB
+- 書き込まれたバイト数を格納する変数を指すポインタを指定します。戻り値は関数の成否にかかわらず常に有効です。
-߂l
+戻り値
FR_OK, FR_DISK_ERR, @@ -54,22 +54,22 @@ FRESULT f_write (
- -݊JnʒúA[h/CgE|C^̈ʒuɂȂ܂B[h/CgE|C^͎ۂɏ܂ꂽoCgi݂܂BIAvoCg܂ꂽǂ*bw`FbNׂłB*bwbtw菬Ƃ́AfBXNEtӖ܂BfBXNEtĂƂ܂͂ɋ߂Ƃ́A䂪A܂ŎԂꍇ܂B
+解説
+書き込み開始位置は、リード/ライト ポインタの位置からになります。リード/ライト ポインタは実際に書き込まれたバイト数だけ進みます。関数が正常終了した後、要求したバイト数が書き込まれたかどうか*bwをチェックすべきです。*bwがbtwより小さいときは、ディスク フルを意味します。ディスク フルが発生しているときまたはそれに近いときは、制御が帰るまで時間がかかる場合があります。
-- + -- cgit v1.2.3Ή
-_FS_READONLY == 0̂ƂɎgp\łB
+対応情報
+_FS_READONLY == 0のときに使用可能です。