Commit Graph

142 Commits

Author SHA1 Message Date
wandering1 7a18d2ce28 加 CubeMX 重生成存活审计:防标记区外定制被静默覆盖
背景:.ioc 的 KeepUserCode 只保护 USER CODE 标记区,标记之外的手工改动
重生成即被覆盖,且多数不报编译错(2026-09-29 实测一次覆盖 4 处,含
HardFault_Handler 崩溃采集被打回空 while(1)、两个 FreeRTOS 加固宏被删)。

新增 scripts/check_cubemx_survival.py:
- 16 项易失清单(IWDG 延后启动 / 崩溃采集 / 栈溢出检测 / 堆失败钩子 /
  断言改造 / 看门狗模块与工程挂载 / 复位原因锁存 / HAL 驱动与使能 /
  .ioc 关键项),断言前剥掉 C 注释防误报
- 哈希基线漂移检测(.cubemx_survival_baseline.json),--write 重建
- 标记区外存量以 WARN 提示(3 个 Fault 处理函数、栈注释)

已挂 pre-commit cubemx-survival 钩子(改动 .ioc / Src / Inc /
task_watchdog / .uvprojx 时触发)。

文档:看门狗设计说明 §10.2 新增"重生成不丢的三层手段"方法论
(L1 写 .ioc > L2 搬进 USER CODE 区(可自造标记区)> L3 审计兜底)
及 .ioc / USER CODE 区可用位置 / 存量清单三张对照表;AGENTS.md 平台约束
新增该规则;pre-commit 使用说明 §2.12 新增钩子详解。

门禁:build 0 错误 0 警告;pre-commit 全通过。
2026-09-29 07:30:00 +08:00
wandering1 7feeea6c56 实现独立看门狗:CubeMX 配置 IWDG + 任务心跳位图,恢复三处被覆盖定制
经 CubeMX 图形界面启用 IWDG(Prescaler=64 / Reload=1249,标称 2498ms /
最坏 1701ms),并落地心跳位图判定、各任务埋点、RCC_CSR 复位原因上报与
configASSERT 改造。重生成覆盖的既有定制已全部恢复。

P0(开机死循环):HAL_IWDG_Init() 内部立即启动看门狗,而 CubeMX 把
MX_IWDG_Init() 插在 app_main_init() 之前——该段 NAND/RTC/ADC 初始化耗时
数秒无喂狗点,按 2.5s 超时必然复位。改 Src/iwdg.c 为只填参数不启动,
启动移交 task_wd_start(),由 defaultTask 在存储 bring-up 完成后调用。

恢复的三处定制(重生成覆盖):
- Src/stm32f4xx_it.c:HardFault_Handler 崩溃现场采集被打回空 while(1)
- Inc/FreeRTOSConfig.h:栈溢出检测与堆失败钩子两个宏被整块删除
- Src/freertos.c:三处任务栈实测记录中文注释丢失(数值未丢)

新增:
- App/util/task_watchdog.{c,h}:心跳位图 + 抽样判定 + IWDG 延后启动
- time_sync.c 长等待切片:net_recv_to 单次可睡满 30s 预算,切成 200ms 片
- Src/main.c 复位原因锁存(读后即清 RMVF,防残留误判)

埋点:defaultTask(唯一喂狗者)/ netTask(含 PHY 等待循环)/ uiTask /
timeSyncTask。ftpTask 首期剔除掩码,待二期改 lftpd。

