refactor(编号): 自愈层号与 timeSync 挂起、CubeMX 三层、采集链层名清号(代码面)
批次六余账之二(代码与脚本面)。四族都是「批次一 / 三c 改了文档、漏了代码」的半改 状态。 - 日志自愈:「L1 文件级自愈」→「文件级自愈」、「L2 错误去重」→「错误去重」(正文 本来就这么叫,层号纯属多余):App/log/soe_store.c、sys_log_mcu.c 三处、 test/host/sys_log_mcu 的测试与假件头共 10 处。 - timeSync:「L3 pending 化」→ 挂起请求 / pending 化——这条口径早写在记忆里, 今天才算全仓一致。App/sync/time_sync.c 3 处。 - CubeMX 防丢失三层优先级:scripts/check_cubemx_survival.py 6 处「由 L3 升级为 L2」「L2 受保护」「L3 兜底」→ 写进 .ioc / 搬进 USER CODE 区 / 审计兜底;变迁史 句子按「换号留事实」改写、日期原样保留。 - 采集链旧层名:App/README.md「采集与算法层(L1/L2/L3)」→「采集与算法层」; protect_task.c/.h「(L3 板端接线,B5)」→「(板端接线,B5)」。 - phasor 断言文案 19 处:改为 ASCII 的 phasor-in ring(C 字面量必须纯 ASCII)。 改前先证明这些串无耦合——全仓只有本文件含它们、harness 只看 returncode 与汇总 标记;改后 phasor 57/57 与基线同数。 - 零行为:剥注释 + 套登记表后与 HEAD 逐字节 / AST 相同;sys_log_mcu 141/141、 phasor 57/57、watchdog 47/47、freq 46/46 均与动手前基线同数。 - 同一四族的文档面(CubeMX 30、采集链 5、菜单层级 2、双写 14)由下一笔收。
This commit is contained in:
@@ -62,7 +62,7 @@ BASELINE = os.path.join(REPO, ".cubemx_survival_baseline.json")
|
||||
|
||||
CHECKS = [
|
||||
# ---------------- P0:开机死循环防线 ----------------
|
||||
# ✅ 2026-10-09 由 L3 升级为 L2:不再删生成区那句 `HAL_IWDG_Init(&hiwdg)`,
|
||||
# ✅ 2026-10-09 由「审计兜底」升级为「搬进 USER CODE 区」:不再删生成区那句 `HAL_IWDG_Init(&hiwdg)`,
|
||||
# 而是在 `USER CODE BEGIN 0` 里放一个空实现 + `#define HAL_IWDG_Init(a_h)
|
||||
# iwdg_deferred_start(a_h)`,把本编译单元里那句生成调用改名到空实现。
|
||||
# → 生成区保持原样、重生成**零 diff**,不必再手工删那一句。
|
||||
@@ -84,7 +84,7 @@ CHECKS = [
|
||||
# 旧模板在函数前后给自造区(HardFault_Handler / HardFault_Report),
|
||||
# 新模板改成函数体**内部**的 `HardFault_IRQn 0` / `W1_HardFault_IRQn 0`。
|
||||
# 实测"生成区之外的自造标记区"**不会被保留**。
|
||||
# ✅ 2026-10-09 落点升级为 L2(与 iwdg 同一招):4 个 `__asm` Handler 与报告实现
|
||||
# ✅ 2026-10-09 落点升级为「搬进 USER CODE 区」(与 iwdg 同一招):4 个 `__asm` Handler 与报告实现
|
||||
# 全部放 `USER CODE BEGIN 0`(标准保护位),生成区恢复 CubeMX 原样;
|
||||
# 生成实体靠 `#define X X_Gen` 改名让位(未被引用 → 链接器自动移除)。
|
||||
# ⚠ 顺序硬约束:我们的定义必须在 4 个 `#define` **之前**,否则被自己的宏改名。
|
||||
@@ -143,8 +143,8 @@ CHECKS = [
|
||||
"须在 USER CODE BEGIN 0 区内(生成区内的标准保护位)。",
|
||||
),
|
||||
# Error_Handler 统一降级(2026-10-12;详述见看门狗设计说明.md §4.4)。函数体本身在 CubeMX 的
|
||||
# `USER CODE BEGIN/END Error_Handler_Debug` 区内(L2 受保护),重生成不丢;
|
||||
# 本项是 L3 兜底:被打回模板默认(__disable_irq+while(1) 静默挂死)**不报编译错**,
|
||||
# `USER CODE BEGIN/END Error_Handler_Debug` 区内(USER CODE 区受保护),重生成不丢;
|
||||
# 本项是审计兜底:被打回模板默认(__disable_irq+while(1) 静默挂死)**不报编译错**,
|
||||
# 只在真出外设初始化故障时暴露——整机只剩 IWDG 兜底且无自检日志。
|
||||
dict(
|
||||
id="error-handler-degrade",
|
||||
@@ -161,7 +161,7 @@ CHECKS = [
|
||||
# ---------------- P1:FreeRTOS 加固 ----------------
|
||||
# ⚠ 2026-10-09 升级:这两项原先靠 FreeRTOSConfig.h 里**自造**的
|
||||
# `USER CODE BEGIN FREE_RTOS_CONFIG_HARDENING` 区——模板不认这个区名,
|
||||
# 重生成连标记带内容一起消失(实测两次)。现已改为 **L1 写进 .ioc**:
|
||||
# 重生成连标记带内容一起消失(实测两次)。现已改为 **写进 .ioc**:
|
||||
# GUI = FreeRTOS 页 → "Config parameters" 标签 → "Hook function related
|
||||
# definitions" 组 → CHECK_FOR_STACK_OVERFLOW=2 / USE_MALLOC_FAILED_HOOK=1,
|
||||
# 由 CubeMX 模板自己生成到 FreeRTOSConfig.h,永不被打回。
|
||||
@@ -312,7 +312,7 @@ CHECKS = [
|
||||
# (FadcConstraint Max=36000000;APB2=84 MHz → DIV2=42 MHz 超限,选不到),
|
||||
# .ioc 虽不保存 ADC1.ClockPrescaler 键,重生成也只会回落到约束允许的值。
|
||||
# ADC1 上电自校准(2026-10-10 补):RM0090 §13.3.6 的**必需**步骤,CubeMX **不生成**,
|
||||
# 且本仓库裁剪版 HAL **没有** HAL_ADCEx_Calibration_Start → 只能手写(L2),
|
||||
# 且本仓库裁剪版 HAL **没有** HAL_ADCEx_Calibration_Start → 只能手写(搬进 USER CODE 区),
|
||||
# 故必须在此兜底。丢了它不报编译错,只让 ADC 带失调误差(难从日志看出)。
|
||||
dict(
|
||||
id="adc1-calibration-call",
|
||||
|
||||
Reference in New Issue
Block a user