我的非联网嵌入式Linux板上的GPIO上有一个带PPS的GPS,运行2.6.37。
我正在努力保持系统时钟尽可能精确(最好优于20美制精度)。我已经将时间设置在串行端口GPS的几毫秒之内,并且希望使用PPS来调整时钟(这是正确的术语吗?)
我设置了一个中断来捕捉PPS。
我的中断处理程序如下:
struct timeval tv;
do_gettimeofday(&tv);
..check that we're really close to a second mark and adjust tv to the nearest second...
do_settimeofday(&tv);
问题:
gettimeofday/settimeofday是否需要大量的时间来执行?
这是一种可以接受的方法来保持时间吗?
我知道有NTP和linuxps,但我不希望有额外的开销,除非在设置系统时间时有其他一些我不知道的微妙考虑。
非常感谢。
最佳答案
如果需要准确可靠的同步,应该将ntpd与PPS结合使用。ntpd使用经过测试的算法,编写时考虑到可靠性。开销可以忽略不计。