门禁:build 0 错误 0 警告;pre-commit 10 钩子全通过;Flash +2956B / RAM +40B。
2026-09-29 07:22:04 +08:00
wandering1 e18e9f2cfd 新增看门狗设计说明:IWDG 选型与任务心跳位图方案 2026-09-29 06:46:27 +08:00
wandering1 0ddf8c9aca Net 层阻塞模型架构设计 §2 架构总览改用 SVG 矢量图 2026-09-29 06:00:48 +08:00
wandering1 0485e79da0 Net 阻塞模型文档改写为架构设计并迁入 docs/网络 2026-09-29 05:51:16 +08:00
wandering1 b46e6bffed Net 阻塞模型调研文档退役:客观实施记录留存,二期基线迁入任务规划 2026-09-26 14:21:13 +08:00
wandering1 5c049daa7c Net 阻塞模型文档销项修正 + 新增项目下一步任务规划 2026-09-26 14:15:56 +08:00
wandering1 22559365b9 整理 App 与 test 目录:按职责分子目录并同步全库引用 2026-09-26 12:52:39 +08:00
wandering1 39bd06adea 为自建代码目录补齐 README,建立目录级导航体系
- 新增 26 份目录 README:App/(+log,task,util,protocol)、Drivers/BSP/(+8子系统)、
  Src/、Inc/、scripts/、tools/(+6子工具)、test/、MDK-ARM/、simulator/(+sim,tests)
- 每份含:定位、文件清单表、关键约束/陷阱、指向 docs 权威文档
- 第三方库与生成代码目录排除(CMSIS/HAL/Middlewares/Lib/SDL2)
- docs/文档规范.md 新增 §1.1b 代码目录 README 约定;根 README 目录结构加入说明
2026-09-26 12:25:36 +08:00
wandering1 8d86fb1149 登记簿完成即销项:待处理内容.md 删4项已闭环条目并清理全库引用
- 删 N-1/N-5/N-6/N-8(结论已沉淀于 Trap21/22/23 与 E-03,先验证后删)
- 同步清理 3 处外部引用(错误码传播审计、CH395F_Trap_Records、Net层阻塞模型)
- 文件头说明改写为「完成即销项,不保留已消化行」
- AGENTS.md 新增登记簿销项规定
2026-09-26 12:12:14 +08:00
wandering1 e1ae58b52b CH395F 手册图片从外部图床迁回本地,18 张图编入版本库 2026-09-26 11:39:59 +08:00
wandering1 a6cdebde62 文档体系重组与 D-7 一致性门禁落地,清理芯片手册孤儿图片
- D-6 目录规范化:docs 根目录散落文档归入 UI设计/子系统设计/架构设计/审查记录/
  环境与部署/网络 等子目录,去掉目录名空格,重命名 嵌入式C语言代码规范_V1.0.md
- D-7 三档一致性门禁:新增 scripts/check_doc_links.py(链接存在性)、
  scripts/gen_task_table.py(FreeRTOS 任务表数值)、scripts/check_mem_numbers.py
  (内存/Flash 体积),均支持 --check/--write/--diff,pre-commit 钩子同步注册
- D-5 文档索引:新建 docs/README.md,新建 docs/文档规范.md 约束目录命名与链接写法
- D-1 芯片手册瘦身:删除 1069 张无引用孤儿图片(77.06 MB),
  docs/芯片手册 120 MB → 41 MB,已引用图片零断链
