# App/sync/ — 时间同步 > 墙钟时间与外部时间源的同步(timeSyncTask)。墙钟本身由 `../util/sys_clock.c` 维护, > 本目录负责**从时间源拉取/接收时间并校准**。 ## 文件一览 | 文件 | 作用 | |---|---| | `time_sync.c/h` | **时间同步任务载体**:等待网络就绪 → 200 ms 节拍驱动 SNTP 客户端(:8888 私有推送已于 2026-11-04 退役,理由见墙钟维护说明 §15) | | `time_sntp.c/h` | **SNTP 校时客户端**(2026-11-04 落地):由 time_sync 任务循环驱动的 UDP/123 轮询,编解码用 `Lib/coreSNTP/` 序列化器,配置读 `[sntp]` 段(属主 `../../Drivers/BSP/NETCFG/sntp_cfg.c`);单测 `test/host/sntp/` | ## 工作流 ``` timeSyncTask 启动 ↓ osEventFlagsWait(SYS_EVT_NET_READY, ...|osFlagsNoClear) // 状态位不可消费! time_sync 主循环(200 ms 节拍,长等待分片 ≤50ms 逐片喂心跳) ↘ 每轮 time_sntp_run(gen):到点主动向 [sntp] 服务器发 48 B 查询 (单轮等待切片 ≤50 ms),校验通过按策略步进/只记日志, 首个通过的同步置 SYS_EVT_TIMESYNC_READY;网络代次变化自弃旧 socket ``` > ⚠️ 等待**就绪位**(`SYS_EVT_NET_READY`)必须 `osFlagsNoClear`——它是状态位, > 用默认消费型等待会把它清掉,导致后续消费者(如 ftpTask)永远等不到。 ## 相关文档 - `docs/子系统设计/系统墙钟时间维护说明.md` — 墙钟基准 / tick 回绕防护 / §15 :8888 退役注记 / §16 SNTP - `docs/架构设计/项目启动顺序管理.md` — 就绪屏障