I’m developing some code on a custom esp32 board using Platformio in VSCode
I have upgraded platform-espressif32 from the 3.0.0 version to the last 6.2.0 forcing it on platformio.ini.
The firmware that used to work well now has continuous periodic resets due to an unknown cause. It happens with randomic period, after 5 minutes from start or much more, up to 30 minutes…
I see this at the debug port:
11:19:07.317> ets Jul 29 2019 12:21:46
11:19:07.317>
11:19:07.395> rst:0x10 (RTCWDT_RTC_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
11:19:07.395> configsip: 0, SPIWP:0xee
11:19:07.395> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
11:19:07.395> mode:DIO, clock div:1
11:19:07.395> load:0x3fff0030,len:1184
11:19:07.395> load:0x40078000,len:13220
11:19:07.395> ho 0 tail 12 room 4
11:19:07.395> load:0x40080400,len:3028
11:19:07.395> entry 0x400805e4
11:19:07.931> E (561) esp_core_dump_flash: æ^½É•dump partition found!
11:19:07.931> E (561) esp_core_dump_flash: No core dump partition found!
I tried to find a solution, but I can’t find the cause of this issue.
Well the Arduino-ESP32 of that version is precompiled to try and use it.
But anyways, this might actually be a red hering. The firmware still continues to go on after that? It shouldn’t crash the chip (otherwise you get a bootloop). So something else might be causing your resets. Just from " RTCWDT_RTC_RESET" it’s hard to say what it is though.
Yes, I think that the problem is not the coredump partition. After a reset the FW continues to go for other 5-30minutes until a new reset appears. And it’s asyncronous respect to my FW. My Fw has only 1 thread, so I think that the reset are related to the other core used by the system.
RTCWDT_RTC_RESET seems to be a watchdog timer, isn’t it? Or could be something else?
I can also activate a coredump partition on a demoboard in order to have some more information about the resets, or is it useless?
Hi,
I have found a solution: I go sleep for 100ms at the end of the main loop, if I disable SLEEP all work correctly, nomore resets. Also with a delay of 1500us before go sleep I have a good stability. I don’t know why in the 3.0.0 version the delay was not needed.
//end of main loop
#ifdef ENABLE_SLEEP
if (!wifiNetwork.isSTAConnected() && !(wifiNetwork.isAPConnected())) {
// Configure the timer to wake us up
esp_sleep_enable_timer_wakeup(SLEEP_DURATION_MSEC * 1000L);
delayMicroseconds(1500);
// Go to light sleep
esp_light_sleep_start();
}
#endif