# 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 后，再继续做最小化的下一步判别。
```
