RTC PPS를 사용하여 NTP를 통해 컴퓨터 동기화

RTC PPS를 사용하여 NTP를 통해 컴퓨터 동기화

GPS 와 PPS 신호는 물론 ntpd또는 .chrony

이와 비슷한 요구 사항이 있지만 간단한 해결책을 찾기가 어려울 정도로 다릅니다.

제한 요인

내 환경에는 본질적으로 인터넷 접속이나 GPS 신호가 없으며 가동 시간은 한 번에 몇 시간 정도로 매우 짧습니다. 이 경우에는 오프보드 마이크로컨트롤러와 기본 Linux 머신(아마도 단일 보드 컴퓨터 유형)이 있으며 최종 목표는 이들을 동기화하는 것입니다.

마이크로컨트롤러는 이 RTC(I2C를 통해)와 컴퓨터(USB를 통해)에 연결되며 일부 외부 센서의 타이밍과 동기화를 처리합니다. 컴퓨터는 센서로부터 정보를 받아 이를 사용하여 다양한 작업을 수행합니다. Linux 시스템과 MCU 간의 이더넷 연결은 일반적으로 불가능합니다. 그렇지 않으면 PTP 또는 NTP와 같은 것을 더 직접적으로 사용합니다.

GPS PPS와의 차이점

GPS PPS와의 주요 차이점은 동기화 외에도 컴퓨터가 목적을 위해 마이크로컨트롤러 직렬 통신에서 데이터를 읽어야 한다는 것입니다. 내 이해에 따르면 이는 두 소스(애플리케이션 및 Serial )가 동일한 USB에서 동시에 읽을 수 없기 때문에 gpsd+ / 표준을 ntpd수정 해야 함을 의미합니다 .chronygpsd

한정

나는 이것이 GPS 드리프트 수준에 도달하지 않을 것이라는 것을 알고 있습니다. 나에게 필요한 것은 특정 밀리초 단위로 정확한 MCU와 컴퓨터 간의 동기화된 시간 소스입니다. 모든 것이 함께 표류하는 한 전체 시스템이 1-3PPM(RTC)으로 표류하는 것은 괜찮습니다.

솔루션 아이디어

내 생각은 지금까지 외부 RTC의 PPS 신호를 기반으로 합니다.

  • MCU 및 Linux 머신 GPIO 핀 캡처용 RTC PPS
  • MCU는 (직렬을 통해) 해당 Unixstamp를 애플리케이션 노드(Linux 시스템)로 보냅니다.

그러면 우리의 애플리케이션은 PPS 신호와 unixstamp를 사용할 수 있게 만듭니다 chrony. 이 시점에서는 이를 GPS로 처리할 수 있어야 합니다. 그래서 기본적으로 이를 우회하여 gpsd직렬 포트 액세스를 공유할 필요가 없습니다.

이게 말이 돼? 나는 비슷한 일을 한 사람이 거의 없다는 것을 알았습니다.

답변1

귀하의 솔루션을 완전히 이해했는지 잘 모르겠지만 일반적 ntpd으로 PC 등에서 작동합니다. Linux는 하드웨어 RTC 시계를 설정하는 방법을 이해합니다. 그래서 당신은 할 수 있습니다

  • I2C 연결 RTC용 드라이버 작성, ntpd즉시 사용 가능
  • ntpd사용자 공간 접근 방식을 취하세요. 인터넷이 있을 때 실행할 후크 스크립트를 작성하세요 . 그런 다음 코어(소프트웨어 전용) 클럭이 ntpd동기화되고 두 번째 단계에서는 I2C 연결 RTC를 일부 소프트웨어와 동기화할 수 있습니다. 반대로, 부팅 시 인터넷 없이 RTC의 커널 시계를 부팅 스크립트의 항목과 동기화할 수 있습니다.

GPS가 없다고 말씀하셨기 때문에 언급하신 PPS에 대해 약간 혼란스럽습니다. 아니면 I2C 연결 RTC가 일종의 PPS를 제공합니까? 시계를 읽고 때때로 (cron 등을 통해) 커널을 동기화하는 것이 더 쉬울 수 있습니다.

관련 정보