Partitionstabelle ESP-12F (ESP8266EX)

OP #7984534
Lesenswert?

Hallo & frohe Weihnachten,

ich habe meinen Uralt-Account reaktiviert in der Hoffnung dass Ihr mir weiterhelfen könnt. Ich würde gerne auf mein ESP-12F-Modul eine neue Partitionstabelle flashen, allerdings wollte ich vorab die aktuelle Tabelle dumpen um mal zu schauen "was da so drauf ist".

Mit esptool habe ich den Flash an 0x8000 (alte Chips), 0x9000 (neue Chips), 0x0100 (meinte ChatGPT) und auch komplett (4MB) ausgelesen. An keiner Stelle finde ich etwas, was wie eine Tabelle aussieht, oder was von gen_esp32part.py dekompiliert werden könnte. Auch wenn das Tool esp32part.py heißt, sollte es hier keinen Unterschied geben und laut https://docs.espressif.com/projects/esp8266-rtos-sdk/en/latest/api-guides/partition-tables.html müßte man aber auch visuell so eine Tabelle im Hexcode erkennen - so kompliziert sind die ja nicht.

Was übersehe ich?

Grüße, André

#7984642
Lesenswert?

Wer nutzt RTOS? Arduino jedenfalls nicht, und ESP-IDF läuft nicht (auf dem ESP8266)

Nicht dass ich mich auskenne, aber ESP8266EX ist auch kein ESP32.

Wenn Du Serial dran hängst müsste der nicht mitteilen aus welchem Speicherbereich der läuft?

: Bearbeitet durch User
OP #7984651
Lesenswert?

Wie gesagt, das es keine Partitionstabelle ist, weiß ich auch. Die Frage ist: Wo finde ich die im ESP8266EX? an 0x8000 oder 0x9000 wohl nicht (siehe Dumps), aber es muss ja eine geben vermute ich. Alleine schon wegen OTA/nicht OTA ... SPIFFS/Kein FS ... je nachdem was ich haben möchte eben.

OP #7984652
Lesenswert?

Alexander schrieb:

Da ist keine Partitionstabelle. Bist Du sicher dass es eine gibt?

Sicher bin ich nicht, es würde mich aber schwer wundern, wenn es keine gäbe (siehe oben - diverse Wunschoptionen wie OTA, Filesystem, ... bedingen das ja).

Rüdiger B. schrieb:

https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/partition-tables.html

Ging das an mich? Den Link hatte ich gepostet - wie eine Tabelle auszusehen hat, habe ich wohl verstanden - ich finde sie nur nicht im Chip ;-)

OP #7984654
Lesenswert?

Alexander schrieb:

Nicht dass ich mich auskenne, aber ESP8266EX ist auch kein ESP32.

Hatte ich das behauptet? Die ESPs sollten sich aber dahingehend identisch verhalten, der Link oben zeigt ja, dass es auch hier eine Tabelle geben sollte. Die Arduino-IDE erlaubt es auch andere Partitionierungsschemata zu verwenden, solange der Boardersteller das unterstützt (Boards.txt)

#7984682
Lesenswert?

So wie das aussieht gab es beim ESP8266 zumindest die Möglichkeit dass die Partitionstabelle nur im Code existiert, nicht im Flash.

https://github.com/espressif/ESP8266_NONOS_SDK/blob/master/documents/EN/%20Partition%20Table.md

Im Arduino Framework finde ich auch keinen partitions/ Pfad mit den Beispiel .csv Partitionstabellen.

https://github.com/esp8266/Arduino/tree/master/tools

https://github.com/espressif/arduino-esp32/tree/master/tools

: Bearbeitet durch User
OP #7985021
Lesenswert?

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 ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren