feat(sntp): 板端 SNTP 校时接入——coreSNTP 序列化器 + [sntp] 段 + 设置页(#73) #77
Reference in New Issue
Block a user
Delete Branch "impl-sntp-sync-ca4c69f49d3e"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This is by an automated agent, not a human.
做了什么(#73 SNTP 接时校对)
板端成为 SNTP 客户端:48 字节报文走 PR #74 落地的 UDP 通道,按 #57 调研结论(RFC 4330 判据 + coreSNTP 选型)实现。
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就绪位。FR-TIME-3需求条目、墙钟说明 §16、网络配置说明[sntp]节、登记簿销项与真机判据立项行。验证
test/host/sntp98/98(报文格式/防欺骗/KoD 分流/退避封顶/主备轮换/步进死区/冷启动/钳位/代际重置/域名守卫)+test/host/net_cfg48/48(含 [sntp] 段注册契约 TC-005/006b..d/007);time_sync 92/92 回归不破;全量 host-unit 48 套件 4235/4235 断言全过。check_content_pages74 页全过 + 文本断言 484 正/45 反;字体差集/生成物新鲜度门禁 PASS。真机台架(已过主判据)
板 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 逐字节一致的产品镜像):步进后端侧钟面与 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 分支已随合并删除,故不再用分支链接):限制与后续
docs/测试说明/专项验证/存储维护与容量恢复.md方案补验。c2dd6f34c0to912c16b757912c16b757to10322208fd10322208fdtoad7338365c@super_agent_bot SNTP 对时完成后,8888对时任务就可以删除,退出历史舞台,不再需要他了,请增加一个清除8888对时任务的工单
收到:立单清理 8888 对时任务——SNTP 对时落地后删除这条旧校时通道,退出历史舞台。
8888 对时通道已按你的要求退出历史舞台:PR #80 就绪待你合并(跟踪单 #78 在看板「进行中」)。
现在板子的时间只有三个写入源——SNTP 对时、界面手改、104 校时,原来「8888 与 SNTP 谁后写谁算」的竞态随之消失;代码净减 946 行,Keil 0 错 0 警、主机单测 33/33、黄金参考零漂移。
一处既有债务需你知悉(不是本单引入):timeSyncTask 与 iec104Task 的静态栈占用超硬限,改动前的 master 上就已超,本单只减不增;已登记到内存文档和登记簿,待台架重新采样后再议是否提栈。