Forum: Mikrocontroller und Digitale Elektronik ESP32 boot loop, rst: 0x08


von Jonas A. (jonny007)


Lesenswert?

Hallo,

ich habe soeben meine Bestellung mehrerer ESP32 erhalten.
(https://www.conrad.at/de/p/espressif-entwicklungswerkzeug-esp32-devkitc-ver-d-1925469.html#productDownloads)

Jedoch habe ich Probleme, etwas hochzuladen - nicht einmal das Blink 
Programm funktioniert. Ich habe bereits mehrere ESPs und mehrere Kabel 
ausprobiert. Ich habe den Code sowohl über PlatformIO als auch mittels 
Arduino IDE hochgeladen. Um zu sehen, ob der ESP überhaupt irgend etwas 
macht habe ich dann den seriellen Monitor geöffnet und folgende 
Fehlermeldung wird im Sekundentakt ausgegeben:

rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13864
load:0x40080400,len:3608
entry 0x400805f0

Die Upload Message sieht folgendermaßen aus:

Serial port COM8
Connecting.....
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding 
Scheme None
Crystal is 40MHz
MAC: e8:31:cd:14:42:54
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x0004bfff...
Flash params set to 0x022f
Compressed 18880 bytes to 12992...
Writing at 0x00001000... (100 %)
Wrote 18880 bytes (12992 compressed) at 0x00001000 in 0.4 seconds 
(effective 390.3 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds 
(effective 455.3 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 
696.2 kbit/s)...
Hash of data verified.
Compressed 243056 bytes to 134364...
Writing at 0x00010000... (11 %)
Writing at 0x0001dcfb... (22 %)
Writing at 0x00024731... (33 %)
Writing at 0x0002992c... (44 %)
Writing at 0x0002ecd0... (55 %)
Writing at 0x000374c6... (66 %)
Writing at 0x0003f544... (77 %)
Writing at 0x00044b26... (88 %)
Writing at 0x0004a2d5... (100 %)
Wrote 243056 bytes (134364 compressed) at 0x00010000 in 2.7 seconds 
(effective 714.1 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...


Einmal habe ich auch ausprobiert ein Serial.begin und ein Serial.print 
direkt am Start des Setups einzubauen. Hierbei wurden die ersten beiden 
Buchstaben des print statements geprintet, anschließen kam wieder 
besagte Fehlermeldung.

Weiß hier jemand, was ich falsch mache bzw. was das Problem sein könnte? 
Zu dem Fehler 0x08 habe ich leider noch nichts passendes gefunden.

von Stefan F. (Gast)


Lesenswert?

Der Watchdog Timer löst einen Reset aus, weil sich der Chip auf gehangen 
hat. Überprüfe die Stromversorgung mit einem Oszilloskop.

Und zeige mal dein Programm, das könnte auch Schuld sein. ESP sind nicht 
ganz so einfach zu programmieren, wie Arduino UNO.

Ich weiß nicht wie viel du in der IDE konfigutieren kannst. Beim ESP8266 
gibt es mehrere Zugriffsarten (QIO, DIO, QOUT, DOUT) und zwei Bitraten 
für den Flash Speicher einzustellen. Manche Speicher unterstützen nicht 
alle 4 Modi und laufen bei der maximalen Bitrate unzuverlässig.

von Jonas A. (jonny007)


Lesenswert?

Leider habe ich gerade kein Oszilloskop zur Verfügung. Der ESP wird 
mittels USB Kabel versorgt und es hängt sonst kein Verbraucher am ESP. 
Wenn ich die Spannungsversorgung zusätzlich mittels Vin Pin 
sicherstelle, ändert das leider nichts daran.

Das Programm ist ein einfaches Programm, welches eine LED zum Blinken 
bringen soll. Ich denke nicht, dass hier Fehler sein könnten. Ich habe 
bereits vor mehreren Monaten mit ESP32 gearbeitet, welche ich damals auf 
Amazon bestellt habe. Dieses Blink Programm und auch andere, komplexere 
Programme habe ich mühelos am ESP ausführen können.

Auch beim ESP32 kann man die Zugriffsarten und die Bitraten für den 
Speicher festlegen. Ich habe soeben alle Möglichkeiten durchprobiert - 
es hat leider nichts funktioniert.

Wie bereits oben erwähnt habe ich zu Beginn der Setup Funktion ein 
Serial.println("Start"); eingebunden. Dieses gibt "St" aus und 
anschließend besagte Fehlermeldung. Das müsste doch heißen, dass das 
Programm hochgeladen wurde und soweit funktionieren sollte, oder?

Trotzdem danke schonmal für die schnelle Antwort :)

von Stefan F. (Gast)


Lesenswert?

Jonas A. schrieb:
> Das Programm ist ein einfaches Programm, welches eine LED zum Blinken
> bringen soll. Ich denke nicht, dass hier Fehler sein könnten.

Oh doch, wenn man es falsch macht bringt man den ESP damit ganz leicht 
gezielt zum Reset. Also: Zeige dein Programm!

> Ich denke nicht, dass hier Fehler sein könnten
Dir ist aber schon klar, dass der Fehler irgendwo steckt, wo du gerade 
nicht dran denkst? Weil: Sonst hättest du es bereits selbst gelöst.

Jonas A. schrieb:
> Dieses gibt "St" aus und
> anschließend besagte Fehlermeldung. Das müsste doch heißen, dass das
> Programm hochgeladen wurde und soweit funktionieren sollte, oder?

Es kann trotzdem teilweise fehlerhaft geladen werden. Bedenke, dass das 
Programm Stückweise aus dem externen Flash Chip ins RAM kopiert wird, 
und erst dann ausgeführt wird. Es kann aber wie gesagt auch ein ganz 
simpler Programmierfehler sein, deswegen lass mich da mal rein gucken.

Wenn was mit der Hardware ist, dann meistens zu schwache 
Stromversorgung. Häufig wegen schlechter Kontakte in Steckverbindungen 
(auch Steckbretter) oder Kabel und Stecker aus Eisen statt Kupfer. 
Defekte verkaufte ESP Module sind hingegen sehr selten.

von Jonas A. (jonny007)


Angehängte Dateien:

Lesenswert?

Danke für deine Antwort, ich habe das Problem mittlerweile alleine 
gelöst. Ich bin gerade alle Einstellungen in der Arduino IDE 
durchgegangen, bis es geklappt hat. Im Anhang ist ein Screenshot der 
Arduino IDE Tools Einstellungen.

Und hier wäre der Code, welcher nun einwandfrei läuft:

[c]
#define LED_PIN 26

void setup() {
  Serial.begin(115200);
  Serial.println("START!");
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  Serial.println("Loop");
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}
[c]

Ich weiß zwar noch nicht, weshalb es zuvor nicht funktioniert hat, 
jedoch läuft er jetzt und ich werde dem nicht weiter nachgehen.

: Bearbeitet durch User
von J. S. (jojos)


Lesenswert?

bei dem Conrad Apothekenpreis von 19€ für so ein Board sollte das schon 
was edles sein... Allerdings ist das ESP Modul schon alt, neue sind 
Version 3.
Wurde der flash clock geändert? Default sind doch 40 MHz, also div:2, so 
ist es bei meinem NodeMCU32S. Das läuft allerdings auch mit div:1.
Vielleicht mal
board_build.f_flash = 40000000L  (edit: 40 Mhz sollte es sein, das ist 
default)
in die pio.ini schreiben. Oder wurde ein falsches Board ausgewählt? 
Langsam wird es ja unübersichtlich mit den ESP Varianten.
Per SW habe ich so einen Fehler noch nicht hinbekommen, selbst eine 
infinite loop in loop() juckt den ESP32 nicht.

: Bearbeitet durch User
von volker (Gast)


Lesenswert?

Hallo,
ich bin auf der Suche nach der Lösung für mein Problem auf diesen Post 
gestossen. Die Fehlermeldung die ich erhalte ich fast identisch (siehe 
unten).
Ich nutze ein Wemos Lolin 32 Lite
Bin dankbar für jeden Hinweis.
Grüß
Volker

------------------------------------------------------------------------ 
--
16:26:32.842 -> rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 
(SPI_FAST_FLASH_BOOT)
16:26:32.875 -> configsip: 0, SPIWP:0xee
16:26:32.875 -> 
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
16:26:32.875 -> mode:DIO, clock div:1
16:26:32.875 -> load:0x3fff0030,len:1184
16:26:32.875 -> load:0x40078000,len:13132
16:26:32.875 -> load:0x40080400,len:3036
16:26:32.875 -> entry 0x400805e4
16:26:33.881 -> ets Jul 29 2019 12:21:46
--------------------------------------------------------------
Der Sketch verwendet 1076481 Bytes (82%) des Programmspeicherplatzes. 
Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 42208 Bytes (12%) des dynamischen Speichers, 
285472 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 
Bytes.
"C:\Users\volke\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\ 
4.2.1/esptool.exe"  --chip esp32 --port "COM4" --baud 256000  --before 
default_reset --after hard_reset write_flash  -z --flash_mode dio 
--flash_freq 80m --flash_size 4MB 0x1000 
"C:\Users\volke\AppData\Local\Temp\arduino-sketch-896902C07C0C0942FF6622 
175248EFA9/RGB-LEDs.ino.bootloader.bin"  0x8000 
"C:\Users\volke\AppData\Local\Temp\arduino-sketch-896902C07C0C0942FF6622 
175248EFA9/RGB-LEDs.ino.partitions.bin"  0xe000 
"C:\Users\volke\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2. 
0.6/tools/partitions/boot_app0.bin"  0x10000 
"C:\Users\volke\AppData\Local\Temp\arduino-sketch-896902C07C0C0942FF6622 
175248EFA9/RGB-LEDs.ino.bin"
esptool.py v4.2.1
Serial port COM4
Connecting....
Chip is ESP32-D0WD-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding 
Scheme None
Crystal is 40MHz
MAC: c0:49:ef:f1:7c:e4
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 256000
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00118fff...
Compressed 17440 bytes to 12108...
Writing at 0x00001000... (100 %)
Wrote 17440 bytes (12108 compressed) at 0x00001000 in 0.8 seconds 
(effective 167.6 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 146...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (146 compressed) at 0x00008000 in 0.1 seconds 
(effective 295.2 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.2 seconds (effective 
423.6 kbit/s)...
Hash of data verified.
Compressed 1082256 bytes to 685128...
Writing at 0x00010000... (2 %)
Writing at 0x0001acdc... (4 %)
Writing at 0x000269f9... (7 %)
Writing at 0x0003282a... (9 %)
Writing at 0x00037e91... (11 %)
Writing at 0x0003d7cd... (14 %)
Writing at 0x00042d3a... (16 %)
Writing at 0x0004863b... (19 %)
Writing at 0x0004ddad... (21 %)
Writing at 0x00052ef5... (23 %)
Writing at 0x00059280... (26 %)
Writing at 0x0005ebd7... (28 %)
Writing at 0x0006463f... (30 %)
Writing at 0x0006a1a1... (33 %)
Writing at 0x0006fd7c... (35 %)
Writing at 0x000756b2... (38 %)
Writing at 0x0007afd7... (40 %)
Writing at 0x000805ca... (42 %)
Writing at 0x00085dcb... (45 %)
Writing at 0x0008b479... (47 %)
Writing at 0x00090eec... (50 %)
Writing at 0x00096a44... (52 %)
Writing at 0x0009d311... (54 %)
Writing at 0x000a3720... (57 %)
Writing at 0x000a8e9a... (59 %)
Writing at 0x000aeb34... (61 %)
Writing at 0x000b40af... (64 %)
Writing at 0x000b978a... (66 %)
Writing at 0x000bf170... (69 %)
Writing at 0x000c5094... (71 %)
Writing at 0x000cb42c... (73 %)
Writing at 0x000d1166... (76 %)
Writing at 0x000d6b2c... (78 %)
Writing at 0x000dc43f... (80 %)
Writing at 0x000e2107... (83 %)
Writing at 0x000ea816... (85 %)
Writing at 0x000f322e... (88 %)
Writing at 0x000fb911... (90 %)
Writing at 0x00102d21... (92 %)
Writing at 0x0010836a... (95 %)
Writing at 0x0010e18e... (97 %)
Writing at 0x0011361d... (100 %)
Wrote 1082256 bytes (685128 compressed) at 0x00010000 in 27.2 seconds 
(effective 318.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

von Stefan F. (Gast)


Lesenswert?

Moment, meine Glaskugel streikt gerade. Ich sehe... ich sehe... leider 
nichts.

von Bernhard S. (b_spitzer)


Lesenswert?

an den TO:
Schreibe doch für alle lesbar, dass du den Flash-Modus QIO eingestellt 
hast und vorher DIO eingestellt war...
(Das hätte Volker jetzt geholfen)

von Stefan F. (Gast)


Lesenswert?

Bernhard S. schrieb:
> Schreibe doch für alle lesbar, dass du den Flash-Modus QIO eingestellt
> hast und vorher DIO eingestellt war...

Ich denke, dass jeder Flash Speicher der QIO kann auch DIO kann.

Aber das bringt mich auf eine Idee: Nicht jeder Flash Chip läuft mit 80 
MHz zuverlässig.

von Nam V. (nam_v)


Lesenswert?

Probier mal im Arduino: Tools->Erase All Flash Before Sketch Upload: 
Enabled und danach Tools->Flash Mode: DIO. Hat bei mir funktioniert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.