LuatOS-SoC的文件系统#

常见的文件系统布局#

/          # 片上可读(也许可写)的一段flash, 也可能是虚拟文件系统
  - luadb  # 通过luatools/luatide刷机时,所有文件都会放到这个目录下, 包括脚本和资源文件
  - sd     # 挂载sd卡后会出现的路径, 某些平台上有固定的sd卡/tf卡路径
  - lfs    # 通常是挂载spi flash的路径, 通常可以自定义
  - ram    # 内存文件系统,可读写. 2023-01-12之后的固件支持

在大部分平台上, 刷机进设备的脚本和资源文件, 都在 /luadb 目录下, 以单一文件夹存在

文件系统类型#

LuatOS-SoC本身并不依赖具体的rtos, 所以文件系统也有自己的一套API, 称为VFS

与市面上众多的虚拟文件系统API类似, VFS提供一套读写文件的抽象API, 隔离与实际硬件环境的差异.

LuatOS-SoC内置多种文件系统格式

  • luadb - 只读, 基于 TLD(Tag-Len-Data) 格式组织的文件系统,文件名最长21字节.

  • lfs - 可读写, 全称lifftefs, https://github.com/littlefs-project/littlefs

  • posix - 可读写, Linux的posix标准接口, LuatOS-SoC对其有封装

  • fatfs - 可读写, 读写SD卡/TF卡的开源Fat32文件系统

  • ram - 可读写, 存放于内存中

  • romfs - 只读, 标准romfs格式

LuatOS-SoC的VFS支持任何第三方文件系统, 无论是只读还是可读写, 实现相关操作函数即可对接.

可读写的简单描述#

/        可读写
/luadb/  只读
/ram/    部分模块支持, 可读写, 占用sys内存, 不消耗flash写入寿命, 但需要注意删除文件
-- 读取刷机时选择的资源文件
local f = io.open("/luadb/abc.txt", "r")

-- 打开并准备写入一个文件, 且截断为0字节
local f = io.open("/myfile.txt", "w+")

更多示例, 参考 https://gitee.com/openLuat/LuatOS/blob/master/demo/fs/main.lua