Files
fastbee/sdk/合宙/air780e/csdk/luatos-soc-2022/project/example_filesystem
2023-03-04 03:44:56 +08:00
..
2023-03-04 03:44:56 +08:00
2023-03-04 03:44:56 +08:00
2023-03-04 03:44:56 +08:00
2023-03-04 03:44:56 +08:00

文件系统API说明

概述

  • 文件系统的主体是littlefs, 总空间288k, 可用100k左右.
  • 有多套API, 各有特色, 但不应该混用

Osa文件API

位于 osasys.h, 只有少量函数, 与posix API 类似. 不涉及目录操作

OSAFILE OsaFopen(const char *fileName, const char* mode);
INT32 OsaFtell(OSAFILE fp);
INT32 OsaFclose(OSAFILE fp);
UINT32 OsaFread(void *buf, UINT32 size, UINT32 count, OSAFILE fp);
UINT32 OsaFwrite(void *buf, UINT32 size, UINT32 count, OSAFILE fp);
INT32 OsaFseek(OSAFILE fp, INT32 offset, UINT8 seekType);
UINT32 OsaFremove(const char *fileName);

通用调用逻辑:

#define BUFF_SIZE (512)
char buff[BUFF_SIZE];
UINT32 rlen = 0;
OSAFILE fp = OsaFopen("fs_test", "r");
if (fp) { // 若成功, 必不为NULL
    // 读写数据
    while ((rlen = OsaFread(buff, BUFF_SIZE, 1, fp)) > 0) {
        // 处理读取到的数据
    }
    OsaFclose(fp);
}

LiffteFs 文件API

在原始的lifftefs上, 封装成 lfs_port.h

注意:

  • 不要调用 LFS_init LFS_deinit , 底层会自行处理
  • API 均以 LFS_ 开头, 为同步阻塞且线程安全的函数. 与原生lifftefs的API基本上一一对应

通用调用逻辑:

#define BUFF_SIZE (512)
char buff[BUFF_SIZE];
UINT32 rlen = 0;
int ret = 0;
lfs_file_t *file = malloc(sizeof(lfs_file_t));
if (file == NULL) {
    // 内存分配出错
    return -1;
}
ret = LFS_fileOpen(file, "fs_test", LFS_O_RDONLY);
if (ret == LFS_ERR_OK) { // 若成功, 必不为NULL
    // 读写数据
    while ((rlen = LFS_fileRead(file, buff, BUFF_SIZE)) > 0) {
        // 处理读取到的数据
    }
    LFS_fileClose(file);
}
free(file); // 注意释放内存