SPIFFS и LittleFS не показывают все мои файлы с readdir() и не могут открыть() их
Я создал простой скетч, который просто пытается перечислить файлы в SPIFFS. Файловая система SPIFFS была создана с помощью версии mkspiffs, входящей в состав пакета esp8266. Выгрузка все, кажется, работает, но он только перечисляет первый файл, а не остальные.
После запуска скетча я загрузил флэш-память, и он сравнил ОК, так что ничего не повреждается...
$ esptool.py --port=/dev/ttyUSB0 read_flash 0x200000 0x10000 foo
$ cmp html.img foo
$
Если я попробую то же самое с LittleFS, то я не получу никаких файлов!
Я также попытался обновить до библиотек 3.0.0 (и, таким образом, более позднюю версию mkspiffs, которая шла вместе с библиотекой)
Ясно, что я делаю что-то глупое и неправильное!
Надеюсь, следующее (показывающее, как я строю его, загружаю его) поможет указать на мою ошибку!
Спасибо за любую помощь...
================================================================
Создание файла изображения Это делается с помощью mkspiffs, который поставляется с пакетом, поэтому он должен(!) соответствовать библиотеке, используемой ESP8266
$ ~/.arduino15/packages/esp8266/tools/mkspiffs/2.5.0-4-b40a506/mkspiffs -c html html.img
/menu_frame.html
/change_ap.html
/top_frame.html
/index.html
/main_frame.html
Компиляция с макетом памяти 4M2M
$ arduino-cli compile --fqbn=esp8266:esp8266:nodemcuv2:eesz=4M2M
Executable segment sizes:
IROM : 265840 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 26888 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1248 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 800 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 25120 ) - zeroed variables (global, static) in RAM/HEAP
Sketch uses 294776 bytes (28%) of program storage space. Maximum is 1044464 bytes.
Global variables use 27168 bytes (33%) of dynamic memory, leaving 54752 bytes for local variables. Maximum is 81920 bytes.
Загрузка, запись корзины в 0x0 и файловой системы в 0x200000
$ python ~/.arduino15/packages/esp8266/hardware/esp8266/2.7.4/tools/esptool/esptool.py --port=/dev/ttyUSB0 write_flash 0x0 SPIFFS.esp8266.esp8266.nodemcuv2.bin 0x200000 html.img
esptool.py v2.8
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: b4:e6:2d:67:b1:45
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 298928 bytes to 219676...
Writing at 0x00034000... (100 %)
Wrote 298928 bytes (219676 compressed) at 0x00000000 in 19.5 seconds (effective 122.7 kbit/s)...
Hash of data verified.
Compressed 65536 bytes to 1353...
Writing at 0x00200000... (100 %)
Wrote 65536 bytes (1353 compressed) at 0x00200000 in 0.1 seconds (effective 4232.8 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Результаты:
... Он показывает 2 М для файловой системы.
... Но в списке значится только один файл?
... Если вместо этого я использую LittleFS, то никаких файлов в списке не будет!
Starting...
Total size of FS is: 1953282
Used size of FS is: 2259
File list:
/menu_frame.html
Finished
И, наконец, скетч
#include <FS.h>
void setup()
{
Serial.begin(115200);
delay(500);
Serial.println("Starting...");
SPIFFS.begin();
FSInfo fs_info;
SPIFFS.info(fs_info);
Serial.print("Total size of FS is: ");
Serial.println(fs_info.totalBytes);
Serial.print("Used size of FS is: ");
Serial.println(fs_info.usedBytes);
Serial.println("File list: ");
Dir dir = SPIFFS.openDir("/");
while (dir.next())
{
Serial.println(dir.fileName());
}
Serial.println("Finished");
}
void loop() { }
@Stephen Harris, 👍3
0
- ESP32 - ошибка при использовании LITTLEFS.h после обновления ядра до 2.0.4
- Как сохранить структуру в файле?
- Любой способ использовать DMA для передачи данных на SD - карту в ESP8266
- Где хранить критические данные в ситуации отключения электроэнергии на ESP8266
- Проблема с преобразованием скетча из SPIFFS в LittleFS – нет функции сопоставления для ошибки вызова
- Загрузка данных SPIFFS в Arduino IDE 2.0.0-rc3 (ESP32 & TTGO) - Ubuntu
- ОТА-программа SPIFFS на ESP8266
- Как записать и прочитать из файла SPIFFS как данные объекта на ESP8266