- 同步 C 源码注释中的文档路径引用(D-6 重组后),构建 0 错误 0 警告
2026-09-26 00:51:53 +08:00
wandering1 1b46e2a340 修复E-03:s_net_errno 改按任务隔离槽位,消除跨任务错误码错报 2026-09-25 19:17:18 +08:00
wandering1 c39ff11bb9 Trap 23: 4个可复用台架探针迁入MDK-ARM/bench_diag/并提交,10个一次性甄别脚本已删除 2026-09-25 05:38:03 +08:00
wandering1 c12139da06 Trap23待办3: 异常释放(TIMEOUT/RST)挂起recv以CONNRESET了结, STOR异常结束回450并删除截断文件, 探针加--check-abort 2026-09-25 02:04:46 +08:00
wandering1 a1f1f46262 Trap23两阶段修复: 异常释放400ms隔离+正常释放100ms沉降(仅收过数据), 修复中止后新传输首笔静默截断 2026-09-25 01:57:03 +08:00
wandering1 d0cbeb6b5b 控制台日志实现迁出HAL生成文件至App/log并新增设计说明;defaultTask任务体迁至App/task,freertos.c恢复纯CubeMX接线形态 2026-09-25 01:32:09 +08:00
wandering1 b09e1c1ee5 新增BSD_Socket_API函数调用关系与设计说明:总体调用图、各函数设计作用、端到端时序、设计铁律,使用指南补伴读指引 2026-09-24 14:24:20 +08:00
wandering1 70bc4966c7 更新BSD_Socket_API使用指南至现状:新增net_recv_to/net_relisten/对账等新增机制,§3.6/§11.2/§12.10 2026-09-23 12:09:27 +08:00
wandering1 77ee778605 修复Trap22快速复连丢中断致监听死亡:net层周期对账自愈(去抖+冷却),复现用例与回归全绿 2026-09-23 02:27:10 +08:00
wandering1 3ac8eb807d TC-NET-604结案为非缺陷:Trap21改短+删机理图解+N-7作废,清理源码误导注释 2026-09-23 01:36:57 +08:00
wandering1 7d70445c16 修复Trap23:异常释放后复监听隔离并排空RX残渣,上传中止截断消除(RST10/10+FIN5/5通过,正常50/50) 2026-09-23 01:31:07 +08:00
wandering1 5a41b966fc 新增Trap23:上传中止后首笔复连上传被静默截断(2048B)并误报成功,可信复现15/15,N-8待修 2026-09-23 01:10:37 +08:00
wandering1 0e6efb44a3 可信复现首轮:真实FTP生产路径177轮全过(SHA-256全匹配)+并发UI 600帧,未复现冻结 2026-09-23 01:06:19 +08:00
wandering1 685a860635 撤回Trap21精确定位轮冻结结论(台架假象:分类器误判+固件读者吞噬数据),N-7暂不实施 2026-09-23 00:54:00 +08:00
wandering1 563584744d 共用中转槽方案定案:+3KB(数据筐2KB+单槽),Trap21图解与N-7同步 2026-09-23 00:28:15 +08:00
wandering1 49458048fd 新增Trap21机制图解文档:读必读空方案、5处读路径落点与RAM账,N-7细化 2026-09-23 00:17:35 +08:00
wandering1 cca3b60d64 Trap21定案部分窗口重通告机制:N-7改非阻塞RX读强制排空至空,netcmd日志入库 2026-09-23 00:07:45 +08:00
wandering1 a5a14e5fe8 Trap 21 主因定案:排空后50-100ms内第二条RX命令(剂量台架证伪满态时长说);新增N-7排空后RX守卫方案、指南最小复现配方 2026-09-22 21:21:05 +08:00
wandering1 1a872b05bc Trap 21 触发模型修订为三因子(2×2 台架实证);新增 Trap 22 快速重连监听死亡与 N-6 待办、604 复现/对照规则 2026-09-22 20:20:58 +08:00
wandering1 93bae35e21 TC-NET-604 根因闭环:芯片 RX 窗口冻结角(Trap 21),MSS=512 裕量方案证伪回退,缓冲布局与 MSS 解耦 + 超限读金丝雀
- 根因:CH395F 片内 TCP 状态机角(WCH 官方 FAQ 留档,W5500 同类):窗口=接收缓冲剩余空间,
  缓冲恰好填满 + 排空时序交叠后芯片 RX 静默冻结(不 RST、不自恢复),触发模式 = 同连接前序突发 +
  新突发 + 任务负载;驱动超限读丢弃与 L3 pending 均经插桩台架排除
- MSS=512 裕量实验证伪(原序列 10/10 仍停摆,且新连接 4096B 确定性停摆恒剩 64B)→ 维持 1024
- 缓冲块布局(RX 4/TX 2 块)与 SPI DMA 缓冲(接收缓冲+4)与 MSS 解耦,杜绝改 MSS 连带缩小布局
- ch395f_read_recv_buf 超限守卫改为 OVERSIZE 留痕(原静默 return 会把窗口锁死 0 且无从诊断)
- 文档:Trap 21 全记录(含 MSS=512 负结果/64B 残留/FAQ 引文/触发模式);N-1 改写(残留决策项 =
  lftpd 数据通道停摆预算 30s→10-15s 待用户决策);E-02 STOR 预测机制修正;延迟说明基线免重锁注记
