Files
STM32F4-Base/docs/任务规划
super_agent_bot 5538af829b
CI / 静态门禁 (pre-commit) (push) Failing after 43s
CI / 主机侧单测 (MSVC) (push) Failing after 45s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 44s
CI / 主机侧单测 (MSVC) (pull_request) Failing after 43s
fix(nand-ftl): 传输失败不再误标坏块 + format 不再被脏缓存挡死(#79)
根因(真机定案,问题 #79):旧 dhara_nand_erase/prog() 把一切失败一律
mark_bad,而 mark_block_bad 每次**立即持久化**板级 BBT(不可撤销)——
一次传输层/等忙抖动就把好块永久记成坏块。台架 129 个好块(1016–1142
连续段)被固化,journal prepare_head() 连续 8 次撞 is_bad → TOO_BAD →
Cache flush FAIL → reformat 又被同一页挡住 → 整卷禁用、重启不恢复。

- 修复①:只有芯片明确回 E_FAIL/P_FAIL(状态位证据)才标坏;
  传输/超时失败只报 DHARA_E_BAD_BLOCK 让 dhara 重试,不标坏
- 修复②:nand_ftl_format() 尽力刷一次脏缓存,失败即丢弃并继续
  dhara_map_clear()(格式化语义本就是销毁映射;旧实现第一步返回,
  恢复动作在同一页死锁,f_mkfs 全在旧映射上必失败)
- C4 还债:新增跨调用失败类快照 nand_ftl_fault_get/clear(20 B,
  resume/读/刷/同步四点位记账);defaultTask 探针按类分流,
  BSP_ERR_NO_SPACE 跳过重格式化(容量问题不该用 mkfs 解)
- 哨兵与诊断:init 解锁块保护(A0h)后补回读校验(与 B0h ECC 同族
  缺口,实测本板 A0h=0,非本次根因,留作哨兵);gd5f_bbt_load()
  合并后坏块数 > 出厂扫描时打「BBT after merge」,现场可区分
  真坏与误标固化
- 测试:主机单测 149→178 全绿;新增 format 死锁(TC-NANDPORT-800..
  813b)、传输失败不标坏(207 语义翻转 + 208/505);牙齿检查过——
  把修复回退即见红
- 真机:恢复动作 A 重建 BBT 清除已固化误标(3/3 PASSED,BBT
  version=71);产品镜像复烧 [FS] FATFS mounted、配置出厂模板
  落盘、0 条 flush FAIL——#79 真机闭环(旧卷内容随 map clear
  作废,台架卷为可弃数据)
- 文档:存储架构说明 §10.4 口径修正 + 新增 §10.4.1/§10.4.2(页级
  失败升级链与误标持久化机理),存储维护与容量恢复 §2 补板级 BBT
  独立持久化注记 + §2.1(动作 A 此前静默失效),登记簿 C4 销项
- Keil 0 错 0 警(Code=255552,与烧录验证镜像一致);doc-links 213
  文档通过
2026-11-04 18:58:13 +08:00
..

任务规划

UI 补齐执行清单已于 2026-10-28 清空(记录 5 页 + 运行报告页落地)。 下一顺位 = net 层跨上下文收口,开工待用户点头;顺序权威见 docs/任务规划/README.md §2.0。 详细任务与验收见 UI补齐.md;UI 完成后的第一项是 net 层跨上下文收口。

怎么用这份规划

你想知道什么 只看哪个文件
现在做什么、接下来做什么 本文件
当前任务怎么做、怎样算完成 UI补齐.md
UI 之后还有什么、哪些事在等条件 登记簿.md
ADC 标定为什么没做、保护为什么不动作 数据可信.md
RS-485 为什么冻结、重启要满足什么 暂缓-RS485.md

一件事只有一个归属。 本文件只负责导航与顺序,不复制各任务的验收明细; 登记簿.md 不再复制当前 UI 任务,数据可信.md 的其余章节是被代码引用的设计约束, 不是额外待办。


0. 条目与引用规则

  • 新条目使用语义短语,一行直接说清是什么事,不再新增字母加数字编号。
  • 旧编号只用于追溯历史,不复用、不重新发号;编号族与冻结规则见 docs/编号规范.md。
  • 引用条目时写清所在文档和语义名,例如:docs/任务规划/登记簿.md 的 「net 层跨上下文收口」。不要只写一个短号让读者猜。
  • 任务状态只维护在任务所属文件;本文件不另建一套状态表。

1. UI 补齐(执行清单已于 2026-10-28 清空)

菜单树共 34 叶(节点行合计 43):按行内 #page= 实测已绑 31 叶、未绑 3 叶(2026-11-04 SNTP 设置 叶随 #73 立项转绑 +1,判定规则与重跑命令见 docs/任务规划/UI补齐.md §1「叶数判定与复核」)。未绑的 3 叶 因缺少开入硬件不做(原因与重开条件见 docs/任务规划/UI补齐.md §5)——手动录波与录波回放两叶 已随录波道绑页,「不做」清单里的录波那一项已销。 口径闭合:未绑 3 = 待做 0(§1 清单已清空)+ 不做 3(遥信 3);43 是节点行数、不是叶数(= 9 个菜单节点 + 34 叶)。 已绑叶数以生成物 UI_PAGE_MAP_COUNT 为准:不剔 ui_menu_tree.txt 文件头的注释示例行时,按 #page= 文本计数会得 32(= 31 + 1 行示例)。

UI 补齐执行清单已于 2026-10-28 清空:记录 5 页(事故 / 操作 / 保护告警 / 保护启动 / 遥控)与 运行报告页同日落地并绑页,内容页黄金参考 53 → 60 张(runreport 分 2 页,第 2 页单独拍一张;判据 = simulator/tests/ref/ 入库 shot_*.bin 实数,张数 = 页面个数 + 分页多拍的那一张;该集合 2026-10-29 已扩至 66 张,多出的是录波回放页 6 态)。 上板判据(真记录翻页、掉电保持、清除后归零、boot_count 自增、RESTARTED、rst_cause=IWDG、conn_up +1) 已登记登记簿 §7「UI 六页真机判据」,六页文件头各留「台架待补」段;模拟器差距见 docs/测试说明/专项验证/模拟器差距清单.md §2.3「开机账本 boot_stats」一行。

执行纪律:单道串行。 菜单树与页面注册表是生成物,字库也是整文件生成物; 不要同时开多条 UI 页面分支。上板验证可累积成一批,但保存、重启、主站读回等判据不能删除。


2. 全项目推进顺序

本节是全项目唯一的顺序权威。模块文档只描述局部设计,不另排一套路线图。

2.0 顺序表

顺序 工作 当前状态 开始或切换条件
1 UI 补齐 清单已清空(2026-10-28) 记录 5 页与运行报告页已落地并绑页;余下 5 叶属 §5「当前不做」,重开条件见 docs/任务规划/UI补齐.md §5;上板判据见 docs/任务规划/登记簿.md §7
2 net 层跨上下文收口 下一顺位(未开工) UI 清单已清空,切换条件已满足;开工需用户点头——换主线是产品决策,不由本批顺带做掉
3 其余结构与可靠性评估 排队 net 收口后;逐项见 登记簿.md,观察项不为了“清清单”而强做
4 数据可信(采集数据可信度) 动态波形验证手边可做;变比确认与两点标定等外部资源 信号发生器动态波形验证(不依赖外部资源)→ 端子/子板变比确认 → 标准源两点标定;排序调整(2026-10-29):动态验证让位给故障录波数据面,段文件落地后判据升级为 PC 独立重算对表(docs/子系统设计/故障录波设计说明.md §11)(已知电压注入已于 2026-10-27 台架闭环并销项);外部资源到位可插入优先处理
5 标准源送检与第三方 104 主站验收 等待标定完成 两点标定完成且保护 VALID 已置位;送检窗口前 2 日冻结特性
6 保护元件与采集增强 等待标准源或硬件改版 保护先解除未标定闭锁;三相同时刻类功能等 V0.2 硬件
7 验证窗口事项 逢条件顺带 CI runner、PC peer、CH340、负向故障注入条件到位时执行
8 独立模块与暂缓项 当前不排 开入开出、104 文件传输单独立项(SNTP 已单独立项并于 2026-11-04 落地 #73,:8888 随 #78 退役);RS-485 与内存优化按各自重启条件
独立 故障录波(1 kHz · 8 路原始码值 · 单通道回放) 代码面已交付;2026-10-31 远程半轮过六项、2026-11-02 回放页枚举缺陷已修复闭环,余注量对表与人到场项 用户裁定 2026-10-29 录波先行:数据面最小闭环 → 手动与保护启动触发 → 回放页。三块的代码侧判据已收口(主机单测 113 / 170 / 110 全 rc=0、双端编译 0 错误 0 警告、板端编码器与 PC 侧解码器字节级互验、手动录波与录波回放两叶已绑页、内容页黄金参考扩至 66 张);2026-10-31 远程半轮已过六项(真 FAT 落盘、触发→落盘全部落在 2 s 封存超时窗内、冷却恢复、轮转、PC 侧坏段拒收、冻结窗内 104 并发);同轮发现的缺陷「回放页段表枚举恒空」已于 2026-11-02 远程修复并板级闭环(根因 = 读侧 wave_store_seg_path() 返回值判错,顺带修键处理缺失效;回放页真段/切段/切道已实测,登记簿条目已销项,证据见设计说明 §10「回放页枚举恒空缺陷修复记录」);没跑的是注量对表那半轮(注 1 V / 50 Hz、与 meas: 行和 104 浮点遥测对表、回放页放坏段与空态画面)加 P 触发 / bench T 源,全部结果与清单见 docs/子系统设计/故障录波设计说明.md §10「板级远程半轮记录」。板级判据、留痕名清单与执行顺序图的属主 = docs/子系统设计/故障录波设计说明.md §9 与 §10(原卡片登记簿 2026-10-30 随销项并入后删除);与 UI 道互斥(菜单树与中文字库是整文件生成物,同刻只允许一条道写)——本波按此串行执行:UI 道在数据面与接线冻结之后才动生成物

2.1 关键依赖

  • UI:写路径、整定 4 页、装置维护 3 页与遥测死区/系数 2 页已收口(含上板判据与真机回读); 菜单树、页面注册表与字库都是生成物,同刻只允许一条道写。
  • 送检:已知电压注入(✅ 2026-10-27 闭环)→〔信号发生器动态波形验证 —— 手边可做,与后两关并行、不阻塞送检〕 → 端子/子板变比确认 → 标准源两点标定 → 保护解除闭锁 → 送检。
  • 保护扩展:标准源未到位前不新增无法验证的判据;跨转换器相位、功率、对称分量类 功能必须等 V0.2 硬件。
  • 结构债:UI 完成后先做 net 收口;RS-485 白名单、内存优化、仓库体积等观察项不抢占 当前编码道。

3. 维护约定

  1. 完成即删除待办条目,同时清理其他文档对它的引用;结论和证据写入模块文档, 历史由 git log 保留。
  2. 当前任务只改 UI补齐.md,后续事项只改 登记簿.md;顺序变化才改本文件 §2。
  3. 数据可信.md 的 §2、§4、§7~§10 仍被代码头注释引用为设计依据,不能按“已完成” 删掉;其待办只认 §5 的任务卡表(标识列用语义短语,卡片增减不改本条口径)。
  4. 专项文档只放还没闭环的约束;已落地事项的规格正文归代码头注释或模块文档, 销项即删文件并把引用改指现行出处(先例:测试与架构专项.md 已删除 2026-10-28, 唯一未闭环的「采集链路测试可验证性约束」并入 暂缓-RS485.md)。
  5. 任务分支不直接修改 docs/任务规划/**;状态更新与销项由主工作树统一处理。
  6. 并行开发机制、工作树和锁的使用见 docs/环境与部署/并行任务工作树方案.md。 本文件夹不再另维护一份分道、批次和写域方案。
  7. 暂缓不是完成:条目必须保留重启条件;没有重启条件的“以后再说”应写成观察项或删除。