Danke erstmal für Eure Beiträge.
Ich hab mal ein wenig im Arduino-Core gestöbert.
Meinem Verständnis nach gibt es wirklich keine Partitionstabelle, sondern der HAL definiert in https://github.com/esp8266/Arduino/blob/master/cores/esp8266/FlashMap.h 3 Varianten von Flash-Aufteilungen die beim kompilieren mit Hilfe der boards.txt entweder mit "FLASH_MAP_SUPPORT=1" selektierbar gemacht werden oder die Aufteilung erfolgt durch #define der Konstanten mit Hilfe der eagle.flash.*.ld-Dateien.
Folgende Konstanten werden dabei beim kompilieren gesetzt: _FS_start, _FS_end, _FS_page, _FS_block und _EEPROM_start
So ganz raus habe ich noch nicht, wie OTA hier Platz hat und warum Werte doppelt definiert werden.
Beispiel (Boards.txt):
1 |
nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module)
|
2 |
...
|
3 |
nodemcuv2.menu.eesz.4M2M=4MB (FS:2MB OTA:~1019KB)
|
4 |
...
|
5 |
nodemcuv2.menu.eesz.4M2M.build.flash_ld=eagle.flash.4m2m.ld
|
6 |
nodemcuv2.menu.eesz.4M2M.build.spiffs_pagesize=256
|
7 |
nodemcuv2.menu.eesz.4M2M.build.spiffs_start=0x200000
|
8 |
nodemcuv2.menu.eesz.4M2M.build.spiffs_end=0x3FA000
|
9 |
nodemcuv2.menu.eesz.4M2M.build.spiffs_blocksize=8192
|
In der referenzierten eagle.flash.4m2m.ld steht:
1 |
PROVIDE ( _FS_start = 0x40400000 );
|
2 |
PROVIDE ( _FS_end = 0x405FA000 );
|
3 |
PROVIDE ( _FS_page = 0x100 );
|
4 |
PROVIDE ( _FS_block = 0x2000 );
|
5 |
/* The following symbols are DEPRECATED and will be REMOVED in a future release */
|
6 |
PROVIDE ( _SPIFFS_start = 0x40400000 );
|
7 |
PROVIDE ( _SPIFFS_end = 0x405FA000 );
|
8 |
PROVIDE ( _SPIFFS_page = 0x100 );
|
9 |
PROVIDE ( _SPIFFS_block = 0x2000 );
|
Also komplett andere Werte für das Dateisystem. Ich denke aber, dass die Werte aus boards.txt ignoriert werden, da SPIFF in den eagle.flash.*.ld-Dateien als "DEPRECATED" getagged ist.
Bleibt nur noch OTA ;-)