ファイルシステム

SOLIDでのファイルへのアクセスは、SOLID_FS APIを介して行います。

SOLID_FS APIを使用するには、solid_fs.h をインクルードしてください。

#include "solid_fs.h"

SOLIDには、基本構成としてFATファイルシステム、簡易的なメモリファイルシステム、デバッガ接続時のみ 使用可能なVLINKファイルシステムが存在します。 どのファイルシステムへのアクセスかは、パス名の先頭にて区別されます。 例えば、VLINKファイルシステムへのアクセスは、\VLINK\ を先頭につけます。

int fd;
int result = SOLID_FS_Open(&fd, "\\VLINK\\textfile.txt", O_CREAT | O_RDWR | O_TRUNC);
if (result == SOLID_ERR_OK)
{
    size_t bytes_written;
    result = SOLID_FS_Write(fd, "hello", 5, &bytes_written);
    SOLID_FS_Close(fd);
}

本項

ドライバの登録

ドライバの登録について

FATファイルシステムドライバの登録

Fatファイルシステムのドライバの登録について

API

SOLID_FS_Open

int SOLID_FS_Open(int *fd, const char *path, int mode)

ファイルへのアクセスを開始します

成功した場合、fdに識別子が入ります

パラメータ:
  • fd -- オープンしたファイルの識別子

  • path -- ファイルパス(文字列, NULL終端)

  • mode -- O_XXX (fcntl.h を参照)

戻り値:

SOLID_FS_Close

int SOLID_FS_Close(int fd)

ファイルへのアクセスを終了します

パラメータ:
  • fd -- ファイルの識別子

戻り値:

SOLID_FS_Read

int SOLID_FS_Read(int fd, void *buf, size_t size, size_t *result)

ファイルからデータを読み込みます

パラメータ:
  • fd -- ファイルの識別子

  • buf -- 格納先

  • size -- 読み込むサイズ(byte)

  • result -- 実際に取得できたサイズ(byte)

戻り値:

SOLID_FS_Write

int SOLID_FS_Write(int fd, const void *buf, size_t size, size_t *result)

ファイルへデータを書き込みます

パラメータ:
  • fd -- ファイルの識別子

  • buf -- 書き込むデータ

  • size -- 書き込むサイズ(byte)

  • result -- 実際に書き込んだサイズ(byte)

戻り値:

SOLID_FS_Lseek

int SOLID_FS_Lseek(int fd, off_t offset, int whence)

ファイルのアクセス位置を移動します

パラメータ:
  • fd -- ファイルの識別子

  • offset -- オフセット(byte)

  • whence -- SEEK_XXX(fcntl.h を参照)

戻り値:

SOLID_FS_Sync

int SOLID_FS_Sync(int fd)

ファイルの書き込みをフラッシュします

パラメータ:
  • fd -- ファイルの識別子

戻り値:

SOLID_FS_Ftell

int SOLID_FS_Ftell(int fd, off_t *result)

ファイルのアクセス位置を取得します

パラメータ:
  • fd -- ファイルの識別子

  • result -- 現在のアクセス位置(先頭からのオフセット, byte)

戻り値:

SOLID_FS_Feof

int SOLID_FS_Feof(int fd, int *result)

ファイルのアクセス位置が終端に来ているかどうかを取得します

パラメータ:
  • fd -- ファイルの識別子

  • result -- 終端:1 それ以外:0

戻り値:

SOLID_FS_Fsize

int SOLID_FS_Fsize(int fd, size_t *result)

ファイルサイズを取得します

パラメータ:
  • fd -- ファイルの識別子

  • result -- ファイルサイズ(byte)

戻り値:

SOLID_FS_Truncate

int SOLID_FS_Truncate(const char *path, off_t size)

指定されたファイルのサイズを切り詰めます

パラメータ:
  • path -- ファイルパス(文字列, NULL終端)

  • size -- ファイルサイズ(byte)

戻り値:

SOLID_FS_OpenDir

int SOLID_FS_OpenDir(const char *path, S_DIR *pDir)

ディレクトリをオープンする

パラメータ:
  • path -- オープンするディレクトリへのパス(文字列, NULL終端)

  • pDir -- ディレクトリ識別子

戻り値:

SOLID_FS_CloseDir

int SOLID_FS_CloseDir(S_DIR dir)

ディレクトリをクローズする

パラメータ:
  • dir -- ディレクトリ識別子

戻り値:

SOLID_FS_ReadDir

int SOLID_FS_ReadDir(S_DIR dir, struct dirent *dirp)

オープンされたディレクトリの次のエントリを取得する

パラメータ:
  • dir -- ディレクトリ識別子

  • dirp -- エントリ情報の格納先

戻り値:

SOLID_FS_Stat

int SOLID_FS_Stat(const char *path, struct stat *buf)

ファイル/ディレクトリの情報を取得する

パラメータ:
  • path -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • buf -- 情報格納先(stat.h 参照)

戻り値:

SOLID_FS_Rename

int SOLID_FS_Rename(const char *oldpath, const char *newpath)

ファイル/ディレクトリの名前を変更する

パラメータ:
  • oldpath -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • newpath -- 変更後のパス(文字列, NULL終端)

戻り値:

SOLID_FS_Chmod

int SOLID_FS_Chmod(const char *path, int mode)

ファイル/ディレクトリの属性を変更する

パラメータ:
  • path -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • mode -- S_XXX (stat.h 参照)

戻り値:

SOLID_FS_Utime

int SOLID_FS_Utime(const char *path, time_t time)

ファイル/ディレクトリのタイムスタンプを変更する

パラメータ:
  • path -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • time -- 変更する時間

戻り値:

SOLID_FS_Mkdir

int SOLID_FS_Mkdir(const char *path)

ディレクトリを作成する

パラメータ:
  • path -- 生成するディレクトリパス(文字列, NULL終端)

戻り値:

メモリファイルシステム

SOLIDでのファイルシステムは、メモリの一部をファイルの内容としてアクセスする、 簡易的なファイルシステムが実装されています。

指定するファイルパスは、\ROM\<アドレス>,<サイズ> を指定します。 アドレスおよびサイズは16進数で指定してください。