整理任务使用的cpu

新增配置:

  CONFIG_TQ_NETWORK_TASK_CORE=0
  CONFIG_TQ_LOCAL_TASK_CORE=1

  网络类任务默认固定到 Core 0:

  cp_ws_wait
  cp_wifi_state
  cp_fortune
  mm_autostart
  mm_watchdog
  mm_ws_ordered
  mm_ws_stop
  lan_http

  本地类任务默认固定到 Core 1:

  cp_model_cmd
  cp_direction
  cp_lcd_render
  cp_task_monitor
  cp_system_event
  cp_key_input
  factory_cli
  mm_local_evt

  已有音频任务保持现有配置:

  CONFIG_MULTIMODAL_AUDIO_TASK_CORE=1
This commit is contained in:
CSBOOK\44744
2026-06-25 13:54:54 +08:00
parent ec2ad4dfc9
commit 56ac1cd5d6
12 changed files with 185 additions and 60 deletions
@@ -47,6 +47,16 @@
#define CONTROL_PLANE_IDLE_TRANSPORT_SHUTDOWN_MS 30000
#define CONTROL_PLANE_WATCHDOG_TASK_STACK_SIZE 6144
#ifndef CONFIG_TQ_NETWORK_TASK_CORE
#define CONFIG_TQ_NETWORK_TASK_CORE 0
#endif
#if CONFIG_TQ_NETWORK_TASK_CORE < 0
#define CONTROL_PLANE_MULTIMODAL_NETWORK_TASK_CORE tskNO_AFFINITY
#else
#define CONTROL_PLANE_MULTIMODAL_NETWORK_TASK_CORE ((BaseType_t)CONFIG_TQ_NETWORK_TASK_CORE)
#endif
static const char *TAG = "control_plane_mm_rt";
static TaskHandle_t s_multimodal_watchdog_task;
static TaskHandle_t s_multimodal_autostart_task;
@@ -434,12 +444,13 @@ static void schedule_autostart_if_enabled(void)
}
set_multimodal_stop_flag(&s_multimodal_autostart_stop_requested, false);
if (xTaskCreate(multimodal_autostart_task,
"mm_autostart",
6144,
NULL,
4,
&s_multimodal_autostart_task) != pdPASS) {
if (xTaskCreatePinnedToCore(multimodal_autostart_task,
"mm_autostart",
6144,
NULL,
4,
&s_multimodal_autostart_task,
CONTROL_PLANE_MULTIMODAL_NETWORK_TASK_CORE) != pdPASS) {
set_multimodal_task_handle(&s_multimodal_autostart_task, NULL);
set_multimodal_start_flag(&s_multimodal_autostart_task_starting, false);
ESP_LOGW(TAG, "Auto Start task create failed");
@@ -646,12 +657,13 @@ esp_err_t control_plane_start_multimodal_client(void)
try_begin_multimodal_task_start(&s_multimodal_watchdog_task,
&s_multimodal_watchdog_task_starting)) {
set_multimodal_stop_flag(&s_multimodal_watchdog_stop_requested, false);
if (xTaskCreate(multimodal_watchdog_task,
"mm_watchdog",
CONTROL_PLANE_WATCHDOG_TASK_STACK_SIZE,
NULL,
4,
&s_multimodal_watchdog_task) != pdPASS) {
if (xTaskCreatePinnedToCore(multimodal_watchdog_task,
"mm_watchdog",
CONTROL_PLANE_WATCHDOG_TASK_STACK_SIZE,
NULL,
4,
&s_multimodal_watchdog_task,
CONTROL_PLANE_MULTIMODAL_NETWORK_TASK_CORE) != pdPASS) {
ESP_LOGE(TAG, "Watchdog task create failed");
set_multimodal_task_handle(&s_multimodal_watchdog_task, NULL);
set_multimodal_start_flag(&s_multimodal_watchdog_task_starting, false);
@@ -84,6 +84,16 @@
#define CONTROL_PLANE_LOCAL_RESPONDING_EVENT_QUEUE_LEN 4U
#define CONTROL_PLANE_MULTIMODAL_BINARY_SUMMARY_INTERVAL 200U
#ifndef CONFIG_TQ_LOCAL_TASK_CORE
#define CONFIG_TQ_LOCAL_TASK_CORE 1
#endif
#if CONFIG_TQ_LOCAL_TASK_CORE < 0
#define CONTROL_PLANE_LOCAL_RESPONDING_TASK_CORE tskNO_AFFINITY
#else
#define CONTROL_PLANE_LOCAL_RESPONDING_TASK_CORE ((BaseType_t)CONFIG_TQ_LOCAL_TASK_CORE)
#endif
#if ( configSUPPORT_STATIC_ALLOCATION == 1 ) && \
((defined(CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM) && CONFIG_FREERTOS_TASK_CREATE_ALLOW_EXT_MEM) || \
defined(CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY))
@@ -210,7 +220,7 @@ static BaseType_t create_local_responding_event_task(TaskHandle_t *out_handle)
NULL,
CONTROL_PLANE_LOCAL_RESPONDING_EVENT_TASK_PRIORITY,
out_handle,
tskNO_AFFINITY,
CONTROL_PLANE_LOCAL_RESPONDING_TASK_CORE,
MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
if (created == pdPASS) {
return pdPASS;
@@ -223,15 +233,16 @@ static BaseType_t create_local_responding_event_task(TaskHandle_t *out_handle)
NULL,
CONTROL_PLANE_LOCAL_RESPONDING_EVENT_TASK_PRIORITY,
out_handle,
tskNO_AFFINITY,
CONTROL_PLANE_LOCAL_RESPONDING_TASK_CORE,
MALLOC_CAP_INTERNAL | MALLOC_CAP_8BIT);
#else
return xTaskCreate(local_responding_event_worker,
"mm_local_evt",
CONTROL_PLANE_LOCAL_RESPONDING_EVENT_TASK_STACK_BYTES,
NULL,
CONTROL_PLANE_LOCAL_RESPONDING_EVENT_TASK_PRIORITY,
out_handle);
return xTaskCreatePinnedToCore(local_responding_event_worker,
"mm_local_evt",
CONTROL_PLANE_LOCAL_RESPONDING_EVENT_TASK_STACK_BYTES,
NULL,
CONTROL_PLANE_LOCAL_RESPONDING_EVENT_TASK_PRIORITY,
out_handle,
CONTROL_PLANE_LOCAL_RESPONDING_TASK_CORE);
#endif
}