RT Linux + ARM GPIO PPS 实现纳秒级 GPS 授时(Chrony RMS Offset 40ns)

在 Zynq-7000 ARM SoC 上,通过 GPS M8N 输出 PPS 信号,经 Zynq EMIO GPIO 接入 Linux PPS Framework,使用 Chrony 驯服系统时钟。

在 PREEMPT_RT 内核和 OpenWrt Snapshot 环境下,最终 RMS Offset 稳定在 40ns 左右。

Reference ID : 47505300 (GPS)

Stratum : 1

Ref time (UTC) : Thu Jun 25 22:11:38 2026

System time : 0.000000042 seconds slow of NTP time

Last offset : -0.000000018 seconds

RMS offset : 0.000000040 seconds

Frequency : 12.248 ppm slow

Residual freq : -0.000 ppm

Skew : 0.001 ppm

Root delay : 0.000000001 seconds

Root dispersion : 0.000017178 seconds

Update interval : 16.0 seconds

Leap status : Normal

root@OpenWrt:~#

RMS offset = 0.000000040 seconds

换成纳秒:= 40 ns

也就是 0.040微秒

硬件设备:MYS-7Z020-V2-0E1D-766-C

Linux kernel :7.0.1 为了尽可能减少抖动,编译了 PREEMPT_RT 模式

RootFS: OpenWrt Snapshot

GPS模组 u-blox NEO-M8N

PPS :GPS PPS -> Zynq EMIO -> GPIO IRQ -> Linux PPS

Chrony:

Stratum-1

将 PPS 中断处理线程调整为 SCHED_FIFO 高优先级,

以降低系统负载下的调度抖动。