Files
STM32F4-Base/docs/任务规划/基线与待确认.md
T
wandering1 506eccc68f docs: 错误码传播审计收口并删除该文档(E-xx 转历史编号族)
本次会话先后销项与关闭:
- E-61 SD2506 清 INTAF:原实现只读取 CTR1,而按手册 ARST=0 时读操作
  不清标志,属空操作;改为读-改-写 CTR1,并按手册订正 CTR1 位宏
  (INTAF/INTDF/BLF 位置,ARST 归 CTR3)
- E-16 cfg_file:新增 CFG_FILE_MAX_NAME_LEN(段名/键名 ≤15),注册时
  拒绝超长键名;s_gen_document 两处 snprintf 改检查式;补 TC-CFG-024
  用例(主机单测 149→151 PASSED)
- E-23 TC704:PHASE7_MULTI_COUNT 8→5(并发上限 = 8 − 3 个常驻监听),
  accept 失败分支加网络代次检查(网络重建即重建监听)
- E-26(UDP)按“保留 API + 文档定案”关闭;E-30 评估为不必要后关闭;
  N-4(ACCEPT 决定不实施)关闭

审计文档剩余 5 项 P2 + 2 项监督,经用户裁定“都不重要”后整体删除:
- 删除 docs/问题记录/错误码传播审计.md(634 行)
- 九类缺陷模式表迁入 docs/编号规范.md §4.2.1(PAT-01~09)
- E-xx 转为纯历史编号族:编号规范 §4.1 属主改“无(原属主已删除)”,
  §4.3 保持冻结;全仓 26 处引用按“保留编号、去悬空文档名”处理
- 顺带修正 N-4 收口遗留:排期详述 C1 才是 E-25/E-27/E-28 的承载处
  (审计 §4 曾误写为登记簿);README 两处 C1 旧名改回“net 层跨上下文收口”

一并提交此前遗留的体系层评审报告 2026-10-14 复核 WIP(六维评分复核、
未闭环 Top 5→3、三区水位实测刷新)。

校验:Keil 构建 0 错误 0 警告(Code=212344);check_doc_links
--sections-strict 与 --all(142 文档)通过;内存双台账刷新后均 PASS。
2026-10-15 07:39:38 +08:00

5.8 KiB
Raw Blame History

基线与待确认(设计参考,少改动)

本文件是参考基线,不是待办池:待确认项(§1)、设计基线(§2)、诊断基线(§3)、内存预算(§4)。 待办的排序与登记在 docs/任务规划/README.md §2 与 docs/任务规划/登记簿.md;同一事实以内存管理文档为权威(§3/§4 只是快照指针)。

1. 待确认(需手册/硬件/产品定义,暂不直接改码)

  1. TPAFE5160 是否有自动扫描模式(已不影响:1 kHz 硬件定时器触发已于 2026-10-10 由 TIM3 更新中断方案落地,不依赖自动扫描,见 docs/子系统设计/ADC采样节拍设计说明.md)。
  2. APP_ADC_ENABLE / APP_RS485_ENABLE 是否应在产品构建真实门控模块(当前宏已如实标注为"未接线占位",此处确认的是是否接入真实门控;B1 取数不依赖该宏。RS-485 侧门控随 B2 暂缓,见 暂缓-RS485.md)。
  3. RS-485 PD0 DE 的半双工方向语义需硬件实测确认(本次仅静态审查)——随 B2 暂缓(暂缓-RS485.md)。

2. 设计基线(供后续接入参考)

2.1 net 层阻塞模型 pending 化(状态)

来源:docs/网络/Net层阻塞模型架构设计.md(现状架构;演进史查 git 历史)。

  • recv 挂起 / send 挂起已落地:net_recv 阻塞不占 netTask(登记 + 每轮 tick 唤醒); net_send 快路径有界自旋(NET_SEND_SPIN_MS = 2 ms),超预算登记挂起、由 net_send_pending_tick 按主循环节拍分块推进(2026-10-14 落地)。
  • ACCEPT pending 化决定不实施(2026-10-15):ACCEPT 是调用方轮询问题、执行者零占用 (net_accept_locked 单次 net_poll 即返回,0 停滞)——pending 化只换 RPC 开销与延迟抖动, 不解队头阻塞;判据见 docs/网络/Net层阻塞模型架构设计.md §10。
  • 原 ACCEPT 设计基线(扩展点 / 门禁清单 / 改动量估算)随该决策作废,不再保留。

