From: 孙春阳 Date: Tue, 21 Oct 2025 03:10:01 +0000 (+0800) Subject: AT^TASKSWITCHPRINT=1时添加AT^TASKSILENTADD, AT^TASKSILENTDEL, AT^TASKSILENTSHOW 三个指令方便调试功耗 X-Git-Tag: V1.0.9_20251128_194606_LN~182^2~2^2~2 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=f65c9ba2cd42076bf5f98246a8b16cbd5abc57db;p=mirrors%2FFD230.git AT^TASKSWITCHPRINT=1时添加AT^TASKSILENTADD, AT^TASKSILENTDEL, AT^TASKSILENTSHOW 三个指令方便调试功耗 --- diff --git a/code/sdk/application/wstp/at_service/app/app_at_process.c b/code/sdk/application/wstp/at_service/app/app_at_process.c index 3ab75533f..e1f654eba 100644 --- a/code/sdk/application/wstp/at_service/app/app_at_process.c +++ b/code/sdk/application/wstp/at_service/app/app_at_process.c @@ -1351,6 +1351,61 @@ uint32_t mcu_task_switch_print_ctrl(uint8_t *para, uint32_t para_len) return ERRCODE_SUCC; } +uint32_t mcu_task_silent_add(uint8_t *para, uint32_t para_len) +{ + unused(para_len); + + if (para == NULL) { + wstp_print("Usage: AT^TASKSILENTADD=\r\n"); + wstp_print(" task_id: Task ID to add to silent list\r\n"); + return ERRCODE_FAIL; + } + + uint32_t task_id = atoi((char*)para); + + extern void silent_task_id_add(uint32_t task_id); + silent_task_id_add(task_id); + + wstp_print("Task ID %u added to silent list\r\n", task_id); + + return ERRCODE_SUCC; +} + +uint32_t mcu_task_silent_del(uint8_t *para, uint32_t para_len) +{ + unused(para_len); + + if (para == NULL) { + wstp_print("Usage: AT^TASKSILENTDEL=\r\n"); + wstp_print(" task_id: Task ID to remove from silent list\r\n"); + return ERRCODE_FAIL; + } + + uint32_t task_id = atoi((char*)para); + + extern void silent_task_id_remove(uint32_t task_id); + silent_task_id_remove(task_id); + + wstp_print("Task ID %u removed from silent list\r\n", task_id); + + return ERRCODE_SUCC; +} + +uint32_t mcu_task_silent_show(uint8_t *para, uint32_t para_len) +{ + unused(para); + unused(para_len); + + wstp_print("========== Silent Task ID List ==========\r\n"); + + extern void silent_task_id_dump(void); + silent_task_id_dump(); + + wstp_print("=========================================\r\n"); + + return ERRCODE_SUCC; +} + uint32_t mcu_pm_cldo1_power_down(uint8_t *para, uint32_t para_len) { unused(para); @@ -2922,6 +2977,9 @@ static const app_process_table g_app_funcs[] = { #ifdef CFG_DRIVERS_SDIO { SDIOTEST, mcu_sdio_test}, #endif + { TASKSILENTADD, mcu_task_silent_add }, + { TASKSILENTDEL, mcu_task_silent_del }, + { TASKSILENTSHOW, mcu_task_silent_show }, }; void app_at_process(uint8_t *data, uint32_t data_len) diff --git a/code/sdk/application/wstp/at_service/app/app_cmd_manager.c b/code/sdk/application/wstp/at_service/app/app_cmd_manager.c index 1bc3008dd..b73a973ca 100644 --- a/code/sdk/application/wstp/at_service/app/app_cmd_manager.c +++ b/code/sdk/application/wstp/at_service/app/app_cmd_manager.c @@ -409,6 +409,38 @@ static uint32_t app_test_task_switch_print(uint8_t *para, uint32_t para_len, cha return ERRCODE_SUCC; } +static uint32_t app_task_silent_add(uint8_t *para, uint32_t para_len, char *str_cmd) +{ + unused(str_cmd); + if (para == NULL) { + return ERRCODE_FAIL; + } + + app_pkg_msg_send(TASKSILENTADD, DIAG_CONTROL_FALSE, para, para_len); + return ERRCODE_SUCC; +} + +static uint32_t app_task_silent_del(uint8_t *para, uint32_t para_len, char *str_cmd) +{ + unused(str_cmd); + if (para == NULL) { + return ERRCODE_FAIL; + } + + app_pkg_msg_send(TASKSILENTDEL, DIAG_CONTROL_FALSE, para, para_len); + return ERRCODE_SUCC; +} + +static uint32_t app_task_silent_show(uint8_t *para, uint32_t para_len, char *str_cmd) +{ + unused(str_cmd); + unused(para); + unused(para_len); + + app_pkg_msg_send(TASKSILENTSHOW, DIAG_CONTROL_FALSE, NULL, 0); + return ERRCODE_SUCC; +} + static uint32_t app_test_pm_lcd_off(uint8_t *para, uint32_t para_len, char *str_cmd) { unused(str_cmd); @@ -1234,6 +1266,9 @@ static const at_cmd_table_t g_app_cmd[] = { #ifdef CFG_DRIVERS_SDIO { "AT^SDIOTEST", app_sdio_test, "" }, #endif + { "AT^TASKSILENTADD", app_task_silent_add, "" }, + { "AT^TASKSILENTDEL", app_task_silent_del, "" }, + { "AT^TASKSILENTSHOW", app_task_silent_show, "" }, }; at_cmd_table_t *get_app_cmd_table(uint32_t *cmd_count) diff --git a/code/sdk/application/wstp/at_service/app/app_msg_manager.h b/code/sdk/application/wstp/at_service/app/app_msg_manager.h index 286ac9602..5407a1385 100644 --- a/code/sdk/application/wstp/at_service/app/app_msg_manager.h +++ b/code/sdk/application/wstp/at_service/app/app_msg_manager.h @@ -119,6 +119,9 @@ typedef enum { SDIOTEST = 0x58, PMVETOGET = 0x59, // 新增:获取PM投票信息 TASKSWITCHPRINT = 0x5A, // 新增:控制任务切换打印 + TASKSILENTADD = 0x5B, // 新增:添加静默任务ID + TASKSILENTDEL = 0x5C, // 新增:删除静默任务ID + TASKSILENTSHOW = 0x5D, // 新增:显示静默任务列表 MSG_ID_MAX_BUTT, } app_msg_id; diff --git a/code/sdk/kernel/liteos/liteos_v207.1.0/Huawei_LiteOS/kernel/base/sched/sched_sq/los_sched.c b/code/sdk/kernel/liteos/liteos_v207.1.0/Huawei_LiteOS/kernel/base/sched/sched_sq/los_sched.c index 537023e4e..c3306cbb0 100644 --- a/code/sdk/kernel/liteos/liteos_v207.1.0/Huawei_LiteOS/kernel/base/sched/sched_sq/los_sched.c +++ b/code/sdk/kernel/liteos/liteos_v207.1.0/Huawei_LiteOS/kernel/base/sched/sched_sq/los_sched.c @@ -42,6 +42,7 @@ /* 全局变量:控制任务切换打印开关(默认关闭)*/ static volatile UINT32 g_taskSwitchPrintEnable = 0; +UINT32 silent_task_id_list[24] = {0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF}; /* 获取任务切换打印开关状态 */ UINT32 OsTaskSwitchPrintIsEnabled(VOID) @@ -60,6 +61,46 @@ VOID OsTaskSwitchPrintSetEnable(UINT32 enable) } } +BOOL task_id_is_silent(UINT32 task_id) +{ + for (int i = 0; i < 24; i++) { + if (silent_task_id_list[i] == task_id) { + return TRUE; + } + } + return FALSE; +} +void silent_task_id_dump(VOID) +{ + for (int i = 0; i < 24; i++) { + if (silent_task_id_list[i] != 0xFFFFFFFF) { + printf("silent_task_id_list[%d] = %u\n", i, silent_task_id_list[i]); + } + } +} +void silent_task_id_add(UINT32 task_id) +{ + if(task_id_is_silent(task_id)) { + return; + } + for (int i = 0; i < 24; i++) { + if (silent_task_id_list[i] == 0xFFFFFFFF) { + silent_task_id_list[i] = task_id; + break; + } + } +} +void silent_task_id_remove(UINT32 task_id) +{ + for (int i = 0; i < 24; i++) { + if (silent_task_id_list[i] == task_id) { + silent_task_id_list[i] = 0xFFFFFFFF; + break; + } + } +} + + VOID OsSchedResched(VOID) { LosTaskCB *runTask = NULL; @@ -94,11 +135,13 @@ VOID OsSchedResched(VOID) /* 任务切换打印(由全局开关控制)*/ if (g_taskSwitchPrintEnable) { - const char *runTaskName = (runTask->taskName != NULL) ? runTask->taskName : "NULL"; - const char *newTaskName = (newTask->taskName != NULL) ? newTask->taskName : "NULL"; - printf("[TASK_SWITCH] %s(ID:%u) -> %s(ID:%u)\n", - runTaskName, runTask->taskId, - newTaskName, newTask->taskId); + if (!(task_id_is_silent(runTask->taskId) || task_id_is_silent(newTask->taskId))) { + const char *runTaskName = (runTask->taskName != NULL) ? runTask->taskName : "NULL"; + const char *newTaskName = (newTask->taskName != NULL) ? newTask->taskName : "NULL"; + printf("[TASK_SWITCH] %s(ID:%u) -> %s(ID:%u)\n", + runTaskName, runTask->taskId, + newTaskName, newTask->taskId); + } } OsTaskTimeUpdateHook(runTask->taskId);