文章目录
一、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 烧录工具。
这个东西在官网应该能下载到,或者你可以按照文档用esp_tools.py烧录。这里我将文件烧录到flash中的0x330000
对应的,在项目下的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;
}