Files
STM32F4-Base/.cubemx_survival_baseline.json
T
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

22 lines
812 B
JSON

{
"snapshot": {
"iwdg-defer-start": "0aad7da77d2ed59c",
"hardfault-report": "83aa6eee48e67318",
"hardfault-report-impl": "20bee193982cd39b",
"stack-overflow-check": "4548c9c6ef1b2409",
"malloc-failed-hook": "4548c9c6ef1b2409",
"assert-not-deadloop": "d4a00718ab2bd071",
"assert-impl": "b7fd1fadb4522edf",
"stack-overflow-hook-impl": "b7fd1fadb4522edf",
"watchdog-module": "3c70ea43ff03523e",
"watchdog-in-project": "328ce92129bdc449",
"reset-cause-latch": "52fc71acbb0f1aed",
"iwdg-hal-driver": "4b902875a84554e9",
"hal-iwdg-enabled": "c8c9b916b05464b9",
"ioc-keepusercode": "b5bea41b6c623f7c",
"ioc-iwdg-present": "d3a6e667048c95db",
"ioc-task-stacks": "72969c5a8569f4d2"
},
"_note": "CubeMX 存活审计基线;改动用 --write 重建"
}