X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/3531528ecedde37d5ebc67a330d192565290175a..05437fb4cdb907816a4fc3ffafa2617fcf33266a:/fatfs/doc/ja/dioctl.html diff --git a/fatfs/doc/ja/dioctl.html b/fatfs/doc/ja/dioctl.html index 30e49e3..120d798 100644 --- a/fatfs/doc/ja/dioctl.html +++ b/fatfs/doc/ja/dioctl.html @@ -1,7 +1,7 @@ - + @@ -13,83 +13,83 @@

disk_ioctl

-

ˆê”Ê“I‚ȃf[ƒ^“ǂݏ‘‚«ˆÈŠO‚̃XƒgƒŒ[ƒWEƒfƒoƒCƒXŽ©‘̂ɑ΂·‚é—lX‚Ȑ§Œä‚ðs‚¢‚Ü‚·B

+

一般的なデータ読み書き以外のストレージ デバイス自体に対する様々な制御を行います。

 DRESULT disk_ioctl (
-  BYTE pdrv,    /* [IN] •¨—ƒhƒ‰ƒCƒu”ԍ† */
-  BYTE cmd,     /* [IN] §ŒäƒRƒ}ƒ“ƒh */
-  void* buff    /* [I/O] ƒf[ƒ^Žó‚¯“n‚µƒoƒbƒtƒ@ */
+  BYTE pdrv,    /* [IN] 物理ドライブ番号 */
+  BYTE cmd,     /* [IN] 制御コマンド */
+  void* buff    /* [I/O] データ受け渡しバッファ */
 );
 
-

ˆø”

+

引数

pdrv
-
‘Ώۂ̃fƒoƒCƒX‚ðŽ¦‚·•¨—ƒhƒ‰ƒCƒu”ԍ†(0-9)‚ªŽw’肳‚ê‚Ü‚·B
+
対象のデバイスを示す物理ドライブ番号(0-9)が指定されます。
cmd
-
§ŒäƒRƒ}ƒ“ƒhEƒR[ƒh‚ªŽw’肳‚ê‚Ü‚·B
+
制御コマンド コードが指定されます。
buff
-
§ŒäƒRƒ}ƒ“ƒh‚Ɉˑ¶‚µ‚½ƒpƒ‰ƒ[ƒ^‚ðŽöŽó‚·‚éƒoƒbƒtƒ@‚ðŽw‚·ƒ|ƒCƒ“ƒ^‚ªŽw’肳‚ê‚Ü‚·Bƒpƒ‰ƒ[ƒ^‚ÌŽöŽó‚Ì‚È‚¢ƒRƒ}ƒ“ƒh‚̏ꍇ‚́A’l‚ɈӖ¡‚Í‚ ‚è‚Ü‚¹‚ñB
+
制御コマンドに依存したパラメータを授受するバッファを指すポインタが指定されます。パラメータの授受のないコマンドの場合は、値に意味はありません。
-

–ß‚è’l

+

戻り値

RES_OK (0)
-
³íI—¹B
+
正常終了。
RES_ERROR
-
‰½‚ç‚©‚̃Gƒ‰[‚ª”­¶‚µ‚½B
+
何らかのエラーが発生した。
RES_PARERR
-
ƒRƒ}ƒ“ƒh‚ª•s³B
+
コマンドが不正。
RES_NOTRDY
-
ƒhƒ‰ƒCƒu‚ª“®ì‰Â”\ó‘Ô‚Å‚Í‚È‚¢A‚Ü‚½‚͏‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢B
+
ドライブが動作可能状態ではない、または初期化されていない。
-

‰ðà

-

ƒXƒgƒŒ[ƒWEƒfƒoƒCƒX‚ÌŽí—Þ‚É‚æ‚èƒTƒ|[ƒg‚³‚ê‚éƒRƒ}ƒ“ƒh‚͈قȂè‚Ü‚·‚ªAFatFsƒ‚ƒWƒ…[ƒ‹Ž©‘̂́AŽŸ‚̔ėpƒRƒ}ƒ“ƒh‚Ì‚ÝŽg—p‚µA“Á’è‚̃fƒoƒCƒX‚Ɉˑ¶‚µ‚½§Œä‚͍s‚¢‚Ü‚¹‚ñB

+

解説

+

ストレージ デバイスの種類によりサポートされるコマンドは異なりますが、FatFsモジュール自体は、次の汎用コマンドのみ使用し、特定のデバイスに依存した制御は行いません。

- - - - - - - + + + + + + +
•W€ioctlƒRƒ}ƒ“ƒh
ƒRƒ}ƒ“ƒh‰ðà
CTRL_SYNCƒXƒgƒŒ[ƒWEƒfƒoƒCƒX‚̃f[ƒ^‘‚«ž‚ݏˆ—‚ðŠ®—¹‚³‚¹‚Ü‚·Bƒ‰ƒCƒgEƒoƒbƒNEƒLƒƒƒbƒVƒ…‚È‚Ç‚ª‘¶Ý‚·‚éê‡‚́A‘‚«ž‚Ü‚ê‚Ä‚¢‚È‚¢ƒf[ƒ^‚𑦎ž‘‚«ž‚Ý‚Ü‚·BƒƒfƒBƒAã‚ւ̏‘‚«ž‚Ý‚ª‚»‚ꂼ‚êdisk_write()‚Ì“à‚ÅŠ®—¹‚·‚éê‡‚́A‚±‚̃Rƒ}ƒ“ƒh‚ɑ΂µ‚Ä‚·‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB
GET_SECTOR_COUNTbuff‚ÌŽw‚·DWORDŒ^•Ï”‚Ƀhƒ‰ƒCƒuã‚Ì‘ƒZƒNƒ^”‚ð•Ô‚µ‚Ü‚·Bf_mkfs()‚¨‚æ‚Ñf_fdisk()“à‚©‚çŒÄ‚яo‚³‚êAì¬‚·‚éƒ{ƒŠƒ…[ƒ€‚̃TƒCƒY‚ðŒˆ’è‚·‚邽‚ß‚ÉŽg—p‚³‚ê‚Ü‚·B
GET_SECTOR_SIZEbuff‚ÌŽw‚·WORDŒ^•Ï”‚Ƀhƒ‰ƒCƒu‚̃ZƒNƒ^EƒTƒCƒY‚ð•Ô‚µ‚Ü‚·B—LŒø’l‚Í512A1024A2048‚Ü‚½‚Í4096‚Å‚·BƒZƒNƒ^EƒTƒCƒYŒÅ’è\¬(_MAX_SS ==_MIN_SS)‚Ì‚Æ‚«‚Í‚±‚̃Rƒ}ƒ“ƒh‚ÍŽg‚í‚ê‚邱‚Æ‚Í‚È‚­Aí‚É‚»‚̃ZƒNƒ^EƒTƒCƒY‚Å“®ì‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
GET_BLOCK_SIZEbuff‚ÌŽw‚·DWORDŒ^•Ï”‚Ƀtƒ‰ƒbƒVƒ…Eƒƒ‚ƒŠ‚̏Á‹ŽƒuƒƒbƒNEƒTƒCƒY(ƒZƒNƒ^’PˆÊ)‚ð•Ô‚µ‚Ü‚·B1‚©‚ç32768‚͈̔͂Å2‚̗ݏæ‚Ì’l‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB•s–¾‚ȏꍇ‚Ü‚½‚̓tƒ‰ƒbƒVƒ…Eƒƒ‚ƒŠˆÈŠO‚̃ƒfƒBƒA‚Å‚Í1‚ð•Ô‚µ‚Ü‚·Bf_mkfs()“à‚Å‚Ì‚ÝŽg—p‚³‚êAƒ{ƒŠƒ…[ƒ€‚̃f[ƒ^—̈æ‚Í‚±‚Ì‹«ŠE‚ɃAƒ‰ƒCƒƒ“ƒg‚³‚ê‚Ü‚·B
CTRL_ERASE_SECTORƒtƒ‰ƒbƒVƒ…Eƒƒ‚ƒŠã‚̗̈æ‚Ì–¾Ž¦“IÁ‹ŽBbuff‚ÌŽw‚·DWORDŒ^”z—ñ‚ɂ͏Á‹Ž‚·‚é—̈æ {ŠJŽnƒZƒNƒ^,I—¹ƒZƒNƒ^} ‚ðŽw’肵‚ČĂяo‚³‚ê‚Ü‚·B_USE_ERASE‚ª1‚Ì‚Æ‚«AƒNƒ‰ƒXƒ^‚ª‰ð•ú‚³‚ê‚é‚Æ‚«‚ɌĂяo‚³‚ê‚Ü‚·B‚±‚ê‚́AATAƒRƒ}ƒ“ƒhEƒZƒbƒg‚ÌTrimƒRƒ}ƒ“ƒh‚Æ“™‰¿‚ŁA‚±‚Ì‹@”\‚ðƒTƒ|[ƒg‚µ‚È‚¢ê‡‚͉½‚à‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB‚Ü‚½A–ß‚è’l‚̓`ƒFƒbƒN‚³‚ꂸAÁ‹Ž‚ªŠ®‘S‚ɍs‚í‚ê‚È‚©‚Á‚½‚Æ‚µ‚Ä‚àFatFs‚Ì“®ì‚ɂ͉e‹¿‚ ‚è‚Ü‚¹‚ñB
標準ioctlコマンド
コマンド解説
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の動作が影響を受けることはありません。
-

FatFsŽ©‘̂̓fƒoƒCƒXˆË‘¶ƒRƒ}ƒ“ƒh‚⃆[ƒU’è‹`ƒRƒ}ƒ“ƒh‚͈êØŽg—p‚µ‚Ü‚¹‚ñ‚ªAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚牽‚ç‚©‚̃fƒoƒCƒX§Œä‚ªs‚¦‚é‚Æ•Ö—˜‚È‚±‚Æ‚ª‚ ‚è‚Ü‚·BƒAƒvƒŠƒP[ƒVƒ‡ƒ“ã‚Å•W€ˆÈŠO‚̐§Œä‚ª•K—v‚È‚Æ‚«‚́A•K—v‚ɉž‚¶‚ㆁ[ƒU’è‹`ƒRƒ}ƒ“ƒh‚ð’ljÁ‚µ‚Ä—˜—p‚·‚é‚Æ‚æ‚¢‚Å‚µ‚傤BŽŸ‚ɃRƒ}ƒ“ƒh‚Ì—á‚ðŽ¦‚µ‚Ü‚·B

+

FatFs自体はデバイス依存コマンドやユーザ定義コマンドは一切使用しませんが、アプリケーションから何らかのデバイス制御が行えると便利なことがあります。アプリケーション上で標準以外の制御が必要なときは、必要に応じてユーザ定義コマンドを追加して利用するとよいでしょう。次にコマンドの例を示します。

- - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +
ƒ†[ƒU’è‹`ioctlƒRƒ}ƒ“ƒh‚Ì—á
ƒRƒ}ƒ“ƒh‰ðà
CTRL_FORMATƒƒfƒBƒA‚Ì•¨—ƒtƒH[ƒ}ƒbƒg‚ðs‚¢‚Ü‚·Bbuff‚ÍNULL‚Å‚È‚¢‚Æ‚«Ais•\Ž¦‚Ì‚½‚߂̃R[ƒ‹ƒoƒbƒNŠÖ”‚̃AƒhƒŒƒX‚ðŽ¦‚µ‚Ü‚·B
CTRL_POWER_IDLEƒfƒoƒCƒX‚ðƒAƒCƒhƒ‹ó‘Ô‚É‚µ‚Ü‚·B’ʏí‚̓ǂݏ‘‚«—v‹‚ŃAƒNƒeƒBƒuó‘Ô‚É–ß‚é‚È‚çASTA_NOINITƒtƒ‰ƒO‚ðƒZƒbƒg‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
CTRL_POWER_OFFƒfƒoƒCƒX‚ðƒVƒƒƒbƒgƒ_ƒEƒ“ó‘Ô‚É‚µ‚Ü‚·BSTA_NOINIT‚̓Zƒbƒg‚³‚ê‚Ü‚·BƒfƒoƒCƒX‚Ídisk_initialize()‚ŃAƒNƒeƒBƒuó‘Ô‚É–ß‚è‚Ü‚·B
CTRL_LOCKƒ†[ƒU‚É‚æ‚郁ƒfƒBƒA‚ÌŽæ‚èo‚µ‚ð‹ÖŽ~‚µ‚Ü‚·B
CTRL_UNLOCKƒ†[ƒU‚É‚æ‚郁ƒfƒBƒA‚ÌŽæ‚èo‚µ‚ð‹–‰Â‚µ‚Ü‚·B
CTRL_EJECTƒƒfƒBƒA‚ð”ro‚µ‚Ü‚·BŠ®—¹ŒãASTA_NOINIT‚ÆSTA_NODISKƒtƒ‰ƒO‚̓Zƒbƒg‚³‚ê‚Ü‚·B
MMC_GET_TYPEƒJ[ƒhEƒ^ƒCƒv‚ðŽ¦‚·ƒtƒ‰ƒO(b0:MMCv3, b1:SDv1, b2:SDv2+, b3:LBA)‚ðbuff‚ÌŽ¦‚·BYTE•Ï”‚ɓǂݏo‚µ‚Ü‚·B(MMC/SDƒJ[ƒhê—p)
MMC_GET_CSDCSDƒŒƒWƒXƒ^‚Ì“à—e‚ðbuff‚ÌŽ¦‚·16ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(MMC/SDƒJ[ƒhê—p)
MMC_GET_CIDCIDƒŒƒWƒXƒ^‚Ì“à—e‚ðbuff‚ÌŽ¦‚·16ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(MMC/SDƒJ[ƒhê—p)
MMC_GET_OCROCRƒŒƒWƒXƒ^‚Ì“à—e‚ðbuff‚ÌŽ¦‚·4ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(MMC/SDƒJ[ƒhê—p)
MMC_GET_SDSTATSD STATUSƒŒƒWƒXƒ^‚Ì“à—e‚ðbuff‚ÌŽ¦‚·64ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(SDƒJ[ƒhê—p)
ATA_GET_REVƒŠƒrƒWƒ‡ƒ“EƒR[ƒh‚ðbuff‚ÌŽ¦‚·16ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(ATA/CFƒJ[ƒhê—p)
ATA_GET_MODELƒ‚ƒfƒ‹EƒR[ƒh‚ðbuff‚ÌŽ¦‚·40ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(ATA/CFƒJ[ƒhê—p)
ATA_GET_SNƒVƒŠƒAƒ‹”ԍ†‚ðbuff‚ÌŽ¦‚·20ƒoƒCƒg‚̃oƒbƒtƒ@‚ɓǂݏo‚µ‚Ü‚·B(ATA/CFƒJ[ƒhê—p)
ユーザ定義ioctlコマンドの例
コマンド解説
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_CSDCSDレジスタの内容をbuffの示す16バイトのバッファに読み出します。(MMC/SDカード専用)
MMC_GET_CIDCIDレジスタの内容をbuffの示す16バイトのバッファに読み出します。(MMC/SDカード専用)
MMC_GET_OCROCRレジスタの内容をbuffの示す4バイトのバッファに読み出します。(MMC/SDカード専用)
MMC_GET_SDSTATSD 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カード専用)
-

‘Ήžî•ñ

-

ƒŠ[ƒhEƒIƒ“ƒŠ[\¬‚ŁA‚©‚ƒZƒNƒ^EƒTƒCƒYŒÅ’è\¬‚Ì‚Æ‚«‚́A‚±‚̊֐”‚Í•K—v‚Æ‚³‚ê‚Ü‚¹‚ñB

+

対応情報

+

リード オンリー構成で、かつセクタ サイズ固定構成のときは、この関数は必要とされません。

-

–ß‚é

+

戻る