三分钟上马 ESP32 spiffs文件系统

啥是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;
    }

猜你喜欢

转载自blog.csdn.net/weixin_44821644/article/details/109480902