Есть ли способ получить правильное системное время без NTP?

Я занимаюсь разработкой промышленного встраиваемого устройства на ядре ARMv7, 3.10.

Прежде всего, прежде чем перейти к основной теме, позвольте мне поговорить о аппаратном времени. Amlogic meson8b является основным модулем, поэтому я использовал "aml-rtc" в качестве основного rtc, но это было ненадежно. Итак, мы решили внешний чип RTC, и теперь DS1340 является основным RTC. после нескольких тестовых последовательностей, я думаю, что аппаратное время теперь довольно надежно.

Проблема в системном времени. Системное время работает быстрее, чем ч / б время около 2~3 сек / день. как вы знаете, существует множество решений, использующих NTP, но из-за особенностей нашего устройства оно отключено от Ethernet, поэтому я не могу использовать NTP.

Дело в том, что я хочу знать, есть ли какой-либо метод для получения правильного системного времени без NTP.

Спасибо, что прочитали эту ветку, и извините за мой плохой английский.


пс. Я подумал также периодически использовать вызов hwclock --hctosys, но это может быть критической проблемой из-за сохранения файлов и журналов. например, LOG<1> сохранен в 12:05 системного времени, и если hwclock вернет систему в 12:04, LOG<1> может быть потерян из-за того, что новые журналы были сохранены после того, как "новое время" достигло 12:05. это только пример, и я также могу решить эту проблему, установив период "hwclock --hctosys" очень коротким, но я бы хотел оставить этот путь в качестве последнего средства.

1 ответ

редактировать

Мой оригинальный ответ связан с программированием. Может быть, вы можете сделать всю настройку проще с другим программированием. На моем Кубунту man ntpdate показывает, что он использует adjtime() Системный вызов, чтобы постепенно настроить системные часы. Рассмотрим программу, которая читает аппаратные часы и звонки adjtime(),


Оригинальный ответ

Из комментария G-Man:

Некоторые (большинство? Все?) NTP (клиентские) программы работают, ускоряя или замедляя системные часы, чтобы синхронизировать их с внешним источником времени.

Если это правильный способ справиться с проблемами журнала и т. Д., Может быть, вы можете реализовать поддельный локальный NTP-сервер. Позвольте вашему поддельному NTP-серверу делать исправления для себя (например) один раз в час, используя аппаратные часы, считывающие аппаратные часы; затем пусть NTP клиент настроит системные часы так, чтобы не мешать журналам и сохранять файлы.

Другие вопросы по тегам