Files
TCP2UART/CODING_PROMPT.md
T

3.1 KiB

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.txtTCP2UART.build_log.htm.map 为准
  2. 不要再把 viewer 当作当前构建真值
  3. 不要忽视 DIAG_TASK_ISOLATION=1 正常、=0 异常 这个前提
  4. 在新器件的第一轮复测前,避免继续做大范围代码改动
  5. 每次只做一个能明显改变故障边界的最小改动,并保留 RTT 证据

6. 可直接复制给下一位 agent 的起始 Prompt

请先阅读:`交接清单.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 后,再继续做最小化的下一步判别。