GPS外部授时
功能说明
基于隐溪科技的MI-12x4平台,可以通过串口和PPS_IN接口接入外部的GPS设备来实现对本设备的授时。
PPS 信号:通过独立的 GPIO 引脚接入,提供纳秒级精度的整秒时间基准,负责校准系统时钟的频率偏差与秒级边界。
GPRMC / GNRMC 报文:通过 USB 串口输出,提供当前的 UTC 年月日时分秒信息,负责为 PPS 提供绝对时间框架。
分工逻辑:PPS 负责“定秒边界”,GNRMC 负责“定日期时间”,二者结合实现亚毫秒级的高精度系统授时,工作原理如下图所示
外部GPS设备
├── PPS → GPIO → /dev/pps1 (纳秒级秒基准)
└── NMEA → 串口 → gpsd → SHM(0) (提供UTC日期时间)
↓
chrony融合
↓
系统时钟同步
配置说明
硬件连接与基础检查
小技巧
外部GPS设备接入到本地有两个DB9的RS232串口可以选择,默认情况下出厂按照PPS_IN信号在COM2的DB9接口上,内核串口设备名为:
ttyTHS1@3100000注意设备上的两个DB9的硬件拨码设置是否在RS232档位
确认串口与PPS设备
设备启动后,通过确认GPS模组所使用的USB串口节点创建正常
ls /dev/ttyTHS1
检查pps设备已经创建成功
ls /dev/pps1
测试 PPS 信号
使用 ppstest 工具验证内核是否能稳定捕获秒脉冲。若输出中序列号(sequence)持续递增,说明 PPS 信号正常。
sudo ppstest /dev/pps1
工作正常的返回结果如下
root@tegra-ubuntu:/home/nvidia# sudo ppstest /dev/pps1
trying PPS source "/dev/pps1"
found PPS source "/dev/pps1"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1783697267.999999593, sequence: 4095 - clear 0.000000000, sequence: 0
source 0 - assert 1783697268.999999536, sequence: 4096 - clear 0.000000000, sequence: 0
source 0 - assert 1783697269.999999799, sequence: 4097 - clear 0.000000000, sequence: 0
source 0 - assert 1783697271.000001182, sequence: 4098 - clear 0.000000000, sequence: 0
source 0 - assert 1783697272.000000325, sequence: 4099 - clear 0.000000000, sequence: 0
source 0 - assert 1783697273.000000492, sequence: 4100 - clear 0.000000000, sequence: 0
source 0 - assert 1783697273.999999731, sequence: 4101 - clear 0.000000000, sequence: 0
source 0 - assert 1783697275.000000762, sequence: 4102 - clear 0.000000000, sequence: 0
source 0 - assert 1783697276.000000097, sequence: 4103 - clear 0.000000000, sequence: 0
source 0 - assert 1783697276.999999784, sequence: 4104 - clear 0.000000000, sequence: 0
source 0 - assert 1783697278.000000142, sequence: 4105 - clear 0.000000000, sequence: 0
其余配置和检查步骤同GPS内部授时完全相同。