2.2 错误码通道四要素(CH395F 范式)

来源:错误码通道四要素方法论(2026-09 错误码传播审计确立,属主文档已于 2026-10-15 删除)。 GD5F 错误通道统一即按此骨架落地 (2026-10-03,套件回归 16/16 PASS,见 ../问题记录/GD5F2GQ5UE_Trap_Records.md)。后续任何驱动 / 子系统建立错误通道时应沿用。

①  分类:区分「超时 / 真故障 / 参数错」——不得混为一个返回码
②  透传:底层错误码逐层上报,不吞不猜(禁 `(void)ret`)
③  分级:可恢复(重试)/ 不可恢复(上报自检 + 降级)显式判定
④  留痕:不可恢复项写 syslog selftest,可恢复项计数并在 UI / 日志可见

关键纪律(呼应 AGENTS.md 已有铁律):自愈逻辑严禁把"名字 / 参数类错误码" 归入"卷损坏触发集"——.fschk 无限重格式化事故即此类(2026-09-20)。

3. 诊断基线(供后续对照)

2026-10-10 重采(栈)/ 2026-10-04 重采(堆):栈 = 运行时高水位 + armlink 静态最坏链双口径 (产品构建 suite=NONE,开机 + 空闲采样,串口 [STACK] + stack_report.py);静态区 = .map 受管快照。 栈水位口径:2026-10-10 削链后 defaultTask 实测 2152 B、静态最坏链 2776 B,未抬栈即达标 (完整核算见 docs/内存管理/RAM使用分析与优化方案.md)。 ⚠ 下表为历史快照(2026-10-04/10-10 口径);现行权威数字看 docs/内存管理/RAM预算台账.md 与 docs/内存管理/内存内容分配策略.md §6(2026-10-12 B5 后:堆 56 KB、RW_CCM 87.9%)。

项 当前值(栈:2026-10-10;其余:2026-10-04) 出处
产品构建 Flash (ER_IROM1) 266,632 B / 1024 KB(25.4%);ROM 合计 267,372 B .map 受管快照
产品构建 RW_IRAM1 84,960 / 131,072 B(64.8%) .map 受管快照(RAM使用分析与优化方案.md §2.1)
产品构建 RW_CCM 49,184 / 65,280 B(75.3%,历史当时值。2026-10-12 B5 后堆 56 KB / 87.9%) 同上
实测堆 free=8,664 / min_ever=4,728 B(历史当时值,48 KB 堆时代) V5 串口 [STACK] heap
defaultTask 栈峰值 2152 / 4096(余 1944 B = 47%);静态最坏链 2776 B(余 32%) [STACK] + stack_report.py(产品构建)
netTask 栈峰值 920 / 3840(余 76%);静态 1872 B 同上
ftpTask 栈峰值 740 / 4096(余 81%);静态 1216 B 同上
uiTask 栈峰值 4016 / 16384(余 75%);静态 1336 B 同上
timeSyncTask 栈峰值 792 / 2048(余量 61%) 同上
adcTask 栈峰值(B1,2026-10-10 新建) 496 / 2048(余 1552 B / 75%,台架 @test 实测);静态最坏链 504 B 台架 @test + stack_report.py
testTask 栈峰值(产品态空转) 496 / 8192(余量 93%) 同上
队列响应性(挂起客户端) 92.5ms(recv 挂起落地后) e02_probe.py
M3 压力档帧周期 med 60.1 / p95 66.4 / max 69.3ms,零尖峰 链路延迟测试说明.md

4. 内存预算(支撑 §3 与定栈规则)

现行权威数据 = docs/内存管理/RAM使用分析与优化方案.md v1.2(2026-09-21,§2.1 受管快照): 任务栈在 CCM 堆(defaultTask 1024w / netTask 960w / ftpTask 1024w / testTask 2048w / uiTask 4096w / timeSyncTask 512w / adcTask 512w); 产品构建 RW_IRAM1 84,960/131,072 B(64.8%)+ RW_CCM 49,184/65,280 B(75.3%,历史当时值。2026-10-12 B5 后堆 56 KB / 87.9%); 实测堆 free=8,664 / min_ever=4,728 B(历史当时值,48 KB 堆时代);台账工具 scripts/ram_report.py + scripts/stack_report.py。 旧栈表/旧余量数字作废,勿引用。