GPSとPPS信号はもちろん、ntpd
または。chrony
同様の要件がありますが、簡単な解決策を見つけるのは難しいほど異なります。
制限要因
私の環境には本質的にインターネット接続やGPS信号がなく、稼働時間は一度に数時間ほど非常に短いです。この場合、オフボードマイクロコントローラと基本的なLinuxマシン(おそらくシングルボードコンピュータタイプ)があり、最終的な目標はそれらを同期することです。
マイクロコントローラはこのRTC(I2C経由)とコンピュータ(USB経由)に接続され、一部の外部センサーのタイミングと同期を処理します。コンピュータはセンサーから情報を受け取り、それを使用してさまざまなタスクを実行します。 Linux システムと MCU 間のイーサネット接続は通常不可能です。それ以外の場合は、PTPやNTPなどを直接使用します。
GPS PPSとの違い
GPS PPSとの主な違いは、同期に加えて、コンピュータが目的のためにマイクロコントローラシリアル通信からデータを読み取る必要があることです。私の理解によると、これは両方のソース(アプリケーションとシリアル)が同じUSBで同時に読み取れないため、gpsd
+ /標準をntpd
変更する必要があることを意味します。chrony
gpsd
限定
私はこれが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
同期され、2番目のステップでは、I2C接続RTCを一部のソフトウェアと同期させることができます。逆に、起動時にインターネットなしでRTCのカーネルクロックを起動スクリプトのエントリと同期させることができます。
GPSがないと言われたので、言及されたPPSについて少し混乱しています。それとも、I2C接続RTCは一種のPPSを提供しますか?時計を読み、時々(cronなどを介して)カーネルを同期する方が簡単です。