SPIFFS access fa
Posted: Fri Aug 17, 2018 5:01 pm
Hi all I try to save some files for a web site (css, html,...) on SPIFFS but it' s a true fight for this target.
All my files are under '/web' directory (here I try with some examples files)
Context:
Eclipse oxygen / arduino-esp32 / compiler xtensa updated.
xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip
ESP32 Arducam
1° step , i do a mkspiffs (version 022 and not 023 dixit forum) (see below 1). An error appears 10025 for 022, but at least the options -l or -i runs fine.
2° stage, file ares strictly the same (a FC confirm this) .... despite error above.
Flash stage :
---------------
Leaving...
Hard resetting via RTS pin...
Make menuconfig :
----------------------
Flash_id:
-----------
Partition_tables:
--------------------
Any help would be very appreciated.
Thank's
Frederic
All my files are under '/web' directory (here I try with some examples files)
Context:
Eclipse oxygen / arduino-esp32 / compiler xtensa updated.
xtensa-esp32-elf-win32-1.22.0-80-g6c4433a-5.2.0.zip
ESP32 Arducam
1° step , i do a mkspiffs (version 022 and not 023 dixit forum) (see below 1). An error appears 10025 for 022, but at least the options -l or -i runs fine.
Code: Select all
MINGW32 /r/temp
$ ./mkspiffs022.exe -c ./web/ -b 4096 -p 256 -s 1048576 ./spiffs022.bin
[color=#FF0040]SPIFFS mount failed with error: -10025[/color]
/spiffs.info
/test1.jpg
/test2.jpg
/test4.jpg
MINGW32 /r/temp
$ ./mkspiffs023.exe -c ./web/ -b 4096 -p 256 -s 1048576 ./spiffs023.bin
/spiffs.info
/test1.jpg
/test2.jpg
/test4.jpg
MINGW32 /r/temp
$ ./mkspiffs022.exe -l ./spiffs022.bin
405 /spiffs.info
39310 /test1.jpg
50538 /test2.jpg
47438 /test4.jpg
MINGW32 /r/temp
$ ./mkspiffs023.exe -l ./spiffs023.bin
405 /spiffs.info
39310 /test1.jpg
50538 /test2.jpg
47438 /test4.jpg
2° stage, file ares strictly the same (a FC confirm this) .... despite error above.
Code: Select all
MINGW32 /r/temp
$ ./mkspiffs022.exe -i ./spiffs022.bin
0000 /ddi/ddd/d/d/d/ era_cnt: 0
0001 d/d/d/d/d/d/d/d era_cnt: 0
0002 /d/d/d/d/d/d/d/ era_cnt: 0
...
0047 d/d/d/d/d/d/d/d era_cnt: 0
0048 /d/d/d/d/d/d/d/ era_cnt: 0
0049 i______________ era_cnt: 0
004a _______________ era_cnt: 0
004b _______________ era_cnt: 0
...
00fd _______________ era_cnt: 0
00fe _______________ era_cnt: 0
00ff _______________ era_cnt: 0
era_cnt_max: 1
last_errno: 0
blocks: 256
free_blocks: 182
page_alloc: 557
page_delet: 539
used: 139807 of 956561
total: 956561
used: 139807
MINGW32 /r/temp
$ ./mkspiffs023.exe -i ./spiffs023.bin
0000 /ddi/ddd/d/d/d/ era_cnt: 0
0001 d/d/d/d/d/d/d/d era_cnt: 0
....
0047 d/d/d/d/d/d/d/d era_cnt: 0
0048 /d/d/d/d/d/d/d/ era_cnt: 0
0049 i______________ era_cnt: 0
004a _______________ era_cnt: 0
004b _______________ era_cnt: 0
....
00fc _______________ era_cnt: 0
00fe _______________ era_cnt: 0
00ff _______________ era_cnt: 0
era_cnt_max: 1
last_errno: 0
blocks: 256
free_blocks: 182
page_alloc: 557
page_delet: 539
used: 139807 of 956561
total: 956561
used: 139807
---------------
Code: Select all
MINGW32 /r/temp
$ python $IDF_PATH/components/esptool_py/esptool/esptool.py --chip esp32 --port COM6 --baud 921600 write_flash -z 0x291000 ./spiffs022.bin
esptool.py v2.3.1
Connecting......
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 1048576 bytes to 147831...
Wrote 1048576 bytes (147831 compressed) at 0x00291000 in 7.0 seconds (effective 1206.2 kbit/s)...
Hash of data verified.
Hard resetting via RTS pin...
Make menuconfig :
----------------------
Code: Select all
(3) Maximum Number of Partitions
SPIFFS Cache Configuration --->
[*] Enable SPIFFS Page Check
(10) Set Maximum GC Runs
[ ] Enable SPIFFS GC Statistics
(256) SPIFFS logical page size
(32) Set SPIFFS Maximum Name Length
[*] Enable SPIFFS Filesystem Magic
[*] Enable SPIFFS Filesystem Length Magic
(0) Size of per-file metadata field
Debug Configuration --->
-----------
Code: Select all
MINGW32 /r/ESP32Projects/workspace/03-EspIdfTemplate
esptool.py v2.3.1H/components/esptool_py/esptool/esptool.py --port COM6 flash_id
Connecting.....
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
--------------------
Code: Select all
MINGW32 /r/ESP32Projects/workspace/04-Sensor-A1
$ make partition_table
Partition table binary generated. Contents:
*******************************************************************************
# Espressif ESP32 Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000,20K,
otadata, data, ota, 0xe000,8K,
app0, app, ota_0, 0x10000,1280K,
app1, app, ota_1, 0x150000,1280K,
eeprom, data, 153, 0x290000,4K,
spiffs, data, spiffs, 0x291000,1468K,
*******************************************************************************
Code tried:
--------------
[code]
void listDir2(fs::FS &fs, const char * dirname, uint8_t levels)
{
printf("\nListing directory: %s\n", dirname);
File root = fs.open(dirname);
if (!root)
{
printf("\n\tFailed to open directory");
return;
}
if (!root.isDirectory())
{
printf("\n\tNot a directory");
return;
}
File file = root.openNextFile();
while (file)
{
if (file.isDirectory())
{
printf("\n\t DIR : ");
printf(file.name());
if (levels)
{
listDir(fs, file.name(), levels - 1);
}
} else
{
printf("\n\t FILE: ");
printf(file.name());
printf(" SIZE: ");
printf("%u",file.size());
}
file = root.openNextFile();
}
}
void handleFileList2 (char *spath)
{
printf ("\nSPIFFS/Listing [%s] :", spath);
String path=spath;
if(!SPIFFS.exists((char *)path.c_str()))
{
printf ("\n\tError: bad path [%s]", spath);
return;
}
File dir = SPIFFS.open((char *)path.c_str());
printf ("\n\tDir=%s]",dir.name());
dir.rewindDirectory();
String output = "[";
for (int cnt = 0; true; ++cnt)
{
File entry = dir.openNextFile();
if (!entry)
{
printf ("\n\tNo Entry");
break;
}
if (cnt > 0)
output += ',';
output += (entry.isDirectory()) ? "dir" : "file";
output += "\tname :";
output += entry.name()+1;
output += "\tsize "+entry.size();
entry.close();
printf ("\n\t%s",output.c_str());
}
dir.close();
}
void TestSpiffs()
{
printf("\n3.1: Init SPIFFS");
//if(!SPIFFS.begin(true))
if(!SPIFFS.begin()) //true))
{
printf ("\n\tSPIFFS: Mounted FAIL");
return;
}
printf ("\n\tSPIFFS: Mounted OK");
int res=mkdir ("/A",ACCESSPERMS);
printf("\n\tcreation dir [A] =%i ",res);
printf ("\n\tSPIFFS: Test write file /A/testA.txt");
File file= SPIFFS.open("/A/testA.txt", FILE_WRITE);
if (!file)
{
printf("\n\tThere was an error opening the file for writing");
return;
}
if (file.print("TEST-A"))
printf("\n\tFile was written");
else printf("\n\tFile write failed");
file.close();
// File creation
printf ("\n\tSPIFFS: Test write file /test.txt");
file= SPIFFS.open("/test.txt", FILE_WRITE);
if (!file)
{
printf("\n\tThere was an error opening the file for writing");
return;
}
if (file.print("TEST"))
printf("\n\tFile was written");
else printf("\n\tFile write failed");
file.close();
printf ("\n\tSPIFFS: Test read file");
File file2 = SPIFFS.open("/test.txt");
if(!file2)
{
printf("\n\tFailed to open file for reading");
}
else
{
printf ("\n\tFile Size : [%u] bytes",file2.size());
printf ("\n\tFile Dir : [%s] ",(file2.isDirectory()?"Y":"N"));
printf ("\n\tFile Content:");
while(file2.available()) printf (" [%c]",file2.read());
file2.close();
}
printf ("\n\tSPIFFS: Test dir check");
handleFileList2("/");
handleFileList2("/spiffs");
listDir2(SPIFFS,"/",3);
listDir2(SPIFFS,"/spiffs",3);
}
Any help would be very appreciated.
Thank's
Frederic