12. 文件系统SPIFFS
ESP32 文件系统SPIFFS配置指南
1. 为什么要使用文件系统
在BiBoard(ESP32)中,除了常规的程序区和引导区,我们在Flash分区中使用了文件系统。
独立分区的文件系统作用如下:
在指定的地址保存数据而不会因为重新更新而删除(如校准数据,步态数据)
不用外置的SD卡,节约了硬件资源
常见的文件系统有Windows的NTFS,exFAT,Linux的日志文件系统Ext和XFS。但是在嵌入式领域,这些大型的文件系统太过庞大。我们使用了轻量级的SPIFFS(SPI Flash File System SPI闪存文件系统),用于SPI NOR flash设备的嵌入式文件系统,支持磨损均衡、文件系统一致性检查等功能。
因为轻量,SPIFFS最大的特点在于不支持树形目录,即全部文件扁平存储于同一层。ESP32提供的SPIFFS有以下特点:
目前,SPIFFS 尚不支持目录,但可以生成扁平结构。如果 SPIFFS 挂载在 /spiffs 下,在 /spiffs/tmp/myfile.txt 路径下创建一个文件则会在 SPIFFS 中生成一个名为 /tmp/myfile.txt 的文件,而不是在 /spiffs/tmp 下生成名为 myfile.txt 的文件;
SPIFFS 并非实时栈,每次写操作耗时不等;
目前,SPIFFS 尚不支持检测或处理已损坏的块。
2. 安装Arduino ESP32文件系统上传器
您可以通过自己的Arduino代码创建/保存以及删除文件,但操作比较繁琐,您需要将数据甚至二进制文件放入Arduino的Sketch并通过运行程序创建文件。
然而有个很好用的工具,可以直接把文件从计算机上传至文件系统,虽然比起“可移动存储”的“拖-放”式拷贝略微麻烦一些,但是无论是MP3音频还是HTML网页文件,都可以很轻松的上传至Flash。下面我们来学习如何使用这个插件。
3. 安装ESP32 文件上传插件
3.1 环境准备
请安装Arduino IDE(版本号:1.8.*),并且具有Arduino IDE的ESP32支持包(参考BiBoard V0快速上手指南)。
3.2 下载ESP32FS插件
下载ESP32FS插件的压缩包,地址:
转到“Arduino”目录,然后打开“tools”文件夹
C:\Users\{YourUserName}\Documents\Arduino\tools
将下载的.zip文件夹解压缩到 “tools” 文件夹。您应该具有以下类似的文件目录结构:
C:\Users\{YourUserName}
\Documents\Arduino\tools\ESP32FS\tool\esp32fs.jar
最后,重新启动Arduino IDE。
要检查插件是否已成功安装,请打开Arduino IDE。选择开发板(ESP32 Dev Module),转到“工具”,然后检查是否具有“ ESP32 Sketch Data Upload ”选项。
![](https://docs.petoi.com/~gitbook/image?url=https%3A%2F%2F201656985-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MQ6a951Q6Jn1Zzt5Ajr-3369173170%252Fuploads%252FF6UhnxplrBPWiK76LSt0%252Fimage.png%3Falt%3Dmedia%26token%3Dd8aa64c9-2a85-4522-b78c-3a17b89a005f&width=768&dpr=4&quality=100&sign=7a01f670&sv=1)
4. 使用文件系统上传器上传文件
要将文件上传到ESP32文件系统,请按照以下步骤:
创建一个Arduino项目工程(比如:名称 Test.ino)并保存
打开该工程的目录,可以使用“项目-显示项目文件夹”选项
![](https://docs.petoi.com/~gitbook/image?url=https%3A%2F%2F201656985-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MQ6a951Q6Jn1Zzt5Ajr-3369173170%252Fuploads%252FlowK9ss1OlBuBjs6ZP4z%252Fimage.png%3Falt%3Dmedia%26token%3D9090ad89-b5f6-489f-87a3-9c3b507a6719&width=768&dpr=4&quality=100&sign=348f8da6&sv=1)
在该文件夹内,创建一个名为“data”的新文件夹。
在“data” 文件夹中,放入您要保存到SPIFFS文件系统中的文件。例如,创建一个test_example.txt文件,内容如下图所示:
在Arduino IDE中,点击 “工具” - “ESP32 Sketch Data Upload”
![](https://docs.petoi.com/~gitbook/image?url=https%3A%2F%2F201656985-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F-MQ6a951Q6Jn1Zzt5Ajr-3369173170%252Fuploads%252Fj0BSWlAP2PSBX7ADFHAV%252FSPIFFS%25E6%2596%2587%25E4%25BB%25B6%25E7%25B3%25BB%25E7%25BB%259F%25E4%25B8%258A%25E4%25BC%25A0%25E6%2596%2587%25E4%25BB%25B6%25E6%258C%2589%25E9%2592%25AE_cn.png%3Falt%3Dmedia%26token%3D781b4114-530c-4bdb-8e82-09b9377edf55&width=768&dpr=4&quality=100&sign=c423a74&sv=1)
当您看到“ SPIFFS Image Uploaded ”提示信息时,文件已成功上传到SPIFFS文件系统中。
5. 文件系统使用例程
文件系统的例程SPIFFS_Test.ino(C:\Users\{YourUserName}\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.*\libraries\SPIFFS\examples\SPIFFS_Test
)来源于ESP32官方未做修改,代码实现了“增删改查”的基本操作,并提供了一个SPI flash的IO测试程序。
如果有需要,建议直接使用例程的代码进行操作。
Last updated