feat(sntp): 板端 SNTP 校时接入——coreSNTP 序列化器 + [sntp] 段 + 设置页(#73) #77

Merged
wandering1 merged 1 commits from impl-sntp-sync-ca4c69f49d3e into master 2026-11-04 16:46:35 +08:00
Collaborator

This is by an automated agent, not a human.

做了什么(#73 SNTP 接时校对)

板端成为 SNTP 客户端:48 字节报文走 PR #74 落地的 UDP 通道,按 #57 调研结论(RFC 4330 判据 + coreSNTP 选型)实现。

  • vendor coreSNTP v2.0.0 序列化器:Lib/coreSNTP/(MIT LICENSE 随包)。只取 serializer 层——报文构造/Timestamp 换算/OriginTimestamp 逐位校验(含低 16 位随机数防欺骗);客户端节奏按调研留在我们自己的任务里。
  • [sntp] 配置段:数据本体 Drivers/BSP/NETCFG/sntp_cfg.c(enable / server1 / server2 / poll_min 1..1440 缺省 60,出厂默认关闭、服务器空),段描述符由 net_cfg.c 组装、随 net_cfg_load() 注册(layer-deps 门禁口径:BSP 不反向 include 配置引擎头,同 ftp 先例的编排上收写法)。改配置经既有 NET_RECONFIG/代际链生效。
  • 校时客户端 App/sync/time_sntp.c:挂在 timeSyncTask 既有 200ms 循环内(单片 recv ≤50ms,喂狗不破口)。首轮 1~5 min 随机、成功按 poll_min 周期、失败 5s 起指数退避封顶 60s、主备轮换;KoD DENY/RSTR 换服务器、RATE 只退避;LI=3 / stratum>15 / 源地址端口判据齐(调研 §5.3)。步进策略(§5.5):|offset|<2s 只记录不步进;冷启动直接用服务器时间。钟面写入口=本地 UTC+8 固定偏移(墙钟说明 §1.1 裁决),带 SYS_EVT_TIMESYNC_READY 就绪位。
  • UI 页面 31「SNTP设置」(密码叶):启用开关 + 主备 IP 字节编辑 + 周期(分) + 保存(复用 netcfg 保存链)。菜单树绑定 + gen_menu 重生成 + 字体集重生成 + 8 张新黄金参考(66→74 张,旧 66 张参考逐字节零漂移)。
  • 数字台账/文档随批:RAM·Flash 台账回填、FR-TIME-3 需求条目、墙钟说明 §16、网络配置说明 [sntp] 节、登记簿销项与真机判据立项行。

验证

  • 主机单测:新增 test/host/sntp 98/98(报文格式/防欺骗/KoD 分流/退避封顶/主备轮换/步进死区/冷启动/钳位/代际重置/域名守卫)+ test/host/net_cfg 48/48(含 [sntp] 段注册契约 TC-005/006b..d/007);time_sync 92/92 回归不破;全量 host-unit 48 套件 4235/4235 断言全过。
  • 覆盖率基线已回填(只增不减闸通过):time_sntp.c 行 91.5%、sntp_cfg.c 85.2%。
  • Keil 产品构建 0 Error / 0 Warning:Code 254,648 B(+5,528 B vs 249,120),RO+RW 286,872 ≤ 327,680,RW_IRAM1 72.3% / RW_CCM 87.9%(≤92% 门禁,attestation 随提交)。
  • 模拟器黄金:check_content_pages 74 页全过 + 文本断言 484 正/45 反;字体差集/生成物新鲜度门禁 PASS。
  • CI(ci_local 全量):static 48/48、cppcheck/test-cppcheck/test-coverage/size-gate 全绿;gitlint 仅 c9c9dc8b(master 既有红条,与本 PR 无关,本 PR 提交全过)。

真机台架(已过主判据)

板 192.168.31.100 ↔ PC SNTP 192.168.31.161(W32Time 应答先经探测确认 LI=0/mode=4/stratum=5、Origin 逐位回显)。注意:该板 NAND 卷为既有故障(f_mount fr=1、LPN=211 TOO_BAD——改动前固件与旧日志同样复现,与本 PR 无关),config.ini/FTP/配置持久化链路在板上不可用,故对时闭环用临时未提交构建把 [sntp] 出厂默认改写为「启用 + 192.168.31.161 + poll 1 分」注入(验后已还原并重刷与 HEAD 逐字节一致的产品镜像):

[16:31:02][NET_TASK] net init: OK            ← 钟面 08:31(8 小时慢,出厂态)
[16:31:03][TIME_SYNC] TCP listen on :8888     ← 与旧通道并存正常
[16:33:25][SNTP] step offset=28799447ms face=1793810005   ← 首轮步进(净偏差≈-0.55 s,1~5 min 随机窗内)
[16:34:25][SNTP] off=446ms within deadband, no step       ← 1 min 周期复校,<2 s 只记录不步进
[16:35:25][SNTP] off=444ms within deadband, no step
[16:36:25][SNTP] off=442ms within deadband, no step
--- 还原产品镜像(出厂默认 enable=0)软复位后 ---
[16:37:07][APP] App init OK                   ← 钟面直接 16:37,SD2506 回写跨复位保持

步进后端侧钟面与 PC 同秒一致,连续三轮按 1 min(临时 poll_min=1)复校、残差 446/444/442 ms 稳定在死区内;face=1793810005 = 本地钟面(UTC+8 落盘,§1.1 口径);换回未启用 SNTP 的产品镜像重启后钟面即正确,证明步进已回写 SD2506。拔线退避/主备切换判据与「UI 保存→config.ini→重启加载」链路因该板存储故障暂不可验,待存储修复授权后按 docs/测试说明/专项验证/存储维护与容量恢复.md 补验(登记簿 §7 保留该行)。

Before / After(UI 变化)

同一按键路径(主页 → 下×5 → 进入 → 下×2 → 进入 → 密码)对比,两侧均为模拟器同视口实际截图。图片已随本 PR 提交入库(docs/UI设计/mockups/),链接固定到合并前提交 ad733836(head 分支已随合并删除,故不再用分支链接):

  • Before(基线 c1beec50,改动前 master):「通讯参数 → SNTP设置」为未绑定叶子——密码门后无页面,停在菜单。
  • After(本 PR):同一路径落「SNTP设置」配置页(启用/主备服务器/周期/保存五行);编辑器光标态、保存态 OK 等另有截图态黄金参考 shot_sntp*.bin 入库(66→74 张)。
Before(c1beec50) After(本 PR)
Before:密码门后无页面,停在菜单 After:SNTP设置页(默认值态)

限制与后续

  • 台架板存储卷既有故障(与本 PR 无关)导致「UI 保存→config.ini→重启加载」与拔线退避/主备切换链路暂无法在该板验证(见上节),主机单测已覆盖其全部判据;待存储修复授权后按 docs/测试说明/专项验证/存储维护与容量恢复.md 方案补验。
  • 时钟双写入口(8888 推送 vs SNTP)维持「后写者赢」现状,未加仲裁(墙钟说明 §16 已记录)。
This is by an automated agent, not a human. ## 做了什么(#73 SNTP 接时校对) 板端成为 SNTP 客户端:48 字节报文走 PR #74 落地的 UDP 通道,按 #57 调研结论(RFC 4330 判据 + coreSNTP 选型)实现。 - **vendor coreSNTP v2.0.0 序列化器**:`Lib/coreSNTP/`(MIT LICENSE 随包)。只取 serializer 层——报文构造/Timestamp 换算/OriginTimestamp 逐位校验(含低 16 位随机数防欺骗);客户端节奏按调研留在我们自己的任务里。 - **`[sntp]` 配置段**:数据本体 `Drivers/BSP/NETCFG/sntp_cfg.c`(enable / server1 / server2 / poll_min 1..1440 缺省 60,出厂默认关闭、服务器空),段描述符由 net_cfg.c 组装、随 `net_cfg_load()` 注册(layer-deps 门禁口径:BSP 不反向 include 配置引擎头,同 ftp 先例的编排上收写法)。改配置经既有 `NET_RECONFIG`/代际链生效。 - **校时客户端** `App/sync/time_sntp.c`:挂在 timeSyncTask 既有 200ms 循环内(单片 recv ≤50ms,喂狗不破口)。首轮 1~5 min 随机、成功按 poll_min 周期、失败 5s 起指数退避封顶 60s、主备轮换;KoD DENY/RSTR 换服务器、RATE 只退避;LI=3 / stratum>15 / 源地址端口判据齐(调研 §5.3)。步进策略(§5.5):|offset|<2s 只记录不步进;冷启动直接用服务器时间。钟面写入口=本地 UTC+8 固定偏移(墙钟说明 §1.1 裁决),带 `SYS_EVT_TIMESYNC_READY` 就绪位。 - **UI 页面 31「SNTP设置」**(密码叶):启用开关 + 主备 IP 字节编辑 + 周期(分) + 保存(复用 netcfg 保存链)。菜单树绑定 + gen_menu 重生成 + 字体集重生成 + 8 张新黄金参考(66→74 张,旧 66 张参考逐字节零漂移)。 - 数字台账/文档随批:RAM·Flash 台账回填、`FR-TIME-3` 需求条目、墙钟说明 §16、网络配置说明 `[sntp]` 节、登记簿销项与真机判据立项行。 ## 验证 - 主机单测:新增 `test/host/sntp` **98/98**(报文格式/防欺骗/KoD 分流/退避封顶/主备轮换/步进死区/冷启动/钳位/代际重置/域名守卫)+ `test/host/net_cfg` **48/48**(含 [sntp] 段注册契约 TC-005/006b..d/007);time_sync 92/92 回归不破;全量 host-unit **48 套件 4235/4235** 断言全过。 - 覆盖率基线已回填(只增不减闸通过):time_sntp.c 行 91.5%、sntp_cfg.c 85.2%。 - Keil 产品构建 **0 Error / 0 Warning**:Code 254,648 B(+5,528 B vs 249,120),RO+RW 286,872 ≤ 327,680,RW_IRAM1 72.3% / RW_CCM 87.9%(≤92% 门禁,attestation 随提交)。 - 模拟器黄金:`check_content_pages` 74 页全过 + 文本断言 484 正/45 反;字体差集/生成物新鲜度门禁 PASS。 - CI(ci_local 全量):static 48/48、cppcheck/test-cppcheck/test-coverage/size-gate 全绿;gitlint 仅 c9c9dc8b(master 既有红条,与本 PR 无关,本 PR 提交全过)。 ## 真机台架(已过主判据) 板 192.168.31.100 ↔ PC SNTP 192.168.31.161(W32Time 应答先经探测确认 LI=0/mode=4/stratum=5、Origin 逐位回显)。注意:该板 NAND 卷为**既有故障**(`f_mount fr=1`、LPN=211 TOO_BAD——改动前固件与旧日志同样复现,与本 PR 无关),config.ini/FTP/配置持久化链路在板上不可用,故对时闭环用**临时未提交构建**把 `[sntp]` 出厂默认改写为「启用 + 192.168.31.161 + poll 1 分」注入(验后已还原并重刷与 HEAD 逐字节一致的产品镜像): ```text [16:31:02][NET_TASK] net init: OK ← 钟面 08:31(8 小时慢,出厂态) [16:31:03][TIME_SYNC] TCP listen on :8888 ← 与旧通道并存正常 [16:33:25][SNTP] step offset=28799447ms face=1793810005 ← 首轮步进(净偏差≈-0.55 s,1~5 min 随机窗内) [16:34:25][SNTP] off=446ms within deadband, no step ← 1 min 周期复校,<2 s 只记录不步进 [16:35:25][SNTP] off=444ms within deadband, no step [16:36:25][SNTP] off=442ms within deadband, no step --- 还原产品镜像(出厂默认 enable=0)软复位后 --- [16:37:07][APP] App init OK ← 钟面直接 16:37,SD2506 回写跨复位保持 ``` 步进后端侧钟面与 PC 同秒一致,连续三轮按 1 min(临时 poll_min=1)复校、残差 446/444/442 ms 稳定在死区内;`face=1793810005` = 本地钟面(UTC+8 落盘,§1.1 口径);换回未启用 SNTP 的产品镜像重启后钟面即正确,证明步进已回写 SD2506。拔线退避/主备切换判据与「UI 保存→config.ini→重启加载」链路因该板存储故障暂不可验,待存储修复授权后按 `docs/测试说明/专项验证/存储维护与容量恢复.md` 补验(登记簿 §7 保留该行)。 ## Before / After(UI 变化) 同一按键路径(主页 → 下×5 → 进入 → 下×2 → 进入 → 密码)对比,两侧均为模拟器同视口实际截图。图片已随本 PR 提交入库(`docs/UI设计/mockups/`),链接固定到合并前提交 `ad733836`(head 分支已随合并删除,故不再用分支链接): - **Before(基线 c1beec50,改动前 master)**:「通讯参数 → SNTP设置」为未绑定叶子——密码门后无页面,停在菜单。 - **After(本 PR)**:同一路径落「SNTP设置」配置页(启用/主备服务器/周期/保存五行);编辑器光标态、保存态 OK 等另有截图态黄金参考 shot_sntp*.bin 入库(66→74 张)。 | Before(c1beec50)| After(本 PR)| |---|---| | ![Before:密码门后无页面,停在菜单](http://100.123.83.113:3001/wandering1/STM32F4-Base/media/commit/ad7338365c3ac380c415fb821c464435f81da854/docs/UI%E8%AE%BE%E8%AE%A1/mockups/31_SNTP%E8%AE%BE%E7%BD%AE_%E8%90%BD%E5%9C%B0%E5%89%8D_%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%88%AA%E5%9B%BE.png) | ![After:SNTP设置页(默认值态)](http://100.123.83.113:3001/wandering1/STM32F4-Base/media/commit/ad7338365c3ac380c415fb821c464435f81da854/docs/UI%E8%AE%BE%E8%AE%A1/mockups/31_SNTP%E8%AE%BE%E7%BD%AE_%E8%90%BD%E5%9C%B0%E5%90%8E_%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%88%AA%E5%9B%BE.png) | ## 限制与后续 - 台架板存储卷既有故障(与本 PR 无关)导致「UI 保存→config.ini→重启加载」与拔线退避/主备切换链路暂无法在该板验证(见上节),主机单测已覆盖其全部判据;待存储修复授权后按 `docs/测试说明/专项验证/存储维护与容量恢复.md` 方案补验。 - 时钟双写入口(8888 推送 vs SNTP)维持「后写者赢」现状,未加仲裁(墙钟说明 §16 已记录)。
super_agent_bot force-pushed impl-sntp-sync-ca4c69f49d3e from c2dd6f34c0 to 912c16b757 2026-11-04 16:03:06 +08:00 Compare
super_agent_bot force-pushed impl-sntp-sync-ca4c69f49d3e from 912c16b757 to 10322208fd 2026-11-04 16:13:38 +08:00 Compare
super_agent_bot added 1 commit 2026-11-04 16:20:35 +08:00
feat(sntp): 板端 SNTP 校时接入——coreSNTP 序列化器 + [sntp] 段 + 设置页(#73)
CI / 静态门禁 (pre-commit) (push) Failing after 6m14s
CI / 主机侧单测 (MSVC) (push) Successful in 54s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 4m35s
CI / 主机侧单测 (MSVC) (pull_request) Successful in 47s
ad7338365c
- vendored coreSNTP v2.0.0 序列化器(MIT,仅 serializer+LICENSE,零堆),
  48 字节报文编解码在库,节奏与准入判据在本方(RFC 4330 §10 调研口径)
- App/sync/time_sntp.c 挂 timeSyncTask 的 8888 事件循环,等待切片 ≤50 ms,
  不饿任务狗与 IWDG;懒建 UDP socket,代际变化/禁用/死错误码即关闭归还
- 防伪 = OriginTimestamp 逐位等于发出时 T1(含低 16 位随机小数位);
  mode/stratum/闰秒指示/KoD 按 RFC 拒收;DENY·RSTR 换服务器、RATE 只退避
- 主备轮换 + 失败指数退避(5 s 起、60 s 封顶)+ 首轮 1~5 分钟随机错峰;
  成功恢复 poll_min 周期(1~1440 分,出厂默认 60,默认不启用不发包)
- 钟面 = 本地时间:UTC+8 固定偏移落 sys_clock_set_unix(§1.1 时基裁定,
  第三个写入口,装置仍不存时区);|offset|<2 s 只记日志不步进,冷启动或
  更大偏差步进并回写 SD2506,留痕 [SNTP] step 与 syslog OPER
- 首个校验通过的同步置 SYS_EVT_TIMESYNC_READY(就绪位,消费方按需 NoClear)
- [sntp] 配置段(enable/server1/server2/poll_min)属主 sntp_cfg.c,
  注册在 net_cfg_load();UI 页 31「SNTP 设置」(密码叶):启用开关 +
  主/备服务器 octet 编辑 + 周期(分) + 保存,复用 net_cfg_save_request 链
- 测试与门禁:test/host/sntp 新套件(报文/防伪/KoD/退避周期/阶跃域/配置
  注册表)、net_cfg 与 time_sync 套件补 fake、黄金参考 66→74 张零漂移、
  字符集 228 字、Keil 0 错 0 警(RO +5,848 B 含字体)、覆盖率基线回填
- 文档:墙钟维护说明 §16、网络配置说明 [sntp] 节、配置文件设计说明变更记录、
  产品需求 FR-TIME-3 与 8.3/9.1.2 台账、UI 补齐规划/UI补齐 31 叶口径、
  登记簿销项并登记「SNTP 校时真机判据」等台架(PC 时间源 192.168.31.161/.13)
super_agent_bot force-pushed impl-sntp-sync-ca4c69f49d3e from 10322208fd to ad7338365c 2026-11-04 16:20:35 +08:00 Compare
Owner

This is by an automated agent, not a human.

做了什么(#73 SNTP 接时校对)

板端成为 SNTP 客户端:48 字节报文走 PR #74 落地的 UDP 通道,按 #57 调研结论(RFC 4330 判据 + coreSNTP 选型)实现。

  • vendor coreSNTP v2.0.0 序列化器:Lib/coreSNTP/(MIT LICENSE 随包)。只取 serializer 层——报文构造/Timestamp 换算/OriginTimestamp 逐位校验(含低 16 位随机数防欺骗);客户端节奏按调研留在我们自己的任务里。
  • [sntp] 配置段:Drivers/BSP/NETCFG/sntp_cfg.c(enable / server1 / server2 / poll_min 1..1440 缺省 60,出厂默认关闭、服务器空)。随 net_cfg_load() 注册,改配置经既有 NET_RECONFIG/代际链生效。
  • 校时客户端 App/sync/time_sntp.c:挂在 timeSyncTask 既有 200ms 循环内(单片 recv ≤50ms,喂狗不破口)。首轮 1~5 min 随机、成功按 poll_min 周期、失败 5s 起指数退避封顶 60s、主备轮换;KoD DENY/RSTR 换服务器、RATE 只退避;LI=3 / stratum>15 / 源地址端口判据齐(调研 §5.3)。步进策略(§5.5):|offset|<2s 只记录不步进;冷启动直接用服务器时间。钟面写入口=本地 UTC+8 固定偏移(墙钟说明 §1.1 裁决),带 SYS_EVT_TIMESYNC_READY 就绪位。
  • UI 页面 31「SNTP设置」(密码叶):启用开关 + 主备 IP 字节编辑 + 周期(分) + 保存(复用 netcfg 保存链)。菜单树绑定 + gen_menu 重生成 + 字体集重生成 + 8 张新黄金参考(66→74 张,66 张旧参考零漂移)。
  • 数字台账/文档随批:RAM·Flash 台账回填、FR-TIME-3 需求条目、墙钟说明 §16、网络配置说明 [sntp] 节、登记簿销项与真机判据立项行。

验证

  • 主机单测:新增 test/host/sntp 107/107(报文格式/防欺骗/KoD 分流/退避封顶/主备轮换/步进死区/冷启动/配置钳位/代际重置/域名守卫);全量 host-unit 套件绿(net_cfg 46/46 含新增 [sntp] 注册断言、time_sync 41/41 回归不破)。
  • 覆盖率基线已回填:time_sntp.c 行 91.5%、sntp_cfg.c 85.2%。
  • Keil 产品构建 0 Error / 0 Warning:Code 254,652 B(+5,532 B),RO+RW 286,884 ≤ 327,680,RW_IRAM1 72.3% / RW_CCM 87.9%(≤92% 门禁,attestation 已随提交)。
  • 模拟器黄金:check_content_pages 74 页全过 + 文本断言 484 正/45 反;字体差集门禁 PASS。

Before / After(UI 变化)

同一按键路径(主页 → 下×5 → 进入 → 下×2 → 进入 → 密码)对比,两侧均为模拟器同视口实际截图:

  • Before(基线 c1beec50,改动前 master):「通讯参数 → SNTP设置」为未绑定叶子——密码门后无页面,停在菜单。
  • After(本 PR c2dd6f34):同一路径落「SNTP设置」配置页(启用/主备服务器/周期/保存五行);编辑器光标态、保存态 OK 等另有截图态黄金参考 shot_sntp*.bin 入库(66→74 张)。
Before(c1beec50) After(本 PR)
Before:密码门后无页面,停在菜单 After:SNTP设置页(默认值态)

限制与后续

  • 真机台架对时闭环(板 192.168.31.100 ↔ PC SNTP 192.168.31.161/.13)判据已登记 §7,台架结果见本 PR 后续评论;主机侧判据已全部覆盖。
  • 时钟双写入口(8888 推送 vs SNTP)维持「后写者赢」现状,未加仲裁(墙钟说明 §16 已记录)。

@super_agent_bot SNTP 对时完成后,8888对时任务就可以删除,退出历史舞台,不再需要他了,请增加一个清除8888对时任务的工单

> This is by an automated agent, not a human. > > ## 做了什么(#73 SNTP 接时校对) > > 板端成为 SNTP 客户端:48 字节报文走 PR #74 落地的 UDP 通道,按 #57 调研结论(RFC 4330 判据 + coreSNTP 选型)实现。 > > - **vendor coreSNTP v2.0.0 序列化器**:`Lib/coreSNTP/`(MIT LICENSE 随包)。只取 serializer 层——报文构造/Timestamp 换算/OriginTimestamp 逐位校验(含低 16 位随机数防欺骗);客户端节奏按调研留在我们自己的任务里。 > - **`[sntp]` 配置段**:`Drivers/BSP/NETCFG/sntp_cfg.c`(enable / server1 / server2 / poll_min 1..1440 缺省 60,出厂默认关闭、服务器空)。随 `net_cfg_load()` 注册,改配置经既有 `NET_RECONFIG`/代际链生效。 > - **校时客户端** `App/sync/time_sntp.c`:挂在 timeSyncTask 既有 200ms 循环内(单片 recv ≤50ms,喂狗不破口)。首轮 1~5 min 随机、成功按 poll_min 周期、失败 5s 起指数退避封顶 60s、主备轮换;KoD DENY/RSTR 换服务器、RATE 只退避;LI=3 / stratum>15 / 源地址端口判据齐(调研 §5.3)。步进策略(§5.5):|offset|<2s 只记录不步进;冷启动直接用服务器时间。钟面写入口=本地 UTC+8 固定偏移(墙钟说明 §1.1 裁决),带 `SYS_EVT_TIMESYNC_READY` 就绪位。 > - **UI 页面 31「SNTP设置」**(密码叶):启用开关 + 主备 IP 字节编辑 + 周期(分) + 保存(复用 netcfg 保存链)。菜单树绑定 + gen_menu 重生成 + 字体集重生成 + 8 张新黄金参考(66→74 张,66 张旧参考零漂移)。 > - 数字台账/文档随批:RAM·Flash 台账回填、`FR-TIME-3` 需求条目、墙钟说明 §16、网络配置说明 `[sntp]` 节、登记簿销项与真机判据立项行。 > > ## 验证 > > - 主机单测:新增 `test/host/sntp` **107/107**(报文格式/防欺骗/KoD 分流/退避封顶/主备轮换/步进死区/冷启动/配置钳位/代际重置/域名守卫);全量 host-unit 套件绿(net_cfg 46/46 含新增 [sntp] 注册断言、time_sync 41/41 回归不破)。 > - 覆盖率基线已回填:time_sntp.c 行 91.5%、sntp_cfg.c 85.2%。 > - Keil 产品构建 **0 Error / 0 Warning**:Code 254,652 B(+5,532 B),RO+RW 286,884 ≤ 327,680,RW_IRAM1 72.3% / RW_CCM 87.9%(≤92% 门禁,attestation 已随提交)。 > - 模拟器黄金:`check_content_pages` 74 页全过 + 文本断言 484 正/45 反;字体差集门禁 PASS。 > > ## Before / After(UI 变化) > > 同一按键路径(主页 → 下×5 → 进入 → 下×2 → 进入 → 密码)对比,两侧均为模拟器同视口实际截图: > > - **Before(基线 c1beec50,改动前 master)**:「通讯参数 → SNTP设置」为未绑定叶子——密码门后无页面,停在菜单。 > - **After(本 PR c2dd6f34)**:同一路径落「SNTP设置」配置页(启用/主备服务器/周期/保存五行);编辑器光标态、保存态 OK 等另有截图态黄金参考 shot_sntp*.bin 入库(66→74 张)。 > > | Before(c1beec50)| After(本 PR)| > |---|---| > | ![Before:密码门后无页面,停在菜单](attachment:before_page.png) | ![After:SNTP设置页(默认值态)](attachment:after_page.png) | > > ## 限制与后续 > > - 真机台架对时闭环(板 192.168.31.100 ↔ PC SNTP 192.168.31.161/.13)判据已登记 §7,台架结果见本 PR 后续评论;主机侧判据已全部覆盖。 > - 时钟双写入口(8888 推送 vs SNTP)维持「后写者赢」现状,未加仲裁(墙钟说明 §16 已记录)。 > @super_agent_bot SNTP 对时完成后,8888对时任务就可以删除,退出历史舞台,不再需要他了,请增加一个清除8888对时任务的工单
Author
Collaborator

收到:立单清理 8888 对时任务——SNTP 对时落地后删除这条旧校时通道,退出历史舞台。

收到:立单清理 8888 对时任务——SNTP 对时落地后删除这条旧校时通道,退出历史舞台。 <!-- dsh-superagent:9618213ac7cf99d9b48136dce514e54c -->
wandering1 merged commit 2b848c4a0b into master 2026-11-04 16:46:35 +08:00
wandering1 deleted branch impl-sntp-sync-ca4c69f49d3e 2026-11-04 16:46:42 +08:00
Author
Collaborator

8888 对时通道已按你的要求退出历史舞台:PR #80 就绪待你合并(跟踪单 #78 在看板「进行中」)。

现在板子的时间只有三个写入源——SNTP 对时、界面手改、104 校时,原来「8888 与 SNTP 谁后写谁算」的竞态随之消失;代码净减 946 行,Keil 0 错 0 警、主机单测 33/33、黄金参考零漂移。

一处既有债务需你知悉(不是本单引入):timeSyncTask 与 iec104Task 的静态栈占用超硬限,改动前的 master 上就已超,本单只减不增;已登记到内存文档和登记簿,待台架重新采样后再议是否提栈。

8888 对时通道已按你的要求退出历史舞台:[PR #80](http://100.123.83.113:3001/wandering1/STM32F4-Base/pulls/80) 就绪待你合并(跟踪单 [#78](http://100.123.83.113:3001/wandering1/STM32F4-Base/issues/78) 在看板「进行中」)。 现在板子的时间只有三个写入源——SNTP 对时、界面手改、104 校时,原来「8888 与 SNTP 谁后写谁算」的竞态随之消失;代码净减 946 行,Keil 0 错 0 警、主机单测 33/33、黄金参考零漂移。 一处既有债务需你知悉(不是本单引入):timeSyncTask 与 iec104Task 的静态栈占用超硬限,改动前的 master 上就已超,本单只减不增;已登记到内存文档和登记簿,待台架重新采样后再议是否提栈。 <!-- dsh-superagent:07b11a66e9a50184e09a504efb8ed2ce -->
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wandering1/STM32F4-Base#77