ファイルシステム
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
で確認できます。