软件学习——spiffs,vfs(4)

SPIFFS是一个针对SPINORflash的轻量级文件系统,支持磨损均衡,但不支持目录。VFS是虚拟文件系统,提供统一接口与不同文件系统交互,ESP32的VFS允许多层挂载点,路径匹配最长前缀。标准的ESP32VFS路径包括挂载点和路径,而stdin、stdout、stderr是标准IO流,通常与UART关联。
摘要由CSDN通过智能技术生成

spiffs、vfs是什么

SPIFFS 是一个用于 SPI NOR flash 设备的嵌入式文件系统,支持磨损均衡、文件系统一致性检查等功能。——简单文件系统

(目前,SPIFFS尚不支持目录,但可以生成扁平结构。如果SPIFFS 挂载在 /spiffs 下,在 /spiffs/tmp/myfile.txt 路径下创建一个文件则会在SPIFFS 中生成一个名为 /tmp/myfile.txt 的文件,而不是在 /spiffs/tmp 下生成名为 myfile.txt 的文件;)

虚拟文件系统(VFS)

如果你曾经了解过Linux,那么你大概率听说过“Linux下一切皆文件”。你插入的一个U盘,移动硬盘,乃至打印机,音响在Linux中都会被当作“文件”。

这可能不太好理解,为什么我的设备被系统当作文件了呢。实际上,这些文件不一定是真实的文件,而是虚拟的。这就是VFS中“虚拟”的含义。

从设备读取数据视为向“文件”读取数据,向设备发送数据视为写数据到“文件”。并且不同的“文件”之间读写方式相同

因此,虚拟文件系统的作用是:使得计算机上层的软件,能够用单一的方式,来跟底层不同的文件系统沟通(无论是真实的文件系统还是虚拟的文件系统)。在操作系统与之下的各种文件系统之间,虚拟文件系统提供了标准的操作接口,将所有不同种类的文件系统统一起来。

ESP32 吸收了Linux VFS的理念,被设计了VFS。为一些驱动提供了统一的接口。有了该接口,用户可像操作普通文件一样操作虚拟文件。这类驱动程序可以是 FAT、SPIFFS 等真实文件系统,也可以是有文件类接口的设备驱动程序。

1. 标准的VFS路径

一个标准ESP32 VFS路径如下所示

/挂载点/path/to/file.txt

其中包含了“挂载点”和“路径”

一个挂载点被认为成一个文件系统

(1)挂载点

① 挂载点必须为斜杠/开头,且/后至少有一个字符

当然也有特殊情况,例如当你需要一个默认文件系统,在未找到符合条件的文件系统时访问。或者应用程序要覆盖VFS某些功能。这时候允许无名的挂载点。

不要把 / 当作根文件系统!

② 允许多层挂载点

例如:可以将 /storage/sdcard作为挂载点

(2)路径

路径描述某个文件系统(挂载点)下某个文件所处的位置。

注意事项:

① 如果挂载点中嵌套了其他挂载点,则在打开文件时使用具有最长匹配路径前缀的挂载点。 例如:

 (i) /data挂载文件系统A

 (ii) /data/flash挂载文件系统B

则:

 打开/data/index.html时,VFS会去A文件系统寻找;

 打开/data/flash/main.cpp时,VFS会去B文件系统寻找;即使没有找到,VFS也不会去/data下寻找/flash/main.cpp

② 点 “ . ” 在VFS中不会被特殊处理

例如..不会被当作“上一级目录”,.也不会被当作“当前目录”

2 标准IO流: stdin、stdout、stderr

这三个流均属于文件描述符。默认情况下,对 stdout 或 stderr 执行写入操作将会通过 UART 发送字符,对 stdin 执行读取操作则会从UART 中取出字符。详见menuconfig配置

详解:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值