在Linux PPS文档中说:
PPS表示“每秒脉冲数”,PPS源只是每秒提供高精度信号的设备,因此应用程序可以使用它来调整系统时钟时间。
但我还没有找到如何调整系统时钟计时器(hwclock)。我宁愿不使用ntp,只是以最简单的方式,使系统定时器与PPS同步。
是否可以从PPS调整系统计时器(不使用ntp)?
我也不完全理解pps时间,因为可以使用time_pps_fetch
命令从用户空间读取(参见ppstest.c示例)
如果linuxpps是一个只有“每秒脉冲数”的时钟,它是如何提供纳秒分辨率的呢?
好吧,你需要和你的系统内的pps设备(如/ dev / pps0)。
如果你已经连接到串口(/ dev / ttyS0)的PPS源(如gps接收器),你可以通过像'sudo ldattach pps / dev / ttyS0'这样的ldattach命令来实现它。之后,您可以将/ dev / pps0作为设备路径提供给time_pps_fetch函数。或者控制应用程序pps_test。您可以阅读更详细的描述(使用udev的规则,通过systemd服务自动启动)here。
我希望它能帮到你;)
最简单的解决方案是在需要将系统时钟连接到PPS时使用ntpd。
任何其他替代方案都需要使用adjtimex()编写实现。