From ed463716f6393308affb6bacc47156879d761db0 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Fri, 9 Oct 2026 17:14:52 +0800 Subject: [PATCH] =?UTF-8?q?netTask=20=E6=A0=88=201024=E2=86=92960=EF=BC=9A?= =?UTF-8?q?=E6=8C=89=E9=9D=99=E6=80=81=E6=9C=80=E5=9D=8F=E9=93=BE=E6=A0=B8?= =?UTF-8?q?=E7=AE=97=E5=B9=B6=E5=90=8C=E6=AD=A5=20.ioc/README/=E5=AE=A1?= =?UTF-8?q?=E8=AE=A1=E5=9F=BA=E7=BA=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 静态最坏链 2664B(日志主导:链上 5 帧各含 192B __con_line + 尾部 696B) 3840B 配置下余量 1176B(30.6%),过 stack_report 规则 net_drain_chip_rx scratch 静态化实测仅省 16B 栈、反增 256B BSS,已回退 .ioc FREERTOS.Tasks01 同步 960(L1 记账,重生成不丢) --- .cubemx_survival_baseline.json | 2 +- AGENTS.md | 2 +- README.md | 2 +- STM32F407-Demo.ioc | 2 +- Src/freertos.c | 8 +++++++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.cubemx_survival_baseline.json b/.cubemx_survival_baseline.json index 2b155633..f76f10be 100644 --- a/.cubemx_survival_baseline.json +++ b/.cubemx_survival_baseline.json @@ -16,7 +16,7 @@ "hal-iwdg-enabled": "c8c9b916b05464b9", "ioc-keepusercode": "b5bea41b6c623f7c", "ioc-iwdg-present": "d3a6e667048c95db", - "ioc-task-stacks": "72969c5a8569f4d2" + "ioc-task-stacks": "3262f737d92dcbee" }, "_note": "CubeMX 存活审计基线;改动用 --write 重建" } diff --git a/AGENTS.md b/AGENTS.md index 4dc67b14..88b8290e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -58,7 +58,7 @@ STM32F407ZGTx @168MHz(HSE 8MHz → PLL M=4/N=168/P=2);**仅 Keil MDK-ARM v | Task | 栈 (words) | 优先级 | |---|---|---| | defaultTask | 1024 | Normal | -| netTask | 1024 | Normal | +| netTask | 960 | Normal | | ftpTask | 1024 | Normal | | testTask | 2048 | BelowNormal | | uiTask | 4096 | BelowNormal | diff --git a/README.md b/README.md index 8c7b6754..b1100eb2 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ main.c | 任务 | 栈大小 | 优先级 | 职责 | |------|--------|--------|------| | defaultTask | 1024 words | Normal | FTL + FatFS 挂载、配置引擎属主、syslog 唯一写者 | -| netTask | 1024 words | Normal | 网络初始化 + CH395F 轮询 | +| netTask | 960 words | Normal | 网络初始化 + CH395F 轮询 | | ftpTask | 1024 words | Normal | FTP 服务(等待网络+存储就绪) | | testTask | 2048 words | BelowNormal | 硬件测试入口 | | uiTask | 4096 words | BelowNormal | LVGL UI 界面 | diff --git a/STM32F407-Demo.ioc b/STM32F407-Demo.ioc index 30a4299a..671bca3b 100644 --- a/STM32F407-Demo.ioc +++ b/STM32F407-Demo.ioc @@ -73,7 +73,7 @@ FREERTOS.Events01=sys_evt,Dynamic,NULL FREERTOS.FootprintOK=true FREERTOS.IPParameters=Tasks01,configENABLE_FPU,FootprintOK,configTOTAL_HEAP_SIZE,Queues01,Events01 FREERTOS.Queues01=netMsgQueue,8,net_msg_t,0,Dynamic,NULL,NULL -FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;netTask,24,1024,StartNetTask,Default,NULL,Dynamic,NULL,NULL;ftpTask,24,1024,StartFtpTask,As weak,NULL,Dynamic,NULL,NULL;testTask,16,2048,start_test_task,As weak,NULL,Dynamic,NULL,NULL;uiTask,16,4096,StartUiTask,Default,NULL,Dynamic,NULL,NULL +FREERTOS.Tasks01=defaultTask,24,1024,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL;netTask,24,960,StartNetTask,Default,NULL,Dynamic,NULL,NULL;ftpTask,24,1024,StartFtpTask,As weak,NULL,Dynamic,NULL,NULL;testTask,16,2048,start_test_task,As weak,NULL,Dynamic,NULL,NULL;uiTask,16,4096,StartUiTask,Default,NULL,Dynamic,NULL,NULL FREERTOS.configENABLE_FPU=1 FREERTOS.configTOTAL_HEAP_SIZE=49152 File.Version=6 diff --git a/Src/freertos.c b/Src/freertos.c index 8312bf15..252c150e 100644 --- a/Src/freertos.c +++ b/Src/freertos.c @@ -80,7 +80,13 @@ const osThreadAttr_t defaultTask_attributes = { osThreadId_t netTaskHandle; const osThreadAttr_t netTask_attributes = { .name = "netTask", - .stack_size = 1024 * 4, + /* 1024→960: 静态最坏链 2664B(发送停滞→断连→重监听→SPI故障→日志尾,真实直调链, + * 日志主导:链上 5 帧各含 192B __con_line + 尾部 ~696B);3840B 配置余量 1176B + * (30.6%),过 stack_report 规则(≥max(1024B ISR, 30%))。运行时水位仅 ~1.1KB + * (错误尾未触发,不可作依据)。曾试 net_drain_chip_rx scratch 静态化,实测仅省 + * 16B 栈(ARMCC 已叠放不重叠局部量)反增 256B BSS,已回退——见 net_socket.c 注释。 + * ⚠ 注释位于 .ioc 生成区之外,CubeMX 重生成会丢(值本身在 FREERTOS.Tasks01 里,不丢)。 */ + .stack_size = 960 * 4, .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for ftpTask */