I’m creating a mini FreeRTOS project based on ESP32.
This is my src code
#include <Arduino.h>
#define QUEUE_LEN 10u
#define BLINKED_MSG "Blinked"
#define MSG_LEN_MAX 20u
typedef int duration_t;
#if CONFIG_FREERTOS_UNICORE
static const BaseType_t app_cpu = 0;
#else
static const BaseType_t app_cpu = 1;
#endif
static QueueHandle_t blinked_queue;
static QueueHandle_t duration_queue;
void rxMsgHandlerTask(void *param)
{
}
void ledControllerTask(void *param)
{
}
void setup() {
Serial.begin(115200);
vTaskDelay(1000 / portTICK_PERIOD_MS);
Serial.println("---FreeRTOS 05 Assignment---");
// Create queue:
Serial.println("Creating queue...");
blinked_queue = xQueueCreate(QUEUE_LEN, sizeof(BLINKED_MSG));
duration_queue = xQueueCreate(QUEUE_LEN, sizeof(duration_t));
// Create task:
Serial.println("Creating task...");
xTaskCreatePinnedToCore(rxMsgHandlerTask, "Msg Handler", 1024, NULL, 1, NULL, app_cpu);
xTaskCreatePinnedToCore(ledControllerTask, "LED Controller", 1024, NULL, 1, NULL, app_cpu);
Serial.println("Initialize succesfully");
}
void loop() {
// put your main code here, to run repeatedly:
}
The code is built and uploaded successfully without any errors.
The point keep resetting after the code is uploaded, and I can not understand what the log want to imply here.
Rebooting...
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_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:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
---FreeRTOS 05 Assignment---
Creating queue...
Creating task...
Initialize succesfully
E (1024) FreeRTOS: FreeRTOS Task "Msg Handler" should not r***ERROR*** A stack overflow in task Msg Handler has been detected.
abort() was called at PC 0x4008512c on core 1
ELF file SHA256: 0000000000000000
Backtrace: 0x40084ea0:0x3ffb82b0 0x40085115:0x3ffb82d0 0x4008512c:0x3ffb82f0 0x40086a1b:0x3ffb8310 0x400883b4:0x3ffb8330 0x4008836a:0x8cfcf05c
#0 0x40084ea0:0x3ffb82b0 in invoke_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c:715
#1 0x40085115:0x3ffb82d0 in abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c:715
#2 0x4008512c:0x3ffb82f0 in vApplicationStackOverflowHook at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c:715
#3 0x40086a1b:0x3ffb8310 in vTaskSwitchContext at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c:4560
#4 0x400883b4:0x3ffb8330 in _frxt_dispatch at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/portasm.S:406
#5 0x4008836a:0x8cfcf05c in _frxt_int_exit at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/portasm.S:206
As you can see the log stated that
E (1024) FreeRTOS: FreeRTOS Task “Msg Handler” should not r***ERROR*** A stack overflow in task Msg Handler has been detected.
So what is r***ERROR***
and how should I fix this error?