Binary image header size issue

Hallo,

Ich versuche gerade einen ESPuino zum laufen zu bringen und es raucht, es dampft und es zischt nach dem Flashen. Mehr aber auch nicht. Der Flashvorgang ist technisch soweit erfolgreich. Am Serial Monitor bekomme ich dann aber folgende Fehler:

esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0

Detected size(4096k) smaller than the size in the binary image header(8192k). Probe failed.

Ich vermute, dass das was mit der Flashspeichergröße meines ESP32 (ESP32_DEVK1tc_V4) zu tun hat, die wahrscheinlich nur bei 4MB liegt. Im Moment habe ich alles abgeklemmt außer dem SD Karten Leser mit SD Karte drin (SD MMC konfiguriert) und das Board mit allen möglichen default_envs konfiguriert und geflasht. Leider bleibt der Fehler immer der gleiche.

Daher folgende Fragestellungen:

  1. Ist es möglich das mein ESP32 einfach nicht kompatibel ist?
  2. Hat die default_envs auf diesen Fehler überhaupt Einfluss?

Für jeden sachdienlichen Hinweis wäre ich dankbar

Wenn du das Board verwenden willst, dann musst du als ENV az-delivery-devkit-v4 verwenden. Dann müsste das klappen.
Sinn macht’s insgesamt jedoch nicht, da dieses Board keinen PSRAM besitzt. Den brauchen wir aber, da sonst der Speicher nicht reicht. Also man kriegt’s geflasht, man kriegt ESPuino auch gestartet, aber es kann an verschiedenen Stellen dann zu Neustarts kommen, da der Hauptspeicher nicht reicht.

Danke biologist!
Ich hatte es auch mit der „az delivery“ ENV versucht. Gleicher Fehler. Ich war ursprünglich in der Annahme das mein Board mit WROVER kompatibel sei. Die einschlägigen Wikipedia Tabellen ESP32 suggerieren, dass PSRAM verbaut sein sollten. Aber wenn ich deine Rückmeldung richtig interpretiere, ist wahrscheinlich gar nicht nicht der Chip verbaut der oben drauf steht.

Dann versuche ich mal was neues zu bestellen. Danke für das Feedback und die tolle Dokumentation! Die Hürde von T…uino auf ESPuino zu migrieren ist einigermaßen groß, wird aber durch die Artikel sehr gut begleitet.

Also offenbar gibt es dieses Board mit wroom und wrover. Was bei dir verbaut ist, kann ich nicht beurteilen. Das steht aber auf dem esp32-Modul drauf.
Du scheinst ein Profil mit 8MB gewählt zu haben, was dann nicht zu den 4MB passt, die das Board wohl hat.

Genau. WROVER soll verbaut sein. Aber wenn nur 4MB ermittelt werden kann es das ja nicht sein. (Ich bin mir nicht sicher ob PSRAM in diese 4MB eingehen müsste oder sich diese nur auf den Flash Speicher beziehen).

Also üblicherweise haben WROVER-Boards mehr als 4 MB, das muss jedoch nicht zwingend so sein. Grundsätzlich reden wir beim WROOM und beim WROVER vom gleichen ESP32-µC, der jedoch unterschiedliche Peripherie hat. D.h. dieses Modul beherbergt u.a. Flash-Speicher, eine Antenne und im Falle des WROVER halt auch PSRAM.

Wie gesagt: Schau auf’s Modul drauf. Das ist da lasermäßig eingraviert, ob das WROOM oder WROVER ist. 4 MB Speicher ist ok, du kannst damit nur nicht ein Update per OTA machen.

Vielen Dank @biologist !

Deine erste Beobachtung war vollkommen korrekt und hat zur Lösung geführt:
Ich hatte zwar die DEFAULT_ENVS angepasst:

Aber dazu parallel nicht die ENV in der VSC Gui am unteren Bildschirmrand synchron dazu nachgezogen:
image

Nach Anpassung beider Werte und erneutem Flashen waren die Fehlermeldungen verschwunden.

Der Vollständigkeit halber:
Einen WROVER verwende ich (laut Gravur zumindest):

Die Peripherie scheint aber unvollständig. Im Monitor zumindest bekomme ich bei laufender Firmware die Fehlermeldung „PSRAM not found“…

Auf die OTA Funktionalität lege ich erstmal nicht so viel wert. Ich habe das Board jetzt rudimentär aufm breadboard verzwirbelt und das erste per FTP hochgeladene file bereits abspielen können.

Ich bekomme noch ein paar Fehlermeldung in Sachen LowVoltage (alles läuft auf 3,3V über das Devboard des ESP32) aber der Patient hat schon mal Puls.

Danke für den Support! :slight_smile: Ich werde noch ein paar Erfahrungen mit diesem „WROVER“ ohne PSRAM sammeln und dann wahrscheinlich auf dich @biologist Zwecks D32 zurückkommen.

1 „Gefällt mir“

Wegen PSRAM: Schau dir mal die envs an. Du musst das explizit als Parameter mitgeben, dass das Develboard das hat. Dann sollte es auch gefunden werden.

Habe in den letzten Tagen mit dem PSRAM rumexperimentiert.

Von meinem ESP32 habe ich zwei (ein nackter und ein ESPuino eingelöteter), so dass ich ein wenig vergleichend testen konnte.

PSRAM konnte ich verifizieren. Folgenden Code habe ich benutzt in der Ard. IDE

#include <Arduino.h>

void setup() {
  Serial.begin(115200);

  if (psramFound()) {
    Serial.println("PSRAM found!");
  } else {
    Serial.println("PSRAM not found!");
  }

  Serial.print("Total heap: ");
  Serial.print(ESP.getHeapSize());
  Serial.println(" bytes");

  Serial.print("Free heap: ");
  Serial.print(ESP.getFreeHeap());
  Serial.println(" bytes");

  Serial.print("Total PSRAM: ");
  Serial.print(ESP.getPsramSize());
  Serial.println(" bytes");

  Serial.print("Free PSRAM: ");
  Serial.print(ESP.getFreePsram());
  Serial.println(" bytes");
}

void loop() {
  // Your code here
}

Folgende logs habe ich erhalten:

09:27:01.612 → PSRAM found!
09:27:01.612 → Total heap: 375280 bytes
09:27:01.612 → Free heap: 332444 bytes
09:27:01.612 → Total PSRAM: 4194304 bytes
09:27:01.612 → Free PSRAM: 4192124 bytes

Um den PSRAM nun zu nutzen habe ich dann folgende Anpassungen in der platformio.ini vorgenommen:

[env:az-delivery-devkit-v4]
;https://docs.platformio.org/en/latest/boards/espressif32/az-delivery-devkit-v4.html
board = az-delivery-devkit-v4
build_flags = ${env.build_flags}
              -DHAL=8
              -DBOARD_HAS_PSRAM

Auf dem nackten ESP32 gibt es damit keine Probleme (der fehlende SD card reader liefert die zu erwartende Fehlermeldung). :

Make sure SD card lines have pull-up resistors in place.
E [4677] SD-Karte konnte nicht gemountet werden.
E (5200) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
E (5201) vfs_fat_sdmmc: sdmmc_card_init failed (0x107).
[ 5205][E][SD_MMC.cpp:148] begin(): Failed to initialize the card (0x107).

Sobald ich den Code mit dem aktivierten PSRAM auf dem verlöteten ESP32 ausprobiere kommt die Endlosschleife mit folgenden Logs:

E (583) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0

E (724) esp_core_dump_flash: No core dump partition found!
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.

Ich weiß nicht ob mein vergleichender Test etwas bringt, da mir nicht klar ist welcher Fehler zuerst auftreten müsste bei dem nackten ESP32 - das SD Card Problem oder der corrupted ESP dump flash. Obiges habe ich auch mit der Config + „-mfix-esp32-psram-cache-issue“ probiert, was keinerlei Auswirkung auf die Ausgabe hatte. Es gibt 2 Themen im Forum mit vergleichbaren Problemen, allerdings fehlt hier die nachlesbare Auflösung des Problems. Vielleicht hat jmd. noch eine Idee wie ich den PSRAM auf meinen ESPuinos nutzbar mache?

Führt mich zu:
https://www.reddit.com/r/esp32/comments/1797tr4/esp_core_dump_flash_no_core_dump_partition_found/
(2,4Ghz Wlan statt 5GHz)
oder

weiter zu

Passt was bei dir?