【注意】この記事には、ラズパイやラズパイで動くC言語で書かれたソフトの内容を含みます。しかし、私はこれらの専門家では無く素人です。記事内容に誤りがあるかも知れません。

以前、ラズパイ5にGNSSモジュールを繋げて、Straturm 1相当のNTPサーバーを作りました。RPi5とGNSS(GY-NEO-6MV2)

あの時の環境で使用したラズパイ5を、ラズパイ2に変更して Straturm 1相当のNTPサーバーにしようとしたら、相当苦労しました。
この記事は、その苦労話です。

↓ この画像は、相当な苦労と時間を費やした成果で得た、思い通りに動く様になった時のものです。

 

何に苦労と時間を費やしたかと言うと、上記の画像にある緑、黄、赤のLEDが点灯しないのです。思い通りに点灯するまでに相当な苦労をしました。

 

結局、LEDを点灯させる自作ソフトの起動順序が良く無かった様で、点灯する様になった起動順序にして、この件は落ち着きました。

 

 

私の苦労話・・・みじかっ!

 

 

これで、本当にこの記事が終わってら、私が寂しいので、ちょっとだけ詳しく書き残します。

↓ 自作ソフトAとBの関係を示すフローチャート。自作ソフトAは同期先判定を担当、自作ソフトBはLED点灯を担当。

↑ フローチャートで分かる通り、自作ソフトBは、自作ソフトAに依存してします。それは、自作ソフトAの判定結果で変化する共有メモリ内の情報を自作ソフトBで読み取り、LEDを点灯させているからです。

 

LEDが点灯しなかった原因は?

自作ソフトAとBを自動起動する為の、ユニットファイルの記述に注意が必要でした。この事が関係してLEDが点灯しなかったのです。

では、上手くLEDを点灯させる為の自作ソフトAとB、それぞれのユニットファイルを見てみます。

先に起動させたい自作ソフトAのユニットファイルは
After = cron.service

自作ソフトAの次に起動させたい、自作ソフトBのユニットファイルは
Requires = 自作ソフトA.service

↑ 以上が上手くいったユニットファイルです。青文字部分が肝でした。

 

最後に、LEDが点灯しなかった時の自作ソフトA用の駄目なユニットファイルは
After = chrony.service

結果は駄目だけど、私は After = chrony.service で良いと最初は思った。なんでダメなんだ?

Post Navigation