X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/e1deb7c3bc0500aabf5d099adb231f6d1d27f01d..b30c4e8f1aef96f6fdc93da9f125545f5f74d06e:/fatfs/doc/ja/mkfs.html diff --git a/fatfs/doc/ja/mkfs.html b/fatfs/doc/ja/mkfs.html index 19b4341..b237e6b 100644 --- a/fatfs/doc/ja/mkfs.html +++ b/fatfs/doc/ja/mkfs.html @@ -13,12 +13,14 @@

f_mkfs

-

論理ドライブ上にFATボリュームを作成(フォーマット)します。

+

論理ドライブ上にFAT/exFATボリュームを作成(フォーマット)します。

 FRESULT f_mkfs (
-  const TCHAR* path, /* [IN] 論理ドライブ番号 */
-  BYTE  sfd,         /* [IN] 区画作成方法 */
-  UINT  au           /* [IN] クラス タサイズ */
+  const TCHAR* path,  /* [IN] 論理ドライブ番号 */
+  BYTE  opt,          /* [IN] フォーマット オプション */
+  DWORD au,           /* [IN] クラスタ サイズ */
+  void* work,         /* [-]  ワーク エリア */
+  UINT len            /* [IN] ワーク エリアのサイズ */
 );
 
@@ -27,11 +29,15 @@ FRESULT f_mkfs (

引数

path
-
フォーマット対象の論理ドライブを示すパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。ドライブ番号を含まない場合は、カレント ドライブを意味します。
-
sfd
-
パーテーション形式。(0(FDISK) または 1(SFD))
+
フォーマット対象の論理ドライブを示すパス名を示すヌル文字'\0'終端の文字列へのポインタを指定します。ドライブ番号を含まない場合は、デフォルト ドライブを意味します。論理ドライブにはf_mount関数でワークエリアが与えられている必要はありません。
+
opt
+
フォーマット オプション。FM_FAT, FM_FAT32, FM_EXFATの各フラグの組み合わせ(FM_ANYは、これらのOR値)で作成するFATボリュームのタイプを指定します。複数のタイプが指定された場合、その中のいずれかが自動選択されます。exFATが無効のときは、FM_EXFATは無視されます。FM_SFDフラグを指定すると、SFD形式(後述)でボリュームを配置します。
au
-
クラスタ サイズをバイト数またはセクタ数で指定します。値が1~128の範囲場合は、セクタ数を示します。値が_MIN_SS以上の場合は、バイト数を示します。無効値(0または2の累乗でない値など)を指定した場合、ボリュームのサイズに応じたデフォルトのクラスタ サイズが自動選択されます。
+
クラスタ サイズをバイト単位で指定します。有効値は、セクタ サイズのN倍となります。Nは2の累乗で、FAT/FAT32ボリュームでは1~128、exFATボリュームでは1~32768です。0を指定した場合は、ボリュームのサイズと選択されたFATタイプに応じたデフォルトのクラスタ サイズが選択されます。
+
work
+
ワークエリアへのポインタを指定します。
+
len
+
ワークエリアのサイズをバイト単位で指定します。ワークエリアのサイズは少なくとも関連するドライブのセクタサイズは必要です。また、十分に大きなサイズを与えることにより、書き込みトランザクションの回数が減ってフォーマット時間を短縮できます。
@@ -41,7 +47,6 @@ FRESULT f_mkfs ( FR_OK, FR_DISK_ERR, FR_NOT_READY, -FR_NOT_ENABLED, FR_MKFS_ABORTED, FR_INVALID_PARAMETER

@@ -49,14 +54,13 @@ FRESULT f_mkfs (

説明

-

物理ドライブ上に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で関数が失敗する可能性があります。

+

exFAT以外のボリュームのFATタイプ(FAT12/FAT16/FAT32)は、そのボリューム上のクラスタ数によってのみ決定される決まり[FAT仕様書より]になっていて、それ以外の要因はありません。したがって、どのFATタイプになるかはボリューム サイズとクラスタ サイズに依存します。そのボリュームのサイズにおいて、指定されたFATタイプとクラスタ サイズの組み合わせが成立し得ないときは、関数はFR_MKFS_ABORTEDで失敗します。

+

クラスタとは、データ格納領域の管理の単位のことで、これを単位にファイルにデータ領域が割り当てられます。たとえば、クラスタ サイズが32768のときは、100バイトのファイルも32768バイトのスペースを消費することになります。このように、クラスタ サイズを大きくするほどボリュームの利用効率が悪くなりますが、その一方で読み書きの性能は上がります。クラスタ サイズによる利用効率と性能はトレード オフの関係にあります。GBクラスのストレージでは、極端に多くのファイルを扱わない限り32768バイト以上に(デフォルト指定ではそのようになる)しておくとよいでしょう。

+

パーテーション形式には、FDISK形式とSFD形式の二通りあります。FDISK形式は、ハードディスク、マルチメディアカード、SDカード、CFカード、USBメモリなどで標準的に使用されます。FDISK形式では一台の物理ドライブ上に一つまたは複数の区画を作成することができ、区画管理情報はMBR(物理ドライブの先頭セクタ)に記録されます。SFD形式は単に何の分割も行わない形式で、ボリュームは物理ドライブの先頭セクタから開始します。SFD形式は、フロッピー ディスク、マイクロドライブ、光学ディスク、およびその他スーパー フロッピー メディアで標準的に使用されています。システムによっては、FDISK形式またはSFD形式のどちらか一方のみをサポートし他方をサポートしません。

+

FM_SFDが指定されないときはFDISK形式となり、その物理ドライブ全体を占める1個の基本区画(パーテーション)が作成され、その中にFATボリュームが作成されます。FM_SFDが指定されたときはSFD形式となり、FATボリュームがその物理ドライブの先頭セクタからベタで作成されます。

+

マルチ パーテーション機能(_MULTI_PARTITION)により、その論理ドライブが特定の区画(1~4)に結び付けられている場合は、その区画の中にFATボリュームが作成されます。FM_SFDの指定は無視され、その物理ドライブはこれに先立ち、f_fdisk関数または他のツールで適切に区画設定されている必要があります。

-

対応情報

_FS_READONLY == 0で、且つ_USE_MKFS == 1のとき使用可能です。

@@ -66,43 +70,42 @@ FRESULT f_mkfs (

使用例

-/* Format the default drive */
+/* Format default drive and create a file */
 int main (void)
 {
-    FATFS fs;      /* File system object (volume work area) */
-    FIL fil;       /* File object */
-    FRESULT res;   /* API result code */
-    UINT bw;       /* Bytes written */
+    FATFS fs;           /* File system object */
+    FIL fil;            /* File object */
+    FRESULT res;        /* API result code */
+    UINT bw;            /* Bytes written */
+    BYTE work[_MAX_SS]; /* Work area (larger is better for process time) */
+
 
+    /* Create FAT volume */
+    res = f_mkfs("", FM_ANY, 0, work, sizeof work);
+    if (res) ...
 
     /* 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);
+    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);
+    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_close(&fil);
 
+    ...
 

参照

-

ボリューム管理, f_fdisk

+

ボリューム サイズとフォーマット パラメータ, ボリューム管理, f_fdisk