Reset after platform-espressif32 upgrading to 6.2.0

Hi,

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.

Someone can help me?
Thanks

Do you set a custom partition table in the platformio.ini? If yes, make sure it includes a partition for the core dump.

I have a couple of devices that I update only using OTA, so the partition table cannot be modified on that devices. Is it important?

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