diff --git a/components/esp32/Kconfig b/components/esp32/Kconfig index 154ee4150e..36c6f7af8e 100644 --- a/components/esp32/Kconfig +++ b/components/esp32/Kconfig @@ -24,19 +24,19 @@ config WIFI_AUTO_CONNECT If station is enabled, and station config is set, this will enable WiFi station auto connect when WiFi startup. -config WIFI_ENENT_QUEUE_SIZE - int "WiFi event queue size" +config SYSTEM_EVENT_QUEUE_SIZE + int "system event queue size" default 32 depends on WIFI_ENABLED help - Config WiFi event queue size in different application. + Config system event queue size in different application. -config WIFI_EVENT_TASK_STACK_SIZE - int "WiFi event task stack size" +config SYSTEM_EVENT_TASK_STACK_SIZE + int "system event task stack size" default 2048 depends on WIFI_ENABLED help - Config WiFi event task stack size in different application. + Config system event task stack size in different application. config NEWLIB_STDOUT_ADDCR diff --git a/components/esp32/event.c b/components/esp32/event.c index 53ffd642eb..c1d9d4e73b 100644 --- a/components/esp32/event.c +++ b/components/esp32/event.c @@ -19,6 +19,7 @@ #include "esp_err.h" #include "esp_wifi.h" #include "esp_event.h" +#include "esp_task.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -357,9 +358,9 @@ esp_err_t esp_event_init(system_event_cb_t cb, void *ctx) g_event_handler_cb = cb; g_event_ctx = ctx; - g_event_handler = xQueueCreate(CONFIG_WIFI_ENENT_QUEUE_SIZE, sizeof(system_event_t)); + g_event_handler = xQueueCreate(CONFIG_SYSTEM_EVENT_QUEUE_SIZE, sizeof(system_event_t)); - xTaskCreatePinnedToCore(esp_system_event_task, "eventTask", CONFIG_WIFI_EVENT_TASK_STACK_SIZE, NULL, 5, NULL, 0); // TODO: rearrange task priority + xTaskCreatePinnedToCore(esp_system_event_task, "eventTask", ESP_TASKD_EVENT_STACK, NULL, ESP_TASKD_EVENT_PRIO, NULL, 0); return ESP_OK; } diff --git a/components/esp32/include/esp_task.h b/components/esp32/include/esp_task.h new file mode 100644 index 0000000000..6d98bf1983 --- /dev/null +++ b/components/esp32/include/esp_task.h @@ -0,0 +1,54 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/* Notes: + * 1. Put all task priority and stack size definition in this file + * 2. If the task priority is less than 10, use ESP_TASK_PRIO_MIN + X style, + * otherwise use ESP_TASK_PRIO_MIN - X style + * 3. If this is a daemon task, the macro prifix is ESP_TASKD_, otherwise + * it's ESP_TASK_ + * 4. If the configMAX_PRIORITIES is modified, please make all prority are + * greater than 0 + * 5. Make sure esp_task.h is consistent between wifi lib and idf + */ + +#ifndef _ESP_TASK_H_ +#define _ESP_TASK_H_ + +#include "sdkconfig.h" + +#define ESP_TASK_PRIO_MAX (configMAX_PRIORITIES) +#define ESP_TASK_PRIO_MIN (0) + +/* Wifi library task */ +#define ESP_TASKD_WATCHDOG_PRIO (ESP_TASK_PRIO_MAX - 1) +#define ESP_TASKD_WATCHDOG_STACK 2048 +#define ESP_TASK_WPA2_PRIO (ESP_TASK_PRIO_MAX - 1) +#define ESP_TASK_WPA2_STACK 2048 +#define ESP_TASKD_WIFI_PRIO (ESP_TASK_PRIO_MAX - 2) +#define ESP_TASKD_WIFI_STACK 8196 +#define ESP_TASKD_WIFI_TIMER_PRIO (ESP_TASK_PRIO_MAX - 3) +#define ESP_TASKD_WIFI_TIMER_STACK 2048 +#define ESP_TASK_WPS_PRIO (ESP_TASK_PRIO_MIN + 2) +#define ESP_TASK_WPS_STACK 2048 + +/* idf task */ +#define ESP_TASKD_EVENT_PRIO (ESP_TASK_PRIO_MAX - 5) +#define ESP_TASKD_EVENT_STACK CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE +#define ESP_TASK_WIFI_STARTUP_PRIO (ESP_TASK_PRIO_MAX - 7) +#define ESP_TASK_WIFI_STARTUP_STACK 4096 +#define ESP_TASK_TCPIP_PRIO (ESP_TASK_PRIO_MAX - 7) +#define ESP_TASK_TCPIP_STACK 2048 + +#endif diff --git a/components/esp32/wifi.c b/components/esp32/wifi.c index 9900069759..fd44d30d00 100644 --- a/components/esp32/wifi.c +++ b/components/esp32/wifi.c @@ -19,6 +19,7 @@ #include "esp_err.h" #include "esp_wifi.h" #include "esp_event.h" +#include "esp_task.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -107,7 +108,7 @@ esp_err_t esp_wifi_startup(wifi_startup_cb_t cb, void *ctx) startup_cb = cb; startup_ctx = ctx; - xTaskCreatePinnedToCore(esp_wifi_task, "wifiTask", 4096, NULL, 5, NULL, 0);// TODO: rearrange task priority + xTaskCreatePinnedToCore(esp_wifi_task, "wifiTask", ESP_TASK_WIFI_STARTUP_STACK, NULL, ESP_TASK_WIFI_STARTUP_PRIO, NULL, 0); return ESP_OK; } diff --git a/components/lwip/include/lwip/port/lwipopts.h b/components/lwip/include/lwip/port/lwipopts.h index 26d3c8dcbd..65b3889f0b 100755 --- a/components/lwip/include/lwip/port/lwipopts.h +++ b/components/lwip/include/lwip/port/lwipopts.h @@ -33,6 +33,7 @@ #define __LWIPOPTS_H__ #include +#include "esp_task.h" /* Enable all Espressif-only options */ #define LWIP_ESP8266 @@ -323,14 +324,14 @@ extern unsigned char misc_prof_get_tcp_snd_buf(void); * The stack size value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ -#define TCPIP_THREAD_STACKSIZE 2048 //not ok:384 +#define TCPIP_THREAD_STACKSIZE ESP_TASK_TCPIP_STACK /** * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. * The priority value itself is platform-dependent, but is passed to * sys_thread_new() when the thread is created. */ -#define TCPIP_THREAD_PRIO (configMAX_PRIORITIES-5) +#define TCPIP_THREAD_PRIO ESP_TASK_TCPIP_PRIO /** * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages