ESP32 - Boucle sur Reset

Bonjour,

j'ai un problème avec une de mes cartes ESP32.

Après quelques heures de fonctionnement, je n'arrivai plus à voir le Wifi. Je regarde sur le moniteur série est là je découvre que l'ESP32 boucle sur le reset suivant:

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x018c0000,len:-699138048
ets Jul 29 2019 12:21:46

J'ai remis le programme sur la carte, j'ai flashé la carte et réinstallé le programme mais l'ESP32 reste bloqué dans cette boucle.

Est-ce que quelqu'un a déjà eu ce problème ?

Merci d'avance pour votre aide,
Antonin

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

quel programme, quelle carte ? qu'est-ce qui est branché dessus ? ...

➜ aidez nous à vous aider, donnez plus d'infos

Bonjour J-M-L,

N'importe quel programme. Quoique je mette dessus, l'ESP32 reste en boucle sur ce reset.

La carte est une fabrication personnelle. J'en ai plusieurs qui fonctionnent parfaitement et celle-là qui s'est mise à boucler.

A part le moniteur série, j'ai tout débranché de la carte. Il ne reste que l'alim et le superviseur de tension.

Antonin

c'est après quelques temps sur le WiFi ou instantané lors du reboot ? la console dit autre chose ?

C'est instantané dès l'alimentation de la carte.
Le port série n'affiche rien d'autre que le message de reset.

et vous arrivez quand même à charger un code genre blink ?

Bonjour @antonins

La carte est une fabrication personnelle. J'en ai plusieurs qui fonctionnent parfaitement et celle-là qui s'est mise à boucler.
A part le moniteur série, j'ai tout débranché de la carte. Il ne reste que l'alim et le superviseur de tension.

1-fabrication perso : montrer le schéma pour nous permettre de voir les points sensibles, ceux à examiner de près

2-Vérifier également à la loupe toutes les soudures

SVP : montrer ici ce qui apparait sur la console flashage inclus de manière à voir ce qui apparait au premier lancement du programme après le flashage

C'est-à-dire:

  • tu as implanté un ESP32?
  • tu as implanté un module intégrant un ESP32?

Merci à tous pour votre aide.

@fdufnews : J'utilise un ESP32-WROOM-32E-N8

Après avoir fait 'Erase Flash', le processeur boucle sur:

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

Si je upload un programme, j'ai ça

