Existe alguma maneira de obter a hora correta do sistema sem o NTP?

2

Estou desenvolvendo um dispositivo embarcado industrial no kernel ARMv7, 3.10.

Primeiro, antes de abordar o assunto principal, deixe-me falar sobre o tempo de hardware. Meson8b amlogic é unidade central, então eu usei "aml-rtc" como rtc principal, mas não era confiável. então, decidimos o chip rtc externo, e agora o ds1340 é o principal rtc. depois de alguns testes, acho que o tempo de hardware agora é bastante confiável.

O problema é sobre a hora do sistema. o tempo do sistema está correndo mais rápido do que o tempo de h / w sobre 2 ~ 3 segundos / dia. como você sabe, existem muitas soluções usando o NTP, mas por causa da característica do nosso dispositivo, ele é desconectado da ethernet, então eu não posso usar o NTP.

O ponto é que eu quero saber se existe algum método para obter a hora correta do sistema sem NTP.

Obrigado por ler este tópico e desculpe pelo meu pobre inglês.

ps. Eu pensei também usando chamada "hwclock --hctosys" periodicamente, mas isso pode ser um problema crítico por causa de salvar arquivos e logs. por exemplo, LOG < 1 > salvo às 12:05 hora do sistema, e se hwclock definir o sistema de volta para 12:04, LOG < 1 > Pode ser perdida a causa de novos registros salvos após o 'novo horário' chegar às 12:05.  Este é apenas um exemplo, e também eu posso resolver este problema por definir "hwclock --hctosys" período muito curto, mas gostaria de manter este caminho como último recurso.

    
por GTKoo 26.05.2016 / 07:04

1 resposta

1

Editar

Minha resposta original envolve alguma programação. Talvez você possa tornar toda a configuração mais simples com alguma outra programação. No meu Kubuntu man ntpdate mostra que ele usa adjtime() system call para ajustar gradualmente o clock do sistema. Considere um programa que lê o clock do hardware e chama adjtime() .

Resposta original

Do comentário do G-Man:

Some (most? all?) NTP (client) software works by speeding up or slowing down the system clock so it synchronizes with the external time source.

Se esse é o caminho certo para lidar com problemas de log, etc., talvez você possa implementar um servidor NTP local falso. Deixe seu servidor NTP falso fazer correções para si mesmo (por exemplo) uma vez por hora usando clock de hardware ler o clock do hardware; em seguida, deixe o cliente NTP ajustar o relógio do sistema de uma maneira que não perturbe os registros e salve os arquivos.

    
por 26.05.2016 / 10:02