Skip to content

lorol/LITTLEFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LittleFS_esp32

Notice: The Library is been integrated to Arduino esp32 core esp32s2 branch for future major core release.

LittleFS library for arduino-esp32

Installation

  • Use Arduino Library Manager
  • Or download / use git to have latest repository of LITTLEFS added to Arduino IDE /libraries folder
    (File > Preferences > Sketchbook location).
  • See #define CONFIG_LITTLEFS_FOR_IDF_3_2 in esp_littlefs.c.
    When defined, code builds with any IDF 3.2 - 4.x.
    On IDF newer than 3.2, it can be commented to enable file timestamp feature. See LITTLEFS_time example.
  • The other #define CONFIG_LITTLEFS_xxxxx are set to optimal default values.
    Read here and here if you want to modify.

Usage

  • Use LITTLEFS same way as SPIFFS
  • A quick startup based on your existing code you can re-define SPIFFS
#define USE_LittleFS

#include <FS.h>
#ifdef USE_LittleFS
  #define SPIFFS LITTLEFS
  #include <LITTLEFS.h> 
#else
  #include <SPIFFS.h>
#endif 
  • Note, this may not work if your sketch uses other libraries that use SPIFFS themselves.

Differences with SPIFFS

  • LittleFS has folders, you need to iterate files in folders. See To Do below.
  • At root a "/folder" = "folder"
  • Requires a label for mount point, NULL will not work
  • maxOpenFiles parameter is unused, kept for compatibility
  • LITTLEFS.mkdir(path) and LITTLEFS.rmdir(path) work as expected for folders
  • Speed comparison based on LittleFS_test.ino sketch (for a file 1048576 bytes):
Filesystem Read time [ms] Write time [ms]
FAT 276 14493
LITTLEFS 446* 16387
SPIFFS 767 65622

*The read speed improved by changing #define CONFIG_LITTLEFS_CACHE_SIZE from 128 to 512

Arduino ESP32 LittleFS filesystem upload tool

PlatformIO

  • See LITTLEFS_PlatformIO example here
    ( based on notes below from BlueAndi )

  • Add to platformio.ini: extra_scripts = replace_fs.py

  • Add replace_fs.py to project root directory (where platformio.ini is located):

Import("env")
print("Replace MKSPIFFSTOOL with mklittlefs.exe")
env.Replace (MKSPIFFSTOOL = "mklittlefs.exe")
  • Add mklittlefs.exe to project root directory as well.

Credits and license

To Do

  • Submit to be added to Arduino Library Manager
  • Decide on more compatibility (or not) with SPIFFS' lack of folders, similar to esp8266' way:
  • Follow-up / eventually retire this library if LittleFS gets implemented through IDF / esp32 Arduino core.