mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
4.6 KiB
4.6 KiB
LittleFS_esp32
LittleFS library for arduino-esp32
- A LittleFS wrapper for Arduino ESP32 of ARMmbed LittleFS
- Based on ESP-IDF port of joltwallet/esp_littlefs , thank you Brian!
- As a reference, see LillteFS library for ESP8266 core
- PR at esp32 core development
- PR at esp-idf development
- The functionality is similar to SPIFFS
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_2in 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_xxxxxare 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
- Use (replace if exists) arduino-esp32fs-plugin with this variant, which supports SPIFFS, LittleFS and FatFS
- Requires mklittlefs executable which is available in releases section here or download the zipped binary here or from esp-quick-toolchain releases here
- Copy it to /tools folder of esp32 platform where espota and esptool (.py or.exe) tools are located
- Restart Arduino IDE.
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
- This work is based on ARMmbed LittleFS , ESP-IDF port of joltwallet/esp_littlefs , Espressif Arduino core for the ESP32, the ESP-IDF - SPIFFS Library
- Licensed under GPL v2 (text)
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:
- recursive folders auto creation when a new file is created at non-existing path
- recursive folders auto deletion on "last file" deletion (SPIFFS cannot have "folder w/o file")
- review other differences: opendir(), rmdir(), unlink()
- Follow-up / eventually retire this library if LittleFS gets implemented through IDF / esp32 Arduino core.