トップ 一覧 検索 ヘルプ RSS ログイン

h2e 仕様 - APIの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!! about
H24 system software では実行ファイル(h2e)向けにメモリーカードアクセス用の関数を用意しています。ファイルシステムミドルウェアとして Petit FAT File System Module に手を加えたものを利用しております。変更点とともに本家のリファレンスも確認をしてください。

Petit FAT File System Module: http://elm-chan.org/fsw/ff/00index_p.html

!!!呼び出し規約
!! 内部割り込み
各関数は内部割り込みの TRAP 命令を経由します。 h2e ロード時に TRAP 用のベクタアドレスには jump 命令が書き込まれています。このため h2e のプログラム側で該当部分を書き換えると、正常動作しなくなりますので注意してください。

TRAP の呼び出しは h2e_api.h, h2e_api.s を利用してください。

!!TRAP 番号一覧
 # name
 -----------
 1 pf_mount
 2 pf_open
 3 pf_lseek
 4 pf_read
 5 pf_write
 6 pf_opendir
 7 pf_readdir

!!! 変数名、列挙子名
!! 整数名
stdint.h に応じた名称に変更してあります。
 変更前|変更後
 ------+------
 BYTE  |uint8_t
 WORD  |uint16_t
 DWORD |uint32_t

!! FRESULT 型
FR_WRITEPROTECTED を追加しています。既存の列挙子の値は変更はありません。
FR_WRITEPROTECTED を追加しています。既存の列挙子の値に変更はありません。

!!! 関数リファレンス
!! 第1引数
全ての関数の第1引数に、 struct _FATFS_ のポインタを渡す様に変更しました。 struct _FATFS_ の構造定義は意図的に参照できないようにしてあります。


!! pf_mount
 FRESULT pf_mount(struct _FATFS_ *fs);
* 第1引数以外の変更点はありません。

!! pf_open
 FRESULT pf_open(struct _FATFS_ *fs, const char *file);
* 第1引数以外の変更点はありません。

!! pf_lseek
 FRESULT pf_lseek(struct _FATFS_ *fs, uint32_t offset);
* 第1引数以外の変更点はありません。

!! pf_read
 FRESULT pf_read(struct _FATFS_ *fs, void *buf, uint32_t length, uint32_t *read_byte);
* 第1引数に fs を追加しました。
* length, read_byte の型をそれぞれ下記に変更しました。
 名称     |変更前|変更後
 ---------+------+------
 length   |WORD  |uint32_t
 read_byte|WORD* |uint32_t *

* 一度に読み込める最大長を 0xffff から 0xffffffff に変更しました。

!! pf_write
 FRESULT pf_write(struct _FATFS_ *fs, const void *buff, uint32_t length, uint32_t *written_byte);

pf_write は変更点が多いので注意してください。pf_write ではファイルの上書きのみを行いますので、元のファイルサイズを超える書き込みはできません。また、タイムスタンプの変更はありません。

! length の変更
* 第1引数に fs を追加しました。
* length, written_byte の型をそれぞれ下記に変更しました。
 名称        |変更前|変更後
 ------------+------+------
 length      |WORD  |uint32_t
 written_byte|WORD* |uint32_t *

* 一度に書き込める最大長を 0xffff から 0xffffffff に変更しました。

! 戻り値の変更
メモリーカードのライトプロテクトを参照し書き込み禁止の状態であれば、 FR_WRITEPROCTED を返し、書き込み処理を行いません。

! 書き込み時の制限
書き込みの処理速度をあげるために、下記の制限を設けました。
* pf_write を一度呼び出すと、他のAPI関数を呼び出しても正常に動作しない。
* 他のAPI関数を使用する場合は buff = NULL, length = 0 とし、書き込み終了指示を出す。
* 書き込み終了指示が呼び出されたときに、書き込み長が 0x200 の倍数ではない場合は規定位置に達するまで 0 でデータが埋められる。

!! pf_opendir
 FRESULT pf_opendir(struct _FATFS_ *fs, DIR*, const char*);
* 第1引数以外の変更点はありません。

!! pf_readdir
 FRESULT pf_readdir(struct _FATFS_ *fs, DIR*, FILINFO*);
* 第1引数以外の変更点はありません。