トップ 差分 一覧 ソース 検索 ヘルプ 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 を追加しています。既存の列挙子の値に変更はありません。

関数リファレンス

  第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引数以外の変更点はありません。