403 字
2 分钟
ESP32 SPIFFS和LittleFS

前言#

  • 硬件:ESP32-S2-WROOM-1
  • FS库:esp32/LittleFS@^3.3.2
  • 平台:arduino/PlatformIO

在兼容 ESP32 的wakenet和中文TTS的情况下,使用文件系统

虽然不知道具体原理,但根据网络上相关反馈,LittleFS是全面优于SPIFFS,并且LittleFS和SPIFFS是相互兼容的,只需要修改前缀即可。


准备#

修改分区 partitions.csv#

测试中使用的分区:

# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x300000,
app1, app, ota_1, 0x310000, 0x300000,
model, data, spiffs, 0x610000, 0x300000,
voice_data,data,fat, 0x910000, 0x400000,
storage, data, spiffs, 0xD10000, 0x100000,
coredump, data, coredump,0xFF0000, 0x10000,
IMPORTANT

如果分区中存在多个 spiffs 或 fat 类型的分区,并且使用的是 platformio,请将文件系统分区的位置移动到最后一个分区

修改项目配置#

platformio.ini 中增加如下内容:

; upload_protocol = esptool
board_build.filesystem = littlefs

准备需要烧录的文件#

参考 How-to: Upload files to SPIFFS with platformio (windows)

在项目目录中创建 data 文件夹,项目结构如下:

Terminal window
PS D:\workspace\...\firmware> tree
├─.pio
├─.vscode
├─data
├─include
├─lib
├─src
└─test

在希望烧录的文件放入 data 文件夹中。

测试代码#

#include <Arduino.h>
#include <LittleFS.h>
void listDir(fs::FS &fs, const char *dirname, uint8_t levels)
{
Serial.printf("Listing directory: %s\r\n", dirname);
File root = fs.open(dirname);
if (!root)
{
Serial.println("- failed to open directory");
return;
}
if (!root.isDirectory())
{
Serial.println(" - not a directory");
return;
}
File file = root.openNextFile();
while (file)
{
if (file.isDirectory())
{
Serial.print(" DIR : ");
Serial.println(file.name());
if (levels)
{
listDir(fs, file.path(), levels - 1);
}
}
else
{
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print("\tSIZE: ");
Serial.println(file.size());
}
file = root.openNextFile();
}
}
void setup()
{
Serial.begin(115200);
if (!LittleFS.begin(true, "/littlefs", 10, "storage"))
{
ESP_LOGE("setup", "LittleFS 挂载失败");
}
listDir(LittleFS, "/", 0);
}
void loop()
{
}

烧录代码和文件系统#

烧录代码:

  1. General >> Build
  2. General >> Upload

烧录文件系统:

  1. Platform >> Build Filesystem Image
  2. Platform >> Upload Filesystem Image
ESP32 SPIFFS和LittleFS
https://fuwari.vercel.app/posts/嵌入式/esp/esp32-spiffs和littlefs/
作者
Asuwee
发布于
2025-11-24
许可协议
CC BY-NC-SA 4.0