Replace MKSPIFFSTOOL with mklittlefs.exe
Retrieving maximum program size .pio\build\esp32dev\firmware.elf
Checking size .pio\build\esp32dev\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  14.5% (used 47580 bytes from 327680 bytes)
Flash: [========= ]  88.4% (used 1158150 bytes from 1310720 bytes)
Configuring upload protocol...
AVAILABLE: esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa   
CURRENT: upload_protocol = esptool
Looking for upload port...
Auto-detected: COM4
Uploading .pio\build\esp32dev\firmware.bin
esptool.py v3.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: 24:4c:ab:ea:d8:f8
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 8MB
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 0x0012afff...
Flash params set to 0x0230
Compressed 17104 bytes to 11191...
Writing at 0x00001000... (100 %)
Wrote 17104 bytes (11191 compressed) at 0x00001000 in 0.5 seconds (effective 261.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 331.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.1 seconds (effective 578.5 kbit/s)...
Hash of data verified.
Compressed 1158368 bytes to 674010...
Writing at 0x00010000... (2 %)
Writing at 0x0001b1a1... (4 %)
Writing at 0x00028a21... (7 %)
Writing at 0x00032f58... (9 %)
Writing at 0x00044b0c... (11 %)
Writing at 0x0004ff6c... (14 %)
Writing at 0x00055fd4... (16 %)
Writing at 0x0005c04a... (19 %)
Writing at 0x00062b73... (21 %)
Writing at 0x00067a24... (23 %)
Writing at 0x0006d1cb... (26 %)
Writing at 0x0007229d... (28 %)
Writing at 0x000777b9... (30 %)
Writing at 0x0007ca71... (33 %)
Writing at 0x0008202c... (35 %)
Writing at 0x00087542... (38 %)
Writing at 0x0008f476... (40 %)
Writing at 0x00096749... (42 %)
Writing at 0x0009c1fb... (45 %)
Writing at 0x000a1934... (47 %)
Writing at 0x000a6e17... (50 %)
Writing at 0x000ac8e2... (52 %)
Writing at 0x000b2450... (54 %)
Writing at 0x000b8499... (57 %)
Writing at 0x000bde6c... (59 %)
Writing at 0x000c3b5f... (61 %)
Writing at 0x000c9590... (64 %)
Writing at 0x000cf67a... (66 %)
Writing at 0x000d5d4b... (69 %)
Writing at 0x000dbb00... (71 %)
Writing at 0x000e1e2c... (73 %)
Writing at 0x000e7e8a... (76 %)
Writing at 0x000edba5... (78 %)
Writing at 0x000f49bd... (80 %)
Writing at 0x000fcfe0... (83 %)
Writing at 0x00104725... (85 %)
Writing at 0x0010aa9c... (88 %)
Writing at 0x00110f9c... (90 %)
Writing at 0x001184bf... (92 %)
Writing at 0x0011deba... (95 %)
Writing at 0x00123bc2... (97 %)
Writing at 0x00129d20... (100 %)
Wrote 1158368 bytes (674010 compressed) at 0x00010000 in 15.9 seconds (effective 582.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
================================================================== [SUCCESS] Took 25.58 seconds ================================================================== *  Terminal will be reused by tasks, press any key to close it.

Et après, après démarrage j'ai ça sur le moniteur série


--- Terminal on COM4 | 115200 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5        
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_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:2
load:0x3fff0018,len:4
load:0xff001cff,len:267327
1150 mmu set 00010000, pos 00010000
1150 mmu set 00020000, pos 00020000
1150 mmu set 00030000, pos 00030000
1150 mmu set 00040000, pos 00040000
ho 0 tail 11 room 5
load:0x00000003,len:1589262

Le deuxième paragraphe se répète à l'infini.

La carte a fonctionné plusieurs heures avant de rentrer dans ce reset infernal. Je n'ai pas le fer et la loupe à proximité. Je regarderai de près dès que je les aurai.

quel configuration mémoire vous utilisez pour la compilation ?

Qu'est ce que vous appelez configuration mémoire ?

ce qu'on peut configurer dans l'IDE

image

mettez sur 2MB juste pour voir

ESPTool détecte 8MB. Je n'ai jamais eu de problème de détection de la taille de la Flash sur un ESP32.

Il semblerait que le programme démarre puis se plante sur un watchdog reset.

Quel est le code que tu fais tourner?

Quand la carte fonctionnait encore le code faisait-il des écritures fréquentes en mémoire Flash ?
(en tant compte du fait que SPIFFS, LIttleFS, EEPROM, Preferences...... se passent en mémoire Flash )

oui ça a l'air bon avec ESP32-WROOM-32E-N8

je me demandais cependant si en diminuant la taille on ne changeait pas le comportement

Effectivement il détecte automatique la flash.

Je fais tourner le code le plus simple du monde

#include <Arduino.h>

void setup()
{
  delay(2000);
  //----------------------------------------------------Serial
  Serial.begin(115200);

}

void loop()
{

 delay(1000); 
 Serial.println("Ca marche !");
}

Une bizarrerie que je n'ai pas mentionné, quand j'upload un programme, je n'ai pas besoin d'J'ai bien peur que ce soit le module ESP32 qui est cramé.

Visiblement le Flashage ne laisse pas un code fonctionnel dans la mémoire Flash !
un code binaire 'pourri' peur tout à fait déclencher très vite le watchdog

mauvaise config de flashage? mémoire Flash défaillante ?

ce genre de comportement a été rencontré auparavant en tentant un flashage en mode QIO, pas DIO comme ici

quel est le contenu de platformio.ini ?

Oui le programme enregistre des informations sur un JSON toutes les minutes avec la librairie LITTLEFS. Il peut également enregistrer des logs avec LITTLEFS en fonction des événements qu'il rencontre.
Enfin, il enregistre des informations en flash s'il dépasse des maximums ou minimum à l'aide de la librairie 'preferences'.

le contenu de plateformio.ini

[env:esp32dev]

platform = espressif32

board = esp32dev

framework = arduino

board_build.f_cpu = 80000000L

monitor_speed = 115200

la mémoire Flash qui, sous le capot du module WROOM, accompagne l'ESP32 est donnée il me semble pour 100.000 écritures.

LitteFS fait du 'wear levelling' , pas Prefences ou EEPROM