docs(待处理): 删除已闭环条目并重组登记簿结构
- 删除已完成内容:§1 的 P0/P2 行、§3.1 的 P1-8 已闭环 stub、 §3.2 的 P2 销项索引表与"已销项 P2"列表、§3.3 的"已销项 P3"列表、 §4 的 P0-1 已闭环说明段 - 重组:§3 重编号(P3→3.2、登记簿→3.3、测试与架构专项→3.4, 子节 3.4.1~3.4.4);§8 维护约定的章节引用同步 - 同步清理失效编号引用(P2-12/P1-8);实机测试实施指南溯源表 的 P1-8 上游改为"原台账项,已闭环" - pre-commit 全通过(doc-links 等)
This commit is contained in:
+16
-49
@@ -37,10 +37,8 @@
|
||||
|
||||
| 级别 | 数量 | 关键项 |
|
||||
|---|---|---|
|
||||
| **P0** | 0 | **P0-1 已闭环**:2026-09-18 修复(cfg_file 临时缓冲改走 FreeRTOS 堆)+ 2026-10-03 真机 `@test` PASS + 2026-10-04 独立复跑 PASS(见 §4 说明与 `子系统设计/配置文件设计说明.md` v1.13) |
|
||||
| **P1** | 2 (+1 收尾) | **P1-1 ADC 采样路径产品构建中死亡**;**P1-7 MAC 写入顺序**(待 CH395F 手册 §9.2.1);P1-10 测试固件构建实测闭环(主体已闭环,见 §3.1) |
|
||||
| **P2** | 0 | **全部销项(2026-10-04)**:P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环,明细与证据见 §3.2 |
|
||||
| **P3** | 6 | 卫生项:P3-1/2/4/6/8/11(其余已销项),可随其他修改顺手处理 |
|
||||
| **P3** | 6 | 卫生项:P3-1/2/4/6/8/11,可随其他修改顺手处理 |
|
||||
| 登记簿 | 10 | 网络:N-2(49s 日志静默,**低风险观察项**)、N-3(L5 基线重验)、N-4(pending 二期)、N-16(A2/A4 专项负向验证)、N-17(探针窗口心跳缺口);存储/日志:**S-1(defaultTask 栈余量 10%,需尽快处理)**、S-2(boot_log 存档)、S-3(USART1 TX-only 根治)、S-4(dhara 重试自旋)、S-5(可选全序列卷锁) |
|
||||
| 测试/基础设施 | 5 | T-7(CI runner 未就绪)+ 测试架构专项 **S12**(断言宏)、**S1-c**(可选单测)、**A-4**(采集链路测试约束)、**A-5 残余**(CI 体积门禁盲区) |
|
||||
|
||||
@@ -92,7 +90,7 @@
|
||||
| **C1** | **pending 二期(ACCEPT + SEND)** | 沿一期机制扩展;同期消化 E-25(net_select 语义)、E-24/E-27/E-28(跨上下文收口);基线重锁 + 探针族扩充 + 看门狗接 selftest。**设计基线见 §5.1** | 第二档 #2 / N-4 |
|
||||
| **C3** | **存储侧日志管线**(消化 N-2) | 丢弃可观测性**代码已具备**(`console_log.c` `s_con_drop`+`[ERR] CONSOLE dropped`、`sys_log_mcu.c` 队列满 `DBG_ERROR`、TX 僵尸通道自愈);V5 30 min 日志**未复现 49s 静默**(运行期 >10s 静默全为 ~28s、均在 `e02_probe` 窗口内=N-17)。剩余:与 S8(非阻塞日志)合并评估 + **S-3(USART1 TX-only 结构根治)** | N-2 / S-3 |
|
||||
| **C4** ⚠️ | **defaultTask 栈余量**(S-1,**需尽快处理**) | **2026-10-04 实测 3664/4096(余量 432 B ≈ 10%,远低于 30% 判据)**。处置:栈 4096→4608(CCM 堆余量可覆盖 +512B)或 GC 链局部削减;**建议随阶段 B 之前先做** | S-1 |
|
||||
| **C5** | 一档剩余 + P2 已收口 | E-49(RS485 DE 收尾)、E-15(ringbuf 定去留——**已确认零调用者,倾向删除**)、E-61(SD2506 注释订正)、E-16(cfg_file 段名长度)、E-26(UDP 定案,倾向移除)、E-23、E-30(P2 十项已于 2026-10-04 全部销项,见 §3.2) | 一档/二档 |
|
||||
| **C5** | 一档剩余 | E-49(RS485 DE 收尾)、E-15(ringbuf 定去留——**已确认零调用者,倾向删除**)、E-61(SD2506 注释订正)、E-16(cfg_file 段名长度)、E-26(UDP 定案,倾向移除)、E-23、E-30 | 一档/二档 |
|
||||
| **C6** | **USART1 TX-only 结构根治**(S-3) | 灭 ORE 僵尸机制根源:改 `.ioc` 令 USART1 不使能 RX / PA10 不复用为 `USART1_RX` → CubeMX 重生成 → 跑 `check_cubemx_survival.py`。属结构性改动,需单开一轮 + 复跑台架闭环 | S-3 |
|
||||
|
||||
### 2.4 阶段 D:验证与卫生(常态化)
|
||||
@@ -128,7 +126,7 @@
|
||||
#### P1-1 ADC 采样数据路径产品构建中死亡
|
||||
- **位置**:`App/app/app_main.c`(`tpafe5160_start_conv_irq()` 仅启动时调用一次)+ `Drivers/BSP/TPAFE5160/tpafe5160.c`
|
||||
- **证据**:启动序列调用一次 `tpafe5160_start_conv_irq()`;全仓库无周期性 CONVST 重触发;`data_ready` / `get_buf` 无任何消费者(`adc_task.c` 是空桩)。
|
||||
- **影响**:上电后仅采集 1 个样本,此后数据永久陈旧;且 `APP_ADC_ENABLE` 为未接线占位(P2-12 已销项:已如实标注,不再冒充开关),形成"看似启用实则失效"的假象。
|
||||
- **影响**:上电后仅采集 1 个样本,此后数据永久陈旧;且 `APP_ADC_ENABLE` 为未接线占位(已如实标注,不再冒充开关),形成"看似启用实则失效"的假象。
|
||||
- **修复建议**:周期 CONVST 重触发(定时器或任务)+ 数据消费任务;若基线版本有意不实现采集,应删除启动调用并以 `APP_ADC_ENABLE` 真实门控。
|
||||
- **置信度**:high(代码级确证);P0/P1 定级取决于产品定义(见 §4 待确认)。
|
||||
|
||||
@@ -139,9 +137,6 @@
|
||||
- **修复建议**:`set_mac_addr` 移到 `ch395f_init()` 之前;修改前对照 CH395F 手册 §9.2.1 确认 INIT 是否锁存(见 §4 待确认)。
|
||||
- **置信度**:medium。
|
||||
|
||||
#### P1-8 网络重建失败无恢复 —— ✅ 已闭环(2026-10-02)
|
||||
自检台账留痕 + 30s 周期重试(`net_task.c`);首启失败不再自驻留。证据见 `网络/Net层阻塞模型架构设计.md`。
|
||||
|
||||
#### P1-10 测试固件静态 RAM 预算(基线已重建、测试缓冲已瘦身,剩构建实测闭环)
|
||||
- **位置**:`MDK-ARM/STM32F407-Demo/STM32F407-Demo.sct`(`RW_IRAM1 0x20000000 0x00020000` = 128KB;芯片 192KB 的上部 64KB 有意未映射,克隆芯片兼容性考量)
|
||||
- **历史**(2026-09-15 审计 / 09-16 复现):产品构建静态镜像曾 = 123.6KB/128KB(余量仅 4.4KB);HW 全阶段固件的 PHASE5 三缓冲(3×4093B)→ 超 8.7KB(`L6406E` 实测);NET 固件的 32KB `s_rx_buf` → 超约 28KB。
|
||||
@@ -149,27 +144,7 @@
|
||||
- **剩余**:① CH395F 套件(`TEST_SUITE_CH395F`,HW 全阶段 / NET 层 7 配置)实际构建确认链接通过——PHASE5 三静态缓冲 3×4093B 仍在,理论余量足够但未实测;② `@test` 闭环;③ **不建议**扩 scatter 到 192KB(破坏既有克隆芯片兼容决策)。
|
||||
- **置信度**:high(基线数据来自 2026-09-21 map;测试固件构建未复验)。
|
||||
|
||||
### 3.2 P2 —— ✅ 全部销项(2026-10-04)
|
||||
|
||||
P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 + `@build` 0/0)。
|
||||
**按"只保留待办"约定,明细条目已删除**;结论与证据沉淀进各模块文档,此处只留索引:
|
||||
|
||||
| # | 位置 | 闭环方式(摘要) | 证据落点 |
|
||||
|---|---|---|---|
|
||||
| P2-1 | `App/cfg/cfg_file.c` | 受管键行 > `CFG_LINE_TEST_MAX`(127) 时 `s_surgical_pass1` 返回 -1 → 拒绝保存、原文件不动、自检留痕(消除"超长行静默跳过 → 重复键行") | 本文件 §3.2;主机单测 TC-CFG-044(`test/host/cfg_file/cfg_file_test.c`) |
|
||||
| P2-2 | `Drivers/BSP/CH395F/ch395f.c` | `ch395f_spi_dma_transfer` 改返回状态;失败锁存通道故障(`ch395f_spi_byte_fault()` 现覆盖字节级 + DMA 级);`read_recv_buf` 失败时不再拷入不可信 rx 数据(改零填充) | 本文件 §3.2;`ch395f.c` v 变更记录 |
|
||||
| P2-7 | `Drivers/BSP/NET/net_select.c` | `check_socket_readable` 对 LISTENING 不再恒返回 1(本层无挂起 accept 队列,CONNECT 事件直接把该 socket 转 ESTABLISHED)→ 消除 select/poll 忙轮询地雷 | 本文件 §3.2;`net_select.c` 函数注释 |
|
||||
| P2-8 | `App/sync/time_sync.c` | **核实已由 L3 pending 改写闭环**:收包用 `net_recv_to`(≤50ms 分片 + 30s 总预算 + 每片喂心跳),无 `net_recv` 无限等待 | 本文件 §3.2;`time_sync.c` 头注释 |
|
||||
| P2-9 | `App/log/sys_log_mcu.c` | `syslog_mcu_mounted()` 改幂等 + 卷锁保护;`defaultTask` 每 2s 复查(`STORAGE_READY` 已置位但日志后端未就绪时重试建 `/log`) | 本文件 §3.2;`sys_log_mcu.c` v1.4 |
|
||||
| P2-10 | `App/log/sys_log_mcu.c` | `s_read_raw()` 纳入卷锁 try(读者 vs 写者 unlink 互斥),消除"UI 读记录时文件被 unlink"竞态 | 本文件 §3.2;`sys_log_mcu.c` v1.4 |
|
||||
| P2-11 | `App/task/net_task.c` | RECONFIG 位改用 `osEventFlagsWait(timeout=0)` 原子取走+清除,替换 `Get`+`Clear` 两步(消除丢事件窗口) | 本文件 §3.2;`net_task.c` 主循环注释 |
|
||||
| P2-12 | `App/app/app_cfg.h` | 三个 `APP_*_ENABLE`(及 `APP_SYS_TIME_SRC`)全库零引用 → 如实标注为"未接线占位",删除"开关"说法(同步 `项目部署环境要求.md`) | 本文件 §3.2;`app_cfg.h` v1.1 |
|
||||
| P2-13 | `Src/freertos.c` | 产品构建(`!TEST_SUITE_SELECTED`)下 `MX_FREERTOS_Init()` 于内核启动前 `vTaskDelete(testTask)` 回收 8KB CCM 栈(不改生成区/.ioc,重生成不丢) | 本文件 §3.2;`项目架构总览.md` §2.1 |
|
||||
| P2-15 | `MDK-ARM/download.bat` | 调 UV4 前先删旧 `download_log.txt` + 增"未产出日志"判定(对齐 `build.bat`),消除陈旧 "Application running" 掩盖烧录失败 | 本文件 §3.2;`download.bat` 注释 |
|
||||
|
||||
> **已销项 P2(勿重复报)**:P2-3(`gd5f_bbt_save` 返回值检查)、P2-4(`dhara_nand_read` 检查 `gd5f_read_from_cache`)、P2-5(`sd2506.c` 负温 `-(int8_t)(val & 0x7F)`)、P2-6(SD2506 CTR1 写禁止)、P2-14(`build.bat` 删旧日志)、P2-16(AGENTS.md 栈表)。
|
||||
|
||||
### 3.3 P3(未闭环 6 项)
|
||||
### 3.2 P3(未闭环 6 项)
|
||||
|
||||
| # | 位置 | 问题 |
|
||||
|---|---|---|
|
||||
@@ -180,9 +155,7 @@ P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 +
|
||||
| P3-8 | `.opencode/command/build.md` | 退出码契约写 "2+ = 编译错误",`build.bat` 实际只有 0/1 两档(与 AGENTS.md 一致的是后者) |
|
||||
| P3-11 | `App/task/adc_task.c` / `rs485_task.c` | 空桩无注释说明原因(建议注明"预留,未启用") |
|
||||
|
||||
> **已销项 P3(勿重复报)**:P3-3(`app_main_run` 死代码已删/已引用)、P3-5(死宏 `FTL_NUM_BLOCKS`)、P3-7(`test/test.txt` 已删除)、P3-9(FTP_Test_Guide 事件屏障改写)、P3-10(CH395F_Test_Guide 改写)、P3-12(`time_sync.c` 累积到 8 字节再判)、P3-13(`test_parse_ip` 门控析取已加)。
|
||||
|
||||
### 3.4 登记簿(N-x / S-x / T-x)
|
||||
### 3.3 登记簿(N-x / S-x / T-x)
|
||||
|
||||
**网络(CH395F / net 层)**
|
||||
|
||||
@@ -210,7 +183,7 @@ P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 +
|
||||
|---|---|---|---|---|---|
|
||||
| T-7 | **CI runner 未就绪(部署前置)** | 中 | `.gitea/workflows/ci.yml` 已落地,但 CI 仅在 runner 就绪后才真正生效:① Gitea 实例 `[actions] ENABLED = true`;② 注册 Windows runner(labels 含 `windows`),装 Python 3.x / cppcheck / pre-commit / MSVC | runner 未就绪前,**提交前仍须在本地跑 `scripts/ci_local.py` 或 `pre-commit run --all-files` 自查**(L0 唯一保障,不能因"已配 CI"而放宽) | `.gitea/workflows/ci.yml`;`测试说明/测试开发标准流程.md` §9 |
|
||||
|
||||
### 3.5 测试与架构改进专项(S1x / A-x)
|
||||
### 3.4 测试与架构改进专项(S1x / A-x)
|
||||
|
||||
> **编号约定**:**S1~S14 / T-1~T-5 / A-1~A-7** 是 2026-10-02 版复审的**条目编号**——编号**不随条目删除而回收**;
|
||||
> 其他文档若引用这些编号,其证据见对应模块文档与 `git log`。已完成事项的证据沉淀:
|
||||
@@ -222,12 +195,12 @@ P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 +
|
||||
|
||||
| 编号 | 事项 | 状态 | 详述 |
|
||||
|---|---|---|---|
|
||||
| **S12** | 模块级轻量断言宏 | ⬜ 待做(第 4 波按需) | 3.5.1 |
|
||||
| **S1-c** | `sys_log` / `time_sync` 主机侧单测 | ⬜ 可选(价值递减) | 3.5.2 |
|
||||
| **A-4** | ADC / RS485 采集链路的**测试可验证性约束** | ⏸ 待 B1/B2 落地时执行 | 3.5.3 |
|
||||
| **A-5 残余** | CI 体积门禁盲区(`mem-numbers` 在 CI 被跳过) | ⬜ 未消除 | 3.5.4 |
|
||||
| **S12** | 模块级轻量断言宏 | ⬜ 待做(第 4 波按需) | 3.4.1 |
|
||||
| **S1-c** | `sys_log` / `time_sync` 主机侧单测 | ⬜ 可选(价值递减) | 3.4.2 |
|
||||
| **A-4** | ADC / RS485 采集链路的**测试可验证性约束** | ⏸ 待 B1/B2 落地时执行 | 3.4.3 |
|
||||
| **A-5 残余** | CI 体积门禁盲区(`mem-numbers` 在 CI 被跳过) | ⬜ 未消除 | 3.4.4 |
|
||||
|
||||
#### 3.5.1 S12:模块级轻量断言宏 ⬜
|
||||
#### 3.4.1 S12:模块级轻量断言宏 ⬜
|
||||
|
||||
**动机**:`configASSERT` 只覆盖 FreeRTOS 内部;自研代码的"不该发生"靠散落的 `if`。
|
||||
|
||||
@@ -253,7 +226,7 @@ P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 +
|
||||
|
||||
**完成判据**:宏存在 + 生产构建 `@build` 0/0 且 `.map` 无新增符号;试点处有实际使用。
|
||||
|
||||
#### 3.5.2 S1-c(可选):`sys_log` / `time_sync` 主机侧单测 ⬜
|
||||
#### 3.4.2 S1-c(可选):`sys_log` / `time_sync` 主机侧单测 ⬜
|
||||
|
||||
**范围**:`App/log/sys_log_mcu.c`(定长 64B 记录编解码;落盘部分需桩)、
|
||||
`App/sync/time_sync.c`(协议帧编解码;与网络耦合,需先判定可解耦面)。
|
||||
@@ -264,7 +237,7 @@ P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 +
|
||||
|
||||
**完成判据**:`test/host/<模块>/run_unit_test.py` 退出码 0 + 挂 pre-commit 钩子。
|
||||
|
||||
#### 3.5.3 A-4:ADC / RS485 采集链路的测试可验证性约束 ⏸
|
||||
#### 3.4.3 A-4:ADC / RS485 采集链路的测试可验证性约束 ⏸
|
||||
|
||||
**背景**:`adc_task.c` / `rs485_task.c` 仍是空桩,`App/protocol/` 只有 README 与 `.gitkeep`。
|
||||
本项不是"缺陷",而是**对上游 B1 / B2 的设计约束**——应在动手前明确,否则后续无法补测。
|
||||
@@ -280,7 +253,7 @@ P2-1/2/7/8/9/10/11/12/13/15 共 10 项已全部闭环(代码 + 主机单测 +
|
||||
|
||||
**完成判据**:B1 / B2 设计文档体现上述三条;协议解析函数有对应 L0.5 单测。
|
||||
|
||||
#### 3.5.4 A-5 残余:CI 体积门禁盲区 ⬜
|
||||
#### 3.4.4 A-5 残余:CI 体积门禁盲区 ⬜
|
||||
|
||||
**现状**:`mem-numbers` 钩子**在 CI 上被跳过**(CI 无 `.map`)→ **CI 不守体积门禁**。
|
||||
S14 已在 workflow 显式提示"体积门禁未执行"(`::notice::`)并在 `CI配置指南.md` 声明,
|
||||
@@ -299,15 +272,9 @@ S14 已在 workflow 显式提示"体积门禁未执行"(`::notice::`)并在
|
||||
|
||||
## 4. 待确认(需手册/硬件/产品定义,暂不直接改码)
|
||||
|
||||
> **原 §4.1「待验证」已清空**:唯一条目 **P0-1**(cfg_file 堆分配改造的真机 `@test` 正向确认)
|
||||
> 已于 **2026-10-03** 真机 PASS,并于 **2026-10-04 独立复跑 PASS** 二次确认:
|
||||
> `[CFG] load: OK (523B, heap free 8840B)`(经 FreeRTOS 堆分配)+ Forbidden `FAIL`/`ERROR`/`HardFault`/`[ERR]` 零命中 +
|
||||
> `selftest: no fault record` + ST-LINK 全片回读 `No difference found`。
|
||||
> 证据沉淀见 `子系统设计/配置文件设计说明.md`(v1.11 实施 / v1.13 真机验证)。
|
||||
|
||||
1. TPAFE5160 是否有自动扫描模式(决定 P1-1 定 P0 还是 P1)。
|
||||
2. CH395F 手册 §9.2.1:`INIT_CH395` 是否锁存 MAC 寄存器(决定 P1-7 修复紧迫度)。
|
||||
3. `APP_ADC_ENABLE` / `APP_RS485_ENABLE` 是否应在产品构建真实门控模块(关联 P1-1、P3-11;P2-12 已销项——宏已如实标注为"未接线占位",此处确认的是**是否接入真实门控**)。
|
||||
3. `APP_ADC_ENABLE` / `APP_RS485_ENABLE` 是否应在产品构建真实门控模块(关联 P1-1、P3-11;当前宏已如实标注为"未接线占位",此处确认的是**是否接入真实门控**)。
|
||||
4. RS-485 PD0 DE 的半双工方向语义需硬件实测确认(本次仅静态审查)。
|
||||
|
||||
---
|
||||
@@ -406,6 +373,6 @@ S14 已在 workflow 显式提示"体积门禁未执行"(`::notice::`)并在
|
||||
- 已闭环条目的**结论与证据沉淀进模块文档**,本文件不再重复。
|
||||
- 编号一律**沿用且不回收**(P-x / N-x / S-x / T-x / S1x / A-x);`错误码传播审计.md` 的 E-xx 独立维护。
|
||||
- 阶段 B 完成后重写 §1(届时 ADC/RS485 应从未闭环消失)。
|
||||
- 新增发现按既有惯例分流:能立即修的进 §2 阶段 A/C5;需排期的进 §3 对应编号空间;跨版本观察的进 §3.4。
|
||||
- 新增发现按既有惯例分流:能立即修的进 §2 阶段 A/C5;需排期的进 §3 对应编号空间;跨版本观察的进 §3.3(登记簿)。
|
||||
- 上游引用关系:`问题记录/项目审查与优化建议报告.md`(体系层评审)、`问题记录/错误码传播审计.md`(E-xx)、
|
||||
`测试说明/实机测试实施指南.md`(执行流程)——三者均不在本文件合并范围。
|
||||
|
||||
@@ -437,7 +437,7 @@ CH395F / STORAGE / GD5F,未含 RTC;怀疑 RTC 构建下 `testTask` 不被创
|
||||
| S11 堆告警 | —(原复审项,已闭环 2026-10-03) | `内存管理/RAM使用分析与优化方案.md`(基线更新) |
|
||||
| S9 GD5F | `问题记录/错误码传播审计.md` 第二档 #1 | `问题记录/GD5F2GQ5UE_Trap_Records.md`、`测试说明/GD5F2GQ5UE_Test_Guide.md` |
|
||||
| N-2 日志静默 | `待处理内容.md` N-2 | `问题记录/错误码传播审计.md` E-02 |
|
||||
| P1-8 网络重建 | `待处理内容.md` P1-8 | `网络/Net层阻塞模型架构设计.md` |
|
||||
| P1-8 网络重建 | —(原台账项,已闭环 2026-10-02) | `网络/Net层阻塞模型架构设计.md` |
|
||||
| S5/S4 | —(原复审项,已闭环 2026-10-03) | `测试说明/测试开发标准流程.md` |
|
||||
| 模拟器差距 | `测试说明/模拟器差距清单.md` §3 决策规则 | 本文为"需回真机"项的执行面 |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user