# TCP2UART 当前交接 Prompt ## 1. 用途 本文件不再承担“项目从零编码任务说明”的职责,而是作为**当前工程的交接入口 Prompt**使用。 长期有效的工程知识、调试经验和现状说明,已经分别固化到其它文档,不再全部堆在本文件中。 --- ## 2. 接手后先读什么 请按以下顺序阅读: 1. `交接清单.md` —— 当前状态、接下来要做什么、怎么做 2. `工程调试指南.md` —— 已固化的调试经验与当前工程真实边界 3. `项目技术实现.md` —— 架构、任务模型、协议模型 4. `项目需求说明.md` 5. `AT固件使用手册.md` --- ## 3. 当前工程一句话状态 当前项目已从早期 bring-up 阶段推进到 full-task 运行期调试阶段;`DIAG_TASK_ISOLATION=1` 稳定,`DIAG_TASK_ISOLATION=0` 仍会卡死,但故障边界已被多轮 discriminator 推进到 enabled 的 `netconn_*` 路径。当前在 `STM32F103RCT6` 上的 RAM/heap 余量过低,已被认定为调试噪声的主要来源之一,因此推荐下一阶段先切到 pin2pin 的 `STM32F103RDT6` 再继续分析。 --- ## 4. 下一位 agent 的当前目标 请不要把当前任务理解成“立刻继续加逻辑修补”。当前更重要的是: 1. 完成 `STM32F103RCT6 -> STM32F103RDT6` 目标切换 2. 使用真实 Keil 日志重新确认构建成功 3. 在新器件上复测当前代码基线 4. 比较: - 故障是否消失 - 是否明显后移 - 是否仍停在相同 enabled path 5. 只有拿到新器件上的第一轮 RTT / heap / HWM 证据后,再决定下一步最小化改动 --- ## 5. 工作约束 1. 构建真值以 `MDK-ARM/build_capture.txt`、`TCP2UART.build_log.htm`、`.map` 为准 2. 不要再把 viewer 当作当前构建真值 3. 不要忽视 `DIAG_TASK_ISOLATION=1 正常、=0 异常` 这个前提 4. 在新器件的第一轮复测前,避免继续做大范围代码改动 5. 每次只做一个能明显改变故障边界的最小改动,并保留 RTT 证据 --- ## 6. 可直接复制给下一位 agent 的起始 Prompt ```text 请先阅读:`交接清单.md`、`工程调试指南.md`、`项目技术实现.md`。 当前项目是 STM32F103 + FreeRTOS + lwIP + CH390 的 TCP↔UART 透传工程。此前在 `STM32F103RCT6` 上调试时,`DIAG_TASK_ISOLATION=1` 稳定,`DIAG_TASK_ISOLATION=0` 仍会卡死,但故障边界已被多轮 discriminator 推进到 enabled 的 `netconn_*` 路径。当前最关键的资源事实是:在 `RCT6` 上 full-task 创建完四个 TCP 任务后,FreeRTOS heap 只剩约 944 bytes,静态 RAM 也已逼近物理上限,因此当前推荐先切换到 pin2pin 的 `STM32F103RDT6`,保持现有代码基线基本不变,先完成第一轮换片复测,再根据新器件上的 RTT、free/min heap 和 enabled `S1/C1` 行为决定下一步。 你的当前目标不是立刻修完所有问题,而是: 1. 完成 `RCT6 -> RDT6` 目标切换; 2. 用真实 Keil 日志确认构建通过; 3. 在新器件上复测当前代码,判断故障是否消失、后移或保持原状; 4. 仅在拿到新器件上的第一轮 RTT 后,再继续做最小化的下一步判别。 ```