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)
MDK-ARM/ — Keil MDK-ARM v5 工程与构建/烧录/探针脚本
唯一工具链:Keil MDK-ARM v5(ARMCC,C99)。本目录含工程文件、启动文件、 命令行构建/烧录脚本,以及台架探针与判读脚本。
关键文件
| 文件/目录 | 作用 |
|---|---|
STM32F407-Demo.uvprojx |
Keil 工程文件(源文件清单、编译选项、目标配置) |
STM32F407-Demo.uvoptx |
Keil 用户选项(调试器、断点等) |
startup_stm32f407xx.s |
启动文件(Heap_Size EQU 0x200(512B)在此限定) |
.dsh/skills/stlink-flash/scripts/stlink_flash.py |
复位/烧录/回读(ST-LINK_CLI 封装,见下;原 reset.bat 已于 2026-10-10 删除) |
构建与烧录
# 编译(keil-build skill 的 keil_build.py;相对路径,勿用绝对路径)
& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # 退出码 0 = 0 errors, 0 warnings
# 烧录 + 复位运行(@download = stlink-flash skill)
& '.venv\Scripts\python.exe' .dsh\skills\stlink-flash\scripts\stlink_flash.py flash <文件.hex|.bin>
# 仅复位
& '.venv\Scripts\python.exe' .dsh\skills\stlink-flash\scripts\stlink_flash.py reset
⚠️ 烧录铁律
stlink_flash.py flash=ST-LINK_CLI -c SWD -P <文件> -Rst -Run——-Rst -Run不可省略! 裸-P会报Programming Complete,但目标核处于异常状态时写入并不落地(芯片内容不变)- 烧录后必须回读校验:
ST-LINK_CLI -c SWD -CmpFile <文件> 0x08000000(No difference found才算真写入) - 本机 3 线接线(nRST 未接),只重启不烧录用
stlink_flash.py reset
台架探针与判读脚本
| 脚本 | 作用 |
|---|---|
bench_verdict.py |
台架判读(把运行结果判为 PASS/FAIL) |
ftp_freeze_probe.py |
FTP 上传+回读哈希(真实路径冻结探针)——被 Trap 记录当作可信判据引用,保留;2026-10-22 起用设备账号登录(设备无匿名通道) |
tcp_reconnect_probe.py |
TCP 快速复连探针(TRAP-NET-17) |
audit_runs.py / audit_tcpclient.py |
运行记录审计 / TCP 客户端审计 |
check_crecipe_content.py |
检查创建配方内容 |
子目录
| 目录 | 内容 |
|---|---|
RTE/ |
Keil Run-Time Environment 配置 |
DebugConfig/ |
调试会话配置 |
STM32F407-Demo/ |
构建输出(.o/.axf/.map 等,产物不提交) |
bench_diag/ |
2026-10-22 删除:4 个一次性台架诊断脚本,全库零引用、且自设备启用 FTP 鉴权起就登录不上(需要时从 git 历史取回) |
retracted_bench_20260922/ |
已撤回的台架数据(存证) |
⚠️ 注意
- 工具路径经
DTU_*环境变量解析(DTU_KEIL_UV4= UV4.exe 完整路径,DTU_STLINK_CLI= ST-LINK_CLI.exe 完整路径;换机设变量即可,无需改脚本;契约见docs/环境与部署/本地工具路径环境变量方案.md) - 本目录被 pre-commit 门禁排除
- 启动文件的
Heap_Size = 512B是自研代码禁用malloc的根因(见AGENTS.md)
相关文档
- 烧录/复位:
docs/测试说明/测试工具/ST-LINK_CLI_复位使用说明.md - 构建与验证:根
AGENTS.md「构建与验证」章 - 测试流程:
docs/测试说明/流程与规范/自动化测试流程.md