2

Я занимаюсь разработкой промышленного встраиваемого устройства на ядре 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 ответ1

1

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

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


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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .