fix(wave): 落盘道改覆盖写,修回放页全板「该段不可读」

段名是 100 个槽位的轮转复用,而写者用 FA_OPEN_APPEND 打开:槽位复用时撞上
同名旧文件,新段接在旧段尾巴上,文件长成 5250 的整数倍。回放页读侧按单段
判 size == total,于是逐件落进 UI_WAVE_REJ_LEN(reject=2),全板没有一段
放得出来。

板级取证(100 件全部归档到 ci-artifacts/wave_append_backup_20261110/):
/wave 共 1868 段、9,807,000 B,尺寸全为 5250 的整数倍,恰好等于 5250 的
文件数为 0;逐段过 wave_read 校验全部合法、零损坏——数据一直是好的,只是
容器尺寸与写者语义相抵。

修法(用户裁定取写者截断,否掉读侧多段感知):打开模式改为
FA_WRITE|FA_CREATE_ALWAYS。本移植的覆盖分支会 remove_chain 并清零目录项
FileSize,是真截断;FA_CREATE_ALWAYS 单独用不含 FA_WRITE,两个位必须同给。
日志七本与 soe.log 仍用追加(靠历史累积,语义正确),读侧口径不动。

板端验收:新段尺寸恰好 5250 B;对已有 28 段的 WAVE00.BIN(147,000 B)录
一次当场变 5250 B,全目录总字节减 141,750 = 147,000 - 5,250。回放页从
bad 态(与黄金参考 shot_wave_play_bad 逐比特相同)转为正常态,页眉 24/24
行、页脚 20/20 行与 shot_wave_play 逐字节一致。

文档:故障录波设计说明 §5.2 陷阱表改打开模式完整口径,§10 新增收口记录;
带日期戳的 11-07 取证归档正文按当时口径冻结,只加一条口径已被推翻的指向。
This commit is contained in:
2026-11-11 01:06:04 +08:00
parent 7b05d7bfd4
commit b772117ed3
4 changed files with 58 additions and 9 deletions
+4 -4
View File
@@ -1,15 +1,15 @@
{
"built_at": "2026-11-10T11:42:28+08:00",
"fingerprint": "bd97996ef0586e185e13beca01d36f43fdbc118c69c0833166065752aacae96c",
"built_at": "2026-11-10T22:31:07+08:00",
"fingerprint": "5080b00d80af5604476422c1afa383cb09e782e6bb76aa2abf9e96a77d5c60fd",
"fingerprint_files": 1479,
"fingerprint_source": "git-index",
"gated_regions": [
"RW_IRAM1",
"RW_CCM"
],
"git_head": "ae09c5737a0bc56cddc469fc2ca0afe78e6cbd74",
"git_head": "7b05d7bfd40fafa514e166d3fda5270f2b040c2b",
"map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map",
"map_mtime": 1794282125,
"map_mtime": 1794321057,
"pct": {
"ER_IROM1": 27.31,
"RW_CCM": 87.89,