UART causing the ESP32 to reboot
Posted: Thu May 28, 2020 5:32 pm
I have written an app based on an example in the ESP-IDF. It sends a message "AT;\r\n", which should return something like "Ok\r\n". Well, it crashes and says something related rx_interrupt. Where other times it does not crash, but it stays on but does not receive anything. Before the app crashes, it sends this: "uart_rx_intr_handler_default at C:/Users/Hassan/Documents/Arduino/ES
P/esp-idf/components/driver/uart.c:846" to the console. This the message from the console since the crash:
P/esp-idf/components/driver/uart.c:846" to the console. This the message from the console since the crash:
and this is the code: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:0x3fff001c,len:6996
load:0x40078000,len:14076
load:0x40080400,len:4304
entry 0x400806e8
I (71) boot: Chip Revision: 1
I (71) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (39) boot: ESP-IDF v4.0-280-ga3f3c7bdc-dirty 2nd stage bootloader
I (39) boot: compile time 13:23:02
I (39) boot: Enabling RNG early entropy source...
I (45) boot: SPI Speed : 40MHz
I (49) boot: SPI Mode : DIO
I (53) boot: SPI Flash Size : 2MB
I (58) boot: Partition Table:
I (61) boot: ## Label Usage Type ST Offset Length
I (68) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (76) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (83) boot: 2 factory factory app 00 00 00010000 00100000
I (91) boot: End of partition table
I (95) boot_comm: chip revision: 1, min. application chip revision: 0
I (102) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x06ae4 ( 2
7364) map
I (121) esp_image: segment 1: paddr=0x00016b0c vaddr=0x3ffb0000 size=0x02118 (
8472) load
I (125) esp_image: segment 2: paddr=0x00018c2c vaddr=0x40080000 size=0x00400 (
1024) load
0x40080000: _WindowOverflow4 at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/co
mponents/freertos/xtensa_vectors.S:1778
I (129) esp_image: segment 3: paddr=0x00019034 vaddr=0x40080400 size=0x06fdc ( 2
8636) load
I (150) esp_image: segment 4: paddr=0x00020018 vaddr=0x400d0018 size=0x14dd4 ( 8
5460) map
0x400d0018: _stext at ??:?
I (181) esp_image: segment 5: paddr=0x00034df4 vaddr=0x400873dc size=0x0339c ( 1
3212) load
0x400873dc: rtc_clk_cpu_freq_to_pll_mhz at C:/Users/Hassan/Documents/Arduino/ESP
/esp-idf/components/soc/esp32/rtc_clk.c:496
I (193) boot: Loaded app from partition at offset 0x10000
I (193) boot: Disabling RNG early entropy source...
I (194) cpu_start: Pro cpu up.
I (197) cpu_start: Application information:
I (202) cpu_start: Project name: JoyStick_Game
I (208) cpu_start: App version: 1
I (212) cpu_start: Compile time: May 28 2020 13:23:16
I (218) cpu_start: ELF file SHA256: 03209e5cbe0d9139...
I (224) cpu_start: ESP-IDF: v4.0-280-ga3f3c7bdc-dirty
I (231) cpu_start: Starting app cpu, entry point is 0x4008105c
0x4008105c: call_start_cpu1 at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/com
ponents/esp32/cpu_start.c:271
I (0) cpu_start: App cpu up.
I (241) heap_init: Initializing. RAM available for dynamic allocation:
I (248) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (254) heap_init: At 3FFB3110 len 0002CEF0 (179 KiB): DRAM
I (260) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (267) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (273) heap_init: At 4008A778 len 00015888 (86 KiB): IRAM
I (279) cpu_start: Pro cpu start user code
I (297) spi_flash: detected chip: generic
I (298) spi_flash: flash io: dio
W (298) spi_flash: Detected size(4096k) larger than the size in the binary image
header(2048k). Using the size in the binary image header.
I (308) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
Starting the ESP32!
Guru Meditation Error: Core 0 panic'ed (IllegalInstruction). Exception was unha
ndled.
Memory dump at 0x400d4ed8: 323c6232 33803d22 bf2a0000
0x400d4ed8: uart_rx_intr_handler_default at C:/Users/Hassan/Documents/Arduino/ES
P/esp-idf/components/driver/uart.c:846
Core 0 register dump:
PC : 0x400d4ede PS : 0x00060031 A0 : 0x400825ac A1 : 0x3f
fb0640
0x400d4ede: uart_rx_intr_handler_default at C:/Users/Hassan/Documents/Arduino/ES
P/esp-idf/components/driver/uart.c:847
0x400825ac: _xt_lowint1 at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/compone
nts/freertos/xtensa_vectors.S:1153
A2 : 0x3ffb6b4c A3 : 0x00000006 A4 : 0x3ff50000 A5 : 0x00
000080
A6 : 0x00000001 A7 : 0x00000001 A8 : 0x00000006 A9 : 0x00
000006
A10 : 0x00000000 A11 : 0x3ffb778e A12 : 0x3ffb0648 A13 : 0x3f
fb7760
A14 : 0x00000003 A15 : 0x00060723 SAR : 0x0000001b EXCCAUSE: 0x00
000000
EXCVADDR: 0x00000000 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xff
ffffff
Core 0 was running in ISR context:
EPC1 : 0x400d4ede EPC2 : 0x00000000 EPC3 : 0x00000000 EPC4 : 0x00
000000
0x400d4ede: uart_rx_intr_handler_default at C:/Users/Hassan/Documents/Arduino/ES
P/esp-idf/components/driver/uart.c:847
ELF file SHA256: 03209e5cbe0d91398f2c6af37c1ab8f309088d271af452d367a0ad5c972fa91
3
Backtrace: 0x400d4edb:0x3ffb0640 0x400825a9:0x3ffb0690 0x4000bfed:0x3ffb4e20 0x4
00892c9:0x3ffb4e30 0x400d56dd:0x3ffb4e50 0x400d577e:0x3ffb4e80 0x400d6012:0x3ffb
4ec0 0x400d3cd2:0x3ffb4ef0 0x400d0c72:0x3ffb4f30 0x40087d99:0x3ffb4f50
0x400d4edb: uart_rx_intr_handler_default at C:/Users/Hassan/Documents/Arduino/ES
P/esp-idf/components/driver/uart.c:847
0x400825a9: _xt_lowint1 at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/compone
nts/freertos/xtensa_vectors.S:1153
0x400892c9: vTaskExitCritical at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/c
omponents/freertos/tasks.c:4274
0x400d56dd: uart_enable_tx_intr at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf
/components/driver/uart.c:532 (discriminator 2)
0x400d577e: uart_tx_all at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/compone
nts/driver/uart.c:1165
0x400d6012: uart_write_bytes at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/co
mponents/driver/uart.c:1195 (discriminator 2)
0x400d3cd2: loop() at c:\users\hassan\documents\arduino\esp\esp32-projects\joyst
ick_game\build/../main/main.cpp:59 (discriminator 1)
(inlined by) app_main at c:\users\hassan\documents\arduino\esp\esp32-projects\j
oystick_game\build/../main/main.cpp:49 (discriminator 1)
0x400d0c72: main_task at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/component
s/esp32/cpu_start.c:553
0x40087d99: vPortTaskWrapper at C:/Users/Hassan/Documents/Arduino/ESP/esp-idf/co
mponents/freertos/port.c:143
Code: Select all
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_event.h"
#include <driver/uart.h>
extern "C" {
void app_main();
}
inline void loop();
void app_main()
{
printf("Starting the ESP32!\n");
{
uart_config_t uartConfig;
uartConfig.baud_rate = 9600;
uartConfig.data_bits = UART_DATA_8_BITS;
uartConfig.flow_ctrl = UART_HW_FLOWCTRL_DISABLE;
uartConfig.parity = UART_PARITY_DISABLE;
uartConfig.stop_bits = UART_STOP_BITS_1;
uartConfig.use_ref_tick = false;
uartConfig.rx_flow_ctrl_thresh = 0;
ESP_ERROR_CHECK(uart_param_config(UART_NUM_1, &uartConfig));
}
ESP_ERROR_CHECK(uart_set_pin(UART_NUM_1, 10, 9, -1, -1));
ESP_ERROR_CHECK(uart_driver_install(UART_NUM_1, 1024 * 2, 1024 * 2, 0, 0, 0));
while (true) {
loop();
}
}
unsigned char readBuffer[4];
int returned;
inline void loop() {
vTaskDelay(pdMS_TO_TICKS(1000));
printf("Sent out %d\n", uart_write_bytes(UART_NUM_1, "AT;\r\n", 6));
printf("AT\n");
if ((returned = uart_read_bytes(UART_NUM_1, readBuffer, 4, (TickType_t)0)) > 0) {
printf("Received something!\n");
printf("%s\n", readBuffer);
memset(readBuffer, 0, 4);
}
printf("Returned: %d\n", returned);
}