- 台架复验:新连接 4096B 31ms PASS(4x1024 粒度)、竞争序列停摆复现(芯片角,已文档化)、
  停摆后重连 520ms 恢复(auto-relisten + 回显正常);芯片行为参数零变化 → M3 基线全部继续有效
2026-09-22 18:57:48 +08:00
wandering1 7ff2958b3b L3 pending化文档闭环:E-02审计两阶段闭环+演进方案§6.7实施记录+M3基线重锁(pending构建)+待处理内容.md建立(台架A/B归因) 2026-09-22 17:50:05 +08:00
wandering1 954a145c4a E-02配套调研留档:Net层阻塞模型五类业界模式对照与pending演进方案利弊/改动量/验证门禁 2026-09-22 15:35:37 +08:00
wandering1 0cacdec598 E-02审计闭环:timeSync分片修复留档(4a1605b台架A/B 28.6s→109ms)与E-02专项回归探针 2026-09-22 13:17:44 +08:00
wandering1 894b51feb3 移除 P0-a 验收探针(台架验收完成),开机省去 60ms 状态轮询与证据行 2026-09-22 12:03:11 +08:00
wandering1 4ffc097218 芯片手册图片补充 2026-09-22 11:42:10 +08:00
wandering1 06d4064366 修复 P0-a 重传周期 200ms 与 P0-b per-recv 日志,台架重锁 M2/M3 基线并复验 2026-09-22 11:36:16 +08:00
wandering1 2cffd1d2cf 文档统一:三份链路时延文档合并为链路延迟测试说明,删过程性历史,更新全部交叉引用 2026-09-22 06:52:58 +08:00
wandering1 4b78e0d36c D20调查记录修正:提交前日志复核确认成败差异为首次accept与延迟DISCONNECT事件的竞态(未改代码) 2026-09-22 06:15:57 +08:00
wandering1 e5733b3454 链路时延M1-M3收尾:Phase12-14基线与生产路径Δ实测、D10/E-02/D17修复、D20定位与硬化、文档整理 2026-09-22 06:12:40 +08:00
wandering1 ac48c6d716 E-01审计闭环:修复留档(d030cb0/70f1cc8台架验证全记录)与配置引擎超长契约同步 2026-09-22 01:37:13 +08:00
wandering1 c3f424abc0 E-31回归留档:产品固件台架验证PASS(@test闭环+既有卷resume+配置保留+全片回读一致) 2026-09-21 19:23:25 +08:00
wandering1 92048b37fe 错误码审计报告闭环:E-31 修复留档(da1a6e8)与残余首扫窗口特性及自愈策略 2026-09-21 18:40:59 +08:00
wandering1 98df006ae6 错误码审计报告闭环:E-32 修复留档(41e111b)与 E-60 三方复核证伪归档 2026-09-21 17:45:53 +08:00
wandering1 115ed00039 SD2506初始化18H改回读校验+漂移时写允许窗口修复,充电宏位与注释订正(E-32修复) 2026-09-21 17:36:48 +08:00
wandering1 ee206ab688 GD5F页读回归主线单发令(settle与二次发令移除、3.1V误判更正归一Trap05)、新增Phase11复现用例(16轮零复现)、附台架环境与审计文档 2026-09-21 16:55:05 +08:00
wandering1 f86cb8824b 存储栈RAM优化P0-1:BBT缓冲按实际载荷272B收紧,编程回读校验整体移除(向业界靠拢),新增存储栈RAM优化调研报告 2026-09-21 11:23:15 +08:00
wandering1 07c97cb3cd UI设计文档与AGENTS.md固化MCU端dark mono主题与I1调色板约束 2026-09-21 05:12:29 +08:00
wandering1 96855f6b6b 内存布局图更新到09-21最新:任务栈预算含实测峰值与判定,RAM双区/Flash布局同步 2026-09-21 05:10:01 +08:00
wandering1 80fc7ffaa5 RAM主文档v1.2:现状数据全量同步至09-21实测(总预算/静态排行/预期效果/实施状态) 2026-09-21 04:55:01 +08:00