Sincronização de tempo, use NTP ou apenas socket?

2

Estou usando um PC e um raspberry pi (ambos executam o Linux) para coletar dados do sensor, o raspberry pi reúne dados de varredura a laser, o PC reúne a imagem capturada pela câmera. Eu preciso sincronizar tempo para essas duas máquinas. Espero que a diferença de tempo entre eles possa ser menor que 1ms .

Eu os conecto diretamente com uma rede capble, por isso não posso usar alguns servidores NTP conhecidos. Eu pingado PC no raspberry pi, o tempo de ping é inferior a 0.6ms . Eu tenho duas ideias:

  1. Considere o PC como um servidor NTP , o pi do raspberry sincroniza o tempo a partir dele.
  2. Crie uma conexão socket entre eles, o raspberry pi apenas envia seu timestamp para o PC quando a conexão é estabelecida, assim podemos saber a diferença de tempo de duas máquinas.

Qual é a melhor ideia? Ou você tem alguma ideia melhor? Como calcular a diferença de tempo real entre duas máquinas? Posso limitar a diferença de tempo para 1 ms?

    
por Krist Pan 18.12.2015 / 03:14

1 resposta

6

A ideia de soquete é o antigo e venerável protocolo de horário documentado no RFC 868 . O utilitário que sincroniza a hora do sistema com base nesse protocolo é chamado de rdate .

É melhor você usar o NTP, pois o NTP rastreará como os relógios dos dois sistemas naturalmente se separam com o tempo e os corrigem. O protocolo de horário deve ser reservado para situações em que o NTP é inviável, como sistemas embarcados que são muito apertados em recursos para executar algo tão complicado quanto o NTP (que o rpi não é).

    
por 18.12.2015 / 04:14