文章目录


一、spiffs简介

spiffs文件系统就是一个文件系统,它可以使用到嵌入式设备中。

关于esp32的spiffs文件系统的详细内容,请看esp32官网的介绍:espidf编程指南-spiffs

文档介绍了多种文件系统的烧录方法,本文就以使用​​spiffsgen.py​​来烧录为例子,以最简单快捷的方式马上使用spiffs文件系统。

二、生成二进制文件

首先下载​​spiffsgen.py​​,点我下载,在​​spiffsgen.py​​的同级目录下新建文件夹作为spiffs的根目录,如​​root​​,然后在root下可以放文件或者再新建文件夹。

如以下目录结构:


root


gree


ac_gree_1.bin




haier


ac_haier_1.bin



spiffsgen.py


以生成100k的文件系统为例,执行以下命令,生成spiffs.bin文件,这就是spiffs文件系统。其大小0x19000就是100k。

python spiffsgen.py 0x19000 root spiffs.bin

烧录spiffs

这里我使用的是esp32 烧录工具。

三分钟上马 ESP32 spiffs文件系统_文件系统

这个东西在官网应该能下载到,或者你可以按照文档用esp_tools.py烧录。这里我将文件烧录到flash中的0x330000三分钟上马 ESP32 spiffs文件系统_esp32文件系统_02

对应的,在项目下的partitions.csv文件下添加如下:

# Name,   Type, SubType, Offset,  Size
storage, data, spiffs, 0x330000, 0x19000,

烧录完成!

spiffs简单的使用

参考​​esp-idf/examples/storage/spiffs​​项目

esp_vfs_spiffs_conf_t conf = {
.base_path = "/spiffs", //根目录,对应root文件夹
.partition_label = NULL,
.max_files = 5,
.format_if_mount_failed = true
};

// Use settings defined above to initialize and mount SPIFFS filesystem.
// Note: esp_vfs_spiffs_register is an all-in-one convenience function.
esp_err_t ret = esp_vfs_spiffs_register(&conf);

if (ret != ESP_OK) {
if (ret == ESP_FAIL) {
ESP_LOGE(TAG, "Failed to mount or format filesystem");
} else if (ret == ESP_ERR_NOT_FOUND) {
ESP_LOGE(TAG, "Failed to find SPIFFS partition");
} else {
ESP_LOGE(TAG, "Failed to initialize SPIFFS (%s)", esp_err_to_name(ret));
}
return;
}