Files
wandering1 da36f4ba56 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)由下一笔收。
2026-10-28 18:52:37 +08:00
..

App/sync/ — 时间同步

墙钟时间与外部时间源的同步(timeSyncTask)。墙钟本身由 ../util/sys_clock.c 维护, 本目录负责从时间源拉取/接收时间并校准。

文件一览

文件 作用
time_sync.c/h 时间同步任务:等待网络就绪 → 与时间源交互 → 校准墙钟

工作流

timeSyncTask 启动
   ↓ osEventFlagsWait(SYS_EVT_NET_READY, ...|osFlagsNoClear)   // 状态位不可消费!
time_sync 主循环 → 与时间源通信 → sys_clock 校准
   ↓
置 SYS_EVT_TIMESYNC_READY

⚠️ 等待就绪位(SYS_EVT_NET_READY)必须 osFlagsNoClear——它是状态位, 用默认消费型等待会把它清掉,导致后续消费者(如 ftpTask)永远等不到。

相关文档

  • docs/子系统设计/系统墙钟时间维护说明.md — 墙钟基准 / tick 回绕防护
  • test/host/time_sync_server.py — PC 端对时推送服务(测试用)
  • docs/架构设计/项目启动顺序管理.md — 就绪屏障