From 90a2ab4ff83f901ab79fbab24a71f3ecbb133f02 Mon Sep 17 00:00:00 2001 From: coffee Date: Mon, 22 Sep 2025 20:55:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E4=BF=AE=E6=94=B9=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=92=8CRPC=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/HDLog.h | 1 + src/HDLog.c | 7 ++++++- src/HDRPC.c | 5 +++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/HDLog.h b/include/HDLog.h index 6b460ac..5fd8e9a 100644 --- a/include/HDLog.h +++ b/include/HDLog.h @@ -169,6 +169,7 @@ void HDLogDebugSetGetTask(HDLogGetTaskType_t getTask); * @param size 栈大小 */ void HDLogDebugInitStackAddr(unsigned long currTask, uint32_t size); +void HDLogDebugInitStackAddrInfo(unsigned long currTask, uint32_t size, uint32_t stackAddr); /** * @brief 删除当前任务的栈大小记录 diff --git a/src/HDLog.c b/src/HDLog.c index e6bb0e1..7bce0c1 100644 --- a/src/HDLog.c +++ b/src/HDLog.c @@ -524,6 +524,11 @@ void HDLogDebugSetGetTask(HDLogGetTaskType_t getTask) void HDLogDebugInitStackAddr(unsigned long currTask, uint32_t size) { void *start = 0; + HDLogDebugInitStackAddrInfo(currTask, size, (uint32_t)&start - sizeof(void *)); +} + +void HDLogDebugInitStackAddrInfo(unsigned long currTask, uint32_t size, uint32_t stackAddr) +{ for (int i = 0; i < USE_CHECK_STACK_NUM; ++i) { if (sStackCheckInfo[i].enable) @@ -532,7 +537,7 @@ void HDLogDebugInitStackAddr(unsigned long currTask, uint32_t size) } sStackCheckInfo[i].enable = 1; - sStackCheckInfo[i].stackAddr = (unsigned long)&start - sizeof(void *); + sStackCheckInfo[i].stackAddr = stackAddr; sStackCheckInfo[i].stackSize = size; sStackCheckInfo[i].taskID = currTask; break; diff --git a/src/HDRPC.c b/src/HDRPC.c index 998d0e4..3d69ec5 100644 --- a/src/HDRPC.c +++ b/src/HDRPC.c @@ -463,6 +463,11 @@ uint8_t HDRPCParseArgs(void *data, uint16_t len, HDRPCSession *session) uint8_t _HDRPCCheckArgs(HDRPCSession *session, uint8_t *type, uint8_t index, uint8_t len) { for (uint8_t i = index; i < len; ++i) { + if (i >= session->index) { + LogD("Check type[%d] index[%d] len[%d] error", type[i], i, session->index); + return 0; + } + if (session->args[i].type != type[i]) { LogD("Check index[%d] Type[0x%x][0x%x] faild", i, session->args[i].type, type[i]); return 0;