卫星->MCU->arm linux, MCU未收到gps板卡数据时候自己生成GPRMC报文给arm linux
只能跟随源同步到未来不能同步到过去
pps driver + gpsd + chrony
1. kernel 配置
CONFIG_PPS_CLIENT_GPIO=y
dts 自行配置io
2. 用户空间配置
apt install pps-tools gpsd gpsd-clients chrony
测试pps:
ppstest /dev/pps0
启用gpsd:
sudo gpsd -nN -G /dev/ttyS1 /dev/pps0
参数-N 终端前台运行
/dev/pps0 可无,无则不用pps
-G 侦听所有ip
如果提示端口占用,systemctl stop gpsd.socket
gpsmon 可查看gpsd解析状态
3. chrony配置
maxupdateskew 1000 # 放开同步增速
maxchange 1555200000 1 2 # 同步后允许的跟源最大差距,避免源时间跳跃成为无效源
makestep 1 -1 # 大跨度调整时间阈值为1秒,初次同步重试次数为-1表示不限次数
maxdistance 1555200000# 持续同步中,源与本地最大时间跨度,超过1555200000秒将被忽略不同步本地。
1) 本地pps+gpsd shm
refclock PPS /dev/pps0 refid PPS lock GPSD prefer precision 1e-7 poll 2
refclock SHM 0 refid GPSD precision 1e-5 offset 0.0 delay 0.2 poll 2 # SHM 0表示gpsd根据NEMA发布的时间
2)gpsd pps shm
refclock SHM 2 refid PPS poll 1 offset 0.0 precision 1e-7 require trust # SHM 2 表示gpsd根据NEMA+PPS发布的时间
3) gpsd pps sock
refclock SOCK /var/run/chrony.pps0.sock
chronyc sources -v 查看时间源同步状态
chronyc selectdata -v 查看选择源状态
chronyc sourcestats -v 查看源状态

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