Description
Hardware:
Board: ESP32 Adafruit Feather Huzzah
Core Installation/update date: 25/jan/2018
IDE name: Arduino IDE
Flash Frequency: 80Mhz
Upload Speed: 921600
Description:
I have an embedded system that need to analyze a continual flow of UART information and transmit them on a fix frequency to a Database over TCP by using mbedTLS. To achieve that goal, I divided the Cores, so Core 0 takes care of WiFi transmission of data using mbedTLS of a JSON String. The Core 1 is simply reading package on the UART line and rights them in a buffer. The WiFi Task then reads these values every 10 seconds to transmit them if required by the server, it also transmits a smaller package if no informations are required by the server.
So here is the problem: After booting, everything setups just right. The ESP connects to the defined WiFi and it start its routine by transmitting. Then, randomly, (sometimes after 3 transmissions to server, other times 50) it reboots. but no giving any panic reasons or Guru Meditation (Verbose Option Active.) looking like this:
[I][HttpsHandler.cpp:25] process(): ----- Processing Https Request -----
[D][HttpsHandler.cpp:52] sendToDB(): Starting connection to server for update...
[V][ssl_client.cpp:48] start_ssl_client(): Free heap before TLS 107060
[V][ssl_client.cpp:50] start_ssl_client(): Starting socket
[V][ssl_client.cpp:86] start_ssl_client(): Seeding the random number generator
[V][ssl_client.cpp:95] start_ssl_client(): Setting up the SSL/TLS structure...
[V][ssl_client.cpp:108] start_ssl_client(): Loading CA cert
[V][ssl_client.cpp:143] start_ssl_client(): Setting hostname for TLS session...
[V][ssl_client.cpp:158] start_ssl_client(): Performing the SSL/TLS handshake...
[V][ssl_client.cpp:177] start_ssl_client(): Verifying peer X.509 certificate...
[V][ssl_client.cpp:186] start_ssl_client(): Certificate verified.
[V][ssl_client.cpp:201] start_ssl_client(): Free heap after TLS 65124
[D][HttpsHandler.cpp:58] sendToDB(): Connected to server!
[V][ssl_client.cpp:240] send_ssl_data(): Writing HTTP request...
[V][ssl_client.cpp:240] send_ssl_data(): Writing HTTP request...
[V][ssl_client.cpp:209] stop_ssl_socket(): Cleaning SSL connection.
[I][HttpsHandler.cpp:37] process(): ----- End of Https Request -----
[I][HttpsHandler.cpp:25] process(): ----- Processing Https Request -----
[D][HttpsHandler.cpp:52] sendToDB(): Starting connection to server for update...
[V][ssl_client.cpp:48] start_ssl_client(): Free heap before TLS 106520
[V][ssl_client.cpp:50] start_ssl_client(): Starting socket
[V][ssl_client.cpp:86] start_ssl_client(): Seeding the random number generator
ets Jun 8 2016 00:22:57
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:0x3fff0018,len:4
load:0x3fff001c,len:956
load:0x40078000,len:0
load:0x40078000,len:13076
entry 0x40078a58
[I][wifiModule.ino:46] setup(): <--Booting WiFi Module-->
It does not always crashes at Seeding the random number, sometimes it crashes here:
[V][ssl_client.cpp:48] start_ssl_client(): Free heap before TLS 104556
[V][ssl_client.cpp:50] start_ssl_client(): Starting socket
[V][ssl_client.cpp:86] start_ssl_client(): Seeding the random number generator
[V][ssl_client.cpp:95] start_ssl_client(): Setting up the SSL/TLS structure...
[V][ssl_client.cpp:108] start_ssl_client(): Loading CA cert
[V][ssl_client.cpp:143] start_ssl_client(): Setting hostname for TLS session...
[V][ssl_client.cpp:158] start_ssl_client(): Performing the SSL/TLS handshake...
ets Jun 8 2016 00:22:57
rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
I used to have a much more stable build. But since a few time it started acting out and I cant find the solution.
Sketch:
I am sadly not in the right to disclose the code at the moment but ill try to post to you guys a working example with the same crash.
What I tried:
- Change Package size to smaller (Give more RAM)
- Verify power is enough (2.1A 5V USB Source).
- Increase HTTPS Requests Frequency (10s or 1min, same thing.)
- Disable All Watchdogs in sdkconfig file:
Line 209: CONFIG_INT_WDT=
Line 210: CONFIG_INT_WDT_TIMEOUT_MS=300
Line 211: CONFIG_INT_WDT_CHECK_CPU1=
Line 212: CONFIG_TASK_WDT=
Line 213: CONFIG_TASK_WDT_PANIC=
Line 214: CONFIG_TASK_WDT_TIMEOUT_S=5
Line 215: CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=
Line 216: CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=
I am open to any solutions if you guys have some propositions. Thank You.