ファイルシステム¶
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_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Close¶
-
int SOLID_FS_Close(int fd)¶
ファイルへのアクセスを終了します
- パラメータ:
fd -- ファイルの識別子
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Read¶
-
int SOLID_FS_Read(int fd, void *buf, size_t size, size_t *result)¶
ファイルからデータを読み込みます
- パラメータ:
fd -- ファイルの識別子
buf -- 格納先
size -- 読み込むサイズ(byte)
result -- 実際に取得できたサイズ(byte)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
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_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Lseek¶
-
int SOLID_FS_Lseek(int fd, off_t offset, int whence)¶
ファイルのアクセス位置を移動します
- パラメータ:
fd -- ファイルの識別子
offset -- オフセット(byte)
whence -- SEEK_XXX(
fcntl.hを参照)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Sync¶
-
int SOLID_FS_Sync(int fd)¶
ファイルの書き込みをフラッシュします
- パラメータ:
fd -- ファイルの識別子
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Ftell¶
-
int SOLID_FS_Ftell(int fd, off_t *result)¶
ファイルのアクセス位置を取得します
- パラメータ:
fd -- ファイルの識別子
result -- 現在のアクセス位置(先頭からのオフセット, byte)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Feof¶
-
int SOLID_FS_Feof(int fd, int *result)¶
ファイルのアクセス位置が終端に来ているかどうかを取得します
- パラメータ:
fd -- ファイルの識別子
result -- 終端:1 それ以外:0
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Fsize¶
-
int SOLID_FS_Fsize(int fd, size_t *result)¶
ファイルサイズを取得します
- パラメータ:
fd -- ファイルの識別子
result -- ファイルサイズ(byte)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Truncate¶
-
int SOLID_FS_Truncate(const char *path, off_t size)¶
指定されたファイルのサイズを切り詰めます
- パラメータ:
path -- ファイルパス(文字列, NULL終端)
size -- ファイルサイズ(byte)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_OpenDir¶
-
int SOLID_FS_OpenDir(const char *path, S_DIR *pDir)¶
ディレクトリをオープンする
- パラメータ:
path -- オープンするディレクトリへのパス(文字列, NULL終端)
pDir -- ディレクトリ識別子
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_CloseDir¶
-
int SOLID_FS_CloseDir(S_DIR dir)¶
ディレクトリをクローズする
- パラメータ:
dir -- ディレクトリ識別子
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_ReadDir¶
-
int SOLID_FS_ReadDir(S_DIR dir, struct dirent *dirp)¶
オープンされたディレクトリの次のエントリを取得する
- パラメータ:
dir -- ディレクトリ識別子
dirp -- エントリ情報の格納先
- 戻り値:
SOLID_ERR_OK: 正常終了SOLID_ERR_NOTFOUND: ディレクトリの終端に達したそれ以外: エラー
SOLID_FS_Stat¶
-
int SOLID_FS_Stat(const char *path, struct stat *buf)¶
ファイル/ディレクトリの情報を取得する
- パラメータ:
path -- ファイル/ディレクトリのパス(文字列, NULL終端)
buf -- 情報格納先(
stat.h参照)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Unlink¶
-
int SOLID_FS_Unlink(const char *path)¶
ファイル/ディレクトリを削除する
- パラメータ:
path -- ファイル/ディレクトリのパス(文字列, NULL終端)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Rename¶
-
int SOLID_FS_Rename(const char *oldpath, const char *newpath)¶
ファイル/ディレクトリの名前を変更する
- パラメータ:
oldpath -- ファイル/ディレクトリのパス(文字列, NULL終端)
newpath -- 変更後のパス(文字列, NULL終端)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Chmod¶
-
int SOLID_FS_Chmod(const char *path, int mode)¶
ファイル/ディレクトリの属性を変更する
- パラメータ:
path -- ファイル/ディレクトリのパス(文字列, NULL終端)
mode -- S_XXX (
stat.h参照)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Utime¶
-
int SOLID_FS_Utime(const char *path, time_t time)¶
ファイル/ディレクトリのタイムスタンプを変更する
- パラメータ:
path -- ファイル/ディレクトリのパス(文字列, NULL終端)
time -- 変更する時間
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
SOLID_FS_Mkdir¶
-
int SOLID_FS_Mkdir(const char *path)¶
ディレクトリを作成する
- パラメータ:
path -- 生成するディレクトリパス(文字列, NULL終端)
- 戻り値:
SOLID_ERR_OK: 正常終了それ以外: エラー
メモリファイルシステム¶
SOLIDでのファイルシステムは、メモリの一部をファイルの内容としてアクセスする、 簡易的なファイルシステムが実装されています。
指定するファイルパスは、\ROM\<アドレス>,<サイズ> を指定します。
アドレスおよびサイズは16進数で指定してください。
VLINKファイルシステム¶
デバッグ時に、デバッガの接続されているPCのファイルシステムをVLINKを経由して ターゲットからアクセスすることが可能です。
指定するファイルパスは、\VLINK\<ファイルパス> を指定します。
ファイルパスは C:\... のような絶対パス、またはデバッガのプロジェクトディレクトリからの相対
パスが指定できます。
現在のVLINKの相対パスの位置がどこにあるかは、 SOLID_VLINK_GetCwd で確認できます。