SPIFFS 文件系统
SPIFFS 文件系统
概述
SPIFFS 是一个文件系统,用于嵌入式目标上的 SPI NOR 闪存设备。它支持磨损均衡,文件系统一致性检查等。
注意
- 目前,spiffs 不支持目录。它产生扁平结构。如果 SPIFFS 安装在 /spiffs 下创建一个带有路径 /spiffs/tmp/myfile.txt 的文件,则会在 SPIFFS 中创建一个名为 /tmp/myfile.txt 的文件,而不是在目录 /spiffs/tmp 下创建一个名为的 myfile.txt。
- 它不是实时堆栈。一次写入操作可能持续时间比另一次更长。
- 目前,它没法检测或处理块被损坏的情况。
工具
主机端工具用于创建 SPIFS 分区镜像文件(.bin),其中一个工具是 mkspiffs。您可以使用它从给定文件夹创建镜像文件,然后使用 esptool.py
下载该镜像文件到设备中
为此,您需要获取一些参数:
- 块大小:4096(SPI Flash的标准)
- 页面大小:256(SPI Flash标准)
- 图像大小:分区大小(以字节为单位)(可以从分区表中获取)
- 分区偏移:分区的起始地址(可以从分区表中获取)
例如:
将目标文件夹打包为 1 兆字节镜像文件:
mkspiffs -c [src_folder] -b 4096 -p 256 -s 0x100000 spiffs.bin
要在偏移量 0x110000 处将镜像文件烧录到 ESP32:
python esptool.py --chip esp32 --port [port] --baud [baud] write_flash -z 0x110000 spiffs.bin
解决问题
- 无法从 SPIFFS 中读取到文件内容
这种情况是由于通过工具制作的文件系统格式与程序中的文件系统格式不同导致,可通过运行 ./mkspiffs --version
在你的 mkspiffs 目录和 grep SPIFFS sdkconfig
在你的工程目录,之后对比两者配置的不同之处。
例如:
运行 ./mkspiffs --version
在 mkspiffs 目录中:
mkspiffs ver. 0.2.3-6-g983970e
Build configuration name: generic
SPIFFS ver. 0.3.7-5-gf5e26c4
Extra build flags: (none)
SPIFFS configuration