perf(memory): reduce factory CLI and LCD internal RAM use

This commit is contained in:
chenjintao
2026-08-26 16:34:29 +08:00
parent f92915057a
commit b498873294
4 changed files with 26 additions and 13 deletions
@@ -19,6 +19,7 @@
#include <string.h> #include <string.h>
#include "domain.h" #include "domain.h"
#include "esp_heap_caps.h"
#include "esp_log.h" #include "esp_log.h"
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/portmacro.h" #include "freertos/portmacro.h"
@@ -34,7 +35,7 @@
#define FACTORY_CLI_READ_TIMEOUT_MS 100 #define FACTORY_CLI_READ_TIMEOUT_MS 100
#define FACTORY_CLI_RESET_REPLY_DELAY_MS 100 #define FACTORY_CLI_RESET_REPLY_DELAY_MS 100
#ifndef CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES #ifndef CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES
#define CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES (10U * 1024U) #define CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES (7U * 1024U)
#endif #endif
#define FACTORY_CLI_WORKER_STACK_BYTES CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES #define FACTORY_CLI_WORKER_STACK_BYTES CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES
@@ -341,11 +342,18 @@ static void handle_get_wifi(void)
return; return;
} }
char json[FACTORY_CLI_WIFI_JSON_MAX_LEN] = {0}; char *json = (char *)heap_caps_calloc(1,
FACTORY_CLI_WIFI_JSON_MAX_LEN,
MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT);
if (json == NULL) {
cli_write_error("no_memory");
return;
}
size_t offset = 0; size_t offset = 0;
char prefix[48] = {0}; char prefix[48] = {0};
snprintf(prefix, sizeof(prefix), "{\"count\":%u,\"networks\":[", (unsigned)networks.count); snprintf(prefix, sizeof(prefix), "{\"count\":%u,\"networks\":[", (unsigned)networks.count);
bool valid = json_append_text(json, sizeof(json), &offset, prefix); bool valid = json_append_text(json, FACTORY_CLI_WIFI_JSON_MAX_LEN, &offset, prefix);
for (size_t i = 0; valid && i < networks.count; ++i) { for (size_t i = 0; valid && i < networks.count; ++i) {
char item_prefix[40] = {0}; char item_prefix[40] = {0};
snprintf(item_prefix, snprintf(item_prefix,
@@ -353,20 +361,25 @@ static void handle_get_wifi(void)
"%s{\"priority\":%u,\"ssid\":", "%s{\"priority\":%u,\"ssid\":",
i == 0U ? "" : ",", i == 0U ? "" : ",",
(unsigned)i); (unsigned)i);
valid = json_append_text(json, sizeof(json), &offset, item_prefix) && valid = json_append_text(json,
FACTORY_CLI_WIFI_JSON_MAX_LEN,
&offset,
item_prefix) &&
json_append_escaped_string(json, json_append_escaped_string(json,
sizeof(json), FACTORY_CLI_WIFI_JSON_MAX_LEN,
&offset, &offset,
networks.ssids[i]) && networks.ssids[i]) &&
json_append_text(json, sizeof(json), &offset, "}"); json_append_text(json, FACTORY_CLI_WIFI_JSON_MAX_LEN, &offset, "}");
} }
valid = valid && json_append_text(json, sizeof(json), &offset, "]}"); valid = valid && json_append_text(json, FACTORY_CLI_WIFI_JSON_MAX_LEN, &offset, "]}");
if (!valid) { if (!valid) {
heap_caps_free(json);
cli_write_error("wifi_response_too_large"); cli_write_error("wifi_response_too_large");
return; return;
} }
cli_write_line(json); cli_write_line(json);
heap_caps_free(json);
cli_write_ok(); cli_write_ok();
} }
@@ -21,7 +21,7 @@
#include "sdkconfig.h" #include "sdkconfig.h"
#ifndef CONFIG_TQ_LCD_RENDER_TASK_STACK_BYTES #ifndef CONFIG_TQ_LCD_RENDER_TASK_STACK_BYTES
#define CONFIG_TQ_LCD_RENDER_TASK_STACK_BYTES (10U * 1024U) #define CONFIG_TQ_LCD_RENDER_TASK_STACK_BYTES (8U * 1024U)
#endif #endif
#define CONTROL_PLANE_MODEL_CMD_TASK_STACK_SIZE (1024 * 4) #define CONTROL_PLANE_MODEL_CMD_TASK_STACK_SIZE (1024 * 4)
+3 -3
View File
@@ -728,7 +728,7 @@ menu "TQ Cat Configuration"
config TQ_LCD_RENDER_TASK_STACK_BYTES config TQ_LCD_RENDER_TASK_STACK_BYTES
int "LCD render task stack (bytes)" int "LCD render task stack (bytes)"
default 10240 default 8192
range 8192 16384 range 8192 16384
depends on TQ_SCREEN_ENABLE depends on TQ_SCREEN_ENABLE
help help
@@ -1350,8 +1350,8 @@ menu "TQ Cat Configuration"
config TQ_FACTORY_CLI_TASK_STACK_BYTES config TQ_FACTORY_CLI_TASK_STACK_BYTES
int "Factory CLI task stack (bytes)" int "Factory CLI task stack (bytes)"
default 10240 default 7168
range 8192 16384 range 7168 16384
depends on TQ_FACTORY_CLI_ENABLE depends on TQ_FACTORY_CLI_ENABLE
help help
Stack size in bytes for the serial factory provisioning worker. Stack size in bytes for the serial factory provisioning worker.
+2 -2
View File
@@ -40,7 +40,7 @@ CONFIG_TQ_BOOT_SOUND_TIMEOUT_MS=3000
CONFIG_TQ_BOOT_SOUND_FILE="boot.opus" CONFIG_TQ_BOOT_SOUND_FILE="boot.opus"
CONFIG_TQ_NETWORK_TASK_CORE=0 CONFIG_TQ_NETWORK_TASK_CORE=0
CONFIG_TQ_LOCAL_TASK_CORE=1 CONFIG_TQ_LOCAL_TASK_CORE=1
CONFIG_TQ_LCD_RENDER_TASK_STACK_BYTES=10240 CONFIG_TQ_LCD_RENDER_TASK_STACK_BYTES=8192
CONFIG_TQ_TASK_MONITOR_INTERVAL_MS=30000 CONFIG_TQ_TASK_MONITOR_INTERVAL_MS=30000
CONFIG_TQ_TASK_MONITOR_MAX_TASKS=64 CONFIG_TQ_TASK_MONITOR_MAX_TASKS=64
CONFIG_TQ_MEMORY_MONITOR_ENABLE=y CONFIG_TQ_MEMORY_MONITOR_ENABLE=y
@@ -200,7 +200,7 @@ CONFIG_TQ_MULTIMODAL_WATCHDOG_TASK_STACK_BYTES=6144
# CONFIG_MULTIMODAL_AUTH_BYPASS_TOKEN_SERVICE is not set # CONFIG_MULTIMODAL_AUTH_BYPASS_TOKEN_SERVICE is not set
CONFIG_AUTH_V2_ENABLE=y CONFIG_AUTH_V2_ENABLE=y
CONFIG_TQ_FACTORY_CLI_ENABLE=y CONFIG_TQ_FACTORY_CLI_ENABLE=y
CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES=10240 CONFIG_TQ_FACTORY_CLI_TASK_STACK_BYTES=7168
CONFIG_MULTIMODAL_UPSTREAM_MODE="push2talk" CONFIG_MULTIMODAL_UPSTREAM_MODE="push2talk"
CONFIG_MULTIMODAL_PTT_BUTTON_GPIO=3 CONFIG_MULTIMODAL_PTT_BUTTON_GPIO=3
CONFIG_MULTIMODAL_PTT_BUTTON_ACTIVE_LEVEL=0 CONFIG_MULTIMODAL_PTT_BUTTON_ACTIVE_LEVEL=0