From 8d3349c587d2e52d1176b218e82321663f8e123c Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Thu, 22 Oct 2026 23:46:46 +0800 Subject: [PATCH] =?UTF-8?q?docs(=E5=AD=98=E5=82=A8=E7=BB=B4=E6=8A=A4):=20?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E8=87=AA=E6=A3=80=E5=8F=B0=E8=B4=A6=E6=B8=85?= =?UTF-8?q?=E9=9B=B6=E4=B8=8E=20flushchk=20=E5=AD=A4=E5=84=BF=E6=B8=85?= =?UTF-8?q?=E7=90=86=EF=BC=8C=E4=BF=AE=E8=A1=A8=E6=A0=BC=E6=96=AD=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设备侧动作(不动仓库内容)与文档同步,一并落在这里。 **① 自检台账清零,重建 S7 审计基线**:`/log/selftest.log` 里 29 条历史记录(**16 × `watchdog` `reset` + 13 × `heap low water`**,跨度 `2026-10-10 09:24:12 → 2026-10-14 06:55:02`,看门狗 引入期与堆迁移期留下,两案后来都已结案)按用户决定删除。**安全判据**:`sys_log_mcu.c` 是每条 记录开-写-关(`f_open(FA_WRITE|FA_OPEN_APPEND)` → `f_write(64)` → `f_close`),**不持常驻 句柄** → FTP 侧 `DELE` 不会撕裂,下次真有故障时自动重建。删前把导出副本留档(1856 B = 29×64)。 **② 顺带清掉一个孤儿**:`/log/flushchk.bin` 32,768 B,全库零引用——已退役的 flush 诱导实验 留下的(`sys_log_mcu.c` 注释里"旧称 flush 诱导"就是它)。**删前先 RETR 出来验过内容**:256 种 字节值全部出现、前 64 字节全 `FF` → 一份 0..255 图案的写盘校验填充,无任何产品语义;留档后再 `DELE`。判据同 §4.1:**先知道删的是什么,再删**。 **清理后 `/log` 只剩三条、全是产品数据**:`run.log` / `wdev.log`(掉电取证)/ `soe.log` (B9 SOE)——这三条是固件在写的活文件,容量护栏由固件自己管,**别手删**,文档里也这么写。 **验收(两条判定路径都要过才算基线干净)**: · `--require-selftest-pass`(默认 `this-run`)→ PASS,`SELFTEST_BASELINE: 既有记录 0 条` (`status=absent`); · `--selftest-scope all`(累计硬口径)→ **PASS**:`selftest: no fault record`——**清零前这条是 `29 fault record(s)` FAIL**,也就是那条判据在台架上从来没可能通过;现在真的能用了。 · 之后再跑 `@test` → PASS(699 ms、`[STACK] heap` 等锚点齐全、无 `[ERR]`/Fault)。 设备侧无此文件时 lftpd 回 450,被按"台账干净"处理——这条映射过去是假绿来源,现在是有意的正常 路径(见 `../架构设计/STM32F4-Base存储架构说明.md` §10.3 与 S7 判定表)。 **修自己的排版 bug**:上一笔(`23daa3d`)把 §4.1 的变更记录行拆成了三行——Markdown 表格行必须 单行,会渲染成断裂的表。已合并;本次两条变更行(§4.1、§4.2)都是单行。 门禁:`check_doc_links.py --all --sections-strict` 146 文档 0 问题;`check_ids.py --strict` 增量 拦截通过(可判定 82.82%);文件字节卫生 BOM 无 / CR 0 / U+FFFD 0 / 无行尾空格 / 尾换行。本轮无 固件与脚本改动,故不跑 `@build`(`@test` 已跑,镜像仍是 `23daa3d` 那笔的构建)。 --- docs/测试说明/存储维护与容量恢复.md | 30 ++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/docs/测试说明/存储维护与容量恢复.md b/docs/测试说明/存储维护与容量恢复.md index 177b6d63..a02eb40f 100644 --- a/docs/测试说明/存储维护与容量恢复.md +++ b/docs/测试说明/存储维护与容量恢复.md @@ -81,9 +81,33 @@ ## 5. 变更记录 +### 4.2 自检台账清零,重建 S7 审计基线(2026-10-22 实测) + +`@test --require-selftest-pass --selftest-scope all`(累计口径)在台架上**永远 FAIL**: +`/log/selftest.log` 里躺着 29 条历史记录,`2026-10-10 09:24:12 → 2026-10-14 06:55:02`, +组成为 **16 × `watchdog reset` + 13 × `heap low water`**——都是看门狗引入期与堆迁移期 +留下的,两件事后来都已结案。新判据(只看本次新增)已不受影响,但**审计口径要能用,就得 +有一块干净的基线**,所以按用户决定清掉台账。 + +- 安全性判据:`sys_log_mcu.c` 是**每条记录开-写-关**(`f_open(FA_WRITE|FA_OPEN_APPEND)` + → `f_write(64)` → `f_close`),**不持有常驻句柄** → 从 FTP 侧 `DELE` 不会撕裂,下次有 + 故障时自动重建文件。清理前先把导出副本留档(1856 B = 29×64)。 +- **产品数据一条不动**:`run.log`(运行记录)、`wdev.log`(掉电取证,带 8 KB 护栏)、 + `soe.log`(B9 SOE 动作记录)——这三条是固件在写的活文件,容量护栏由固件自己管,别手删。 +- **顺带清掉的孤儿**:`/log/flushchk.bin` **32,768 B**,全库零引用——已退役的 flush 诱导实验 + 留下的(`sys_log_mcu.c` 注释里那句"旧称 flush 诱导"就是它)。**删前先 RETR 出来验过内容**: + 256 种字节值全部出现、前 64 字节全 `FF` → 就是一份 0..255 图案的写盘校验填充,没有任何 + 产品语义;留档后再 `DELE`(判据同 §4.1:先知道删的是什么)。 +- 清理后 `/log` 只剩三条、**全是产品数据**:`run.log`(运行记录)、`wdev.log`(掉电取证)、 + `soe.log`(SOE 动作记录)。之后再跑 `@test --require-selftest-pass` → **PASS** + (699 ms、`SELFTEST_BASELINE: 既有记录 0 条`)。 +- 验收(两条判定路径都要过):`--require-selftest-pass` → `SELFTEST_BASELINE: 既有记录 0 条 + (status=absent)` → PASS;`--selftest-scope all` → `selftest: no fault record` → **PASS** + (清零前这条是 `29 fault record(s)` FAIL)。设备侧无此文件时 lftpd 回 450,被按"台账干净" + 处理,这条映射见 `../架构设计/STM32F4-Base存储架构说明.md` §10.3 与 S7 判定表。 + | 日期 | 变更 | |---|---| | 2026-09-21 | 新建:A/B/C 三个维护动作;容量恢复原理(dhara checkpoint 坏块计数不清零)与全片擦除恢复路径(实测 95200 → 96064) | -| 2026-10-22 | 加 §4.1「根目录残留文件清理」(动作 D,与 A/B/C 区分):台架实测 27 个探针残留文件 / - 262 KB 已清;判据 = 只删显式点名、保留 `/config.ini`、`/PROT_SET.BIN`、`/log`;清后 `@test` - PASS + LIST 完整性回归 PASS | +| 2026-10-22 | 加 §4.1「根目录残留文件清理」(动作 D,与 A/B/C 区分):台架实测 27 个探针残留文件 / 262 KB 已清;判据 = 只删显式点名、保留 `/config.ini`、`/PROT_SET.BIN`、`/log`;清后 `@test` PASS + LIST 完整性回归 PASS | +| 2026-10-22 | 加 §4.2「自检台账清零,重建 S7 审计基线」:29 条历史记录(16 × `watchdog reset` + 13 × `heap low water`,10-10 → 10-14,两案均已结案)按用户决定删除;安全判据 = `sys_log_mcu.c` 每条记录开-写-关、不持常驻句柄;`run.log`/`wdev.log`/`soe.log` 属产品数据不动;顺带删掉孤儿 `/log/flushchk.bin`(32 KB、0..255 图案的写盘校验填充、全库零引用,删前留档);清后 `this-run` 与 `all` 两条判定路径都 PASS(清零前 `all` 是 29 条 FAIL) |