Как правило, вы можете установить системные часы, используя http://linux.die.net/man/1/date. Тем не менее, он не обеспечивает точность в миллисекундах (у него есть наносекунды, но это не работает в моей системе). Есть ли другой способ установить системные часы, или мне нужно будет написать C программу для этого?
3 ответа
Если ntpd
тяжел для вас, попробуйте OpenNTPD. Он не претендует на точность до микросекунды, но поддерживает синхронизацию часов моих серверов ниже дрейфа диапазона в миллисекунды. Он использует sntp, который также немного более легкий.
Как уже говорили другие, аппаратные часы дрейфуют, вы не можете просто их установить и все будет в порядке.
Даже если рассматриваемая встроенная система не поддерживает NTP, вам придется реализовать нечто похожее на это или выполнить свою программу на C довольно часто, чтобы противостоять неизбежному смещению двух часов. Кроме того, ваша C-программа должна будет учитывать свое собственное время выполнения и задержку соединения между двумя компьютерами (встроенной системой и сервером), особенно потому, что вам нужна точность до микросекунды.
Возможно, вам будет проще найти экземпляр ntpd, который вы можете настроить между двумя системами. Инструменты для этого всегда присутствуют в современных операционных системах реального времени (для некоторого определения "всегда").