ESP32S3学习——SPIFFS 文件系统

SPIFFS是一个适用于SPINORflash设备的嵌入式文件系统,支持磨损均衡和文件系统一致性检查。它不支持目录,写操作可能耗时且不实时。文件系统在空间不足时会进行垃圾收集,可能导致长时间写操作。ESP32-S3用户可以配置和注册SPIFFS,进行文件的创建、读取、删除和重命名等操作。当文件系统损坏时,可使用esp_spiffs_check恢复。
摘要由CSDN通过智能技术生成

芯片:esp32s3

开发环境:espidfv4.4

一、官网相关资料

1)简介

SPIFFS 是一个用于 SPI NOR flash 设备的嵌入式文件系统,支持磨损均衡、文件系统一致性检查等功能

2)说明
  • 目前,SPIFFS 尚不支持目录,但可以生成扁平结构。如果 SPIFFS 挂载在 /spiffs 下,在 /spiffs/tmp/myfile.txt 路径下创建一个文件则会在 SPIFFS 中生成一个名为 /tmp/myfile.txt 的文件,而不是在 /spiffs/tmp 下生成名为 myfile.txt 的文件;

  • SPIFFS 并非实时栈,每次写操作耗时不等;

  • 目前,SPIFFS 尚不支持检测或处理已损坏的块。

  • SPIFFS 只能稳定地使用约 75% 的指定分区容量。

  • 当文件系统空间不足时,垃圾收集器会尝试多次扫描文件系统来寻找可用空间。根据所需空间的不同,写操作会被调用多次,每次函数调用将花费几秒。同一操作可能会花费不同时长的问题缘于 SPIFFS 的设计,这个问题可以通过 SPIFFS 配置 部分缓解。

  • 被删除文件通常不会被完全清除,会在文件系统中遗留下无法使用的部分。

  • 如果 ESP32-S3 在文件系统操作期间断电,可能会导致 SPIFFS 损坏。但是仍可通过 esp_spiffs_check 函数恢复文件系统。详情请参阅官方 SPIFFS FAQ

二、简单上手

1、配置结构体

esp_vfs_spiffs_conf_t conf = {

.base_path = "/spiffs",

.partition_label = NULL,

.max_files = 5,

.format_if_mount_failed = true

};

2、注册 esp_err_t ret = esp_vfs_spiffs_register(&conf); 多合一函数

3、获取spiffs信心ret = esp_spiffs_info(conf.partition_label, &total, &used);总容量,已使用容量’

4.打开/创建文件FILE* f = fopen("/spiffs/hello.txt", "w");

5、写入关闭文件fprintf(f, "Hello World!\n");

fclose(f);

6、 删除文件:unlink("/spiffs/foo.txt");

7、重命名文件:rename("/spiffs/hello.txt", "/spiffs/foo.txt")

8、读取打印文件信息转为字符串

f = fopen("/spiffs/foo.txt", "r");

char line[64];

fgets(line, sizeof(line), f);

fclose(f);

// strip newline

char* pos = strchr(line, '\n');

if (pos) {

*pos = '\0';

}

9、卸载spiffs:esp_vfs_spiffs_unregister(conf.partition_label);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值