新しい組み込み Linux ボードを開発しています。私が欲しい機能の 1 つは、電源が失われたときに通知され、安全なシャットダウンを行う機能です。電源障害イベントを示す Linux の標準メカニズムはありますか? これを処理するために完全なシリアル回線を結び付けないことをお勧めします。
カスタム電源ボードを開発しているため、小さな UPS のような回路を組み込むオプションがあります。問題は、その回路が Linux に電源が落ちたことをどのように伝えるかということです。
新しい組み込み Linux ボードを開発しています。私が欲しい機能の 1 つは、電源が失われたときに通知され、安全なシャットダウンを行う機能です。電源障害イベントを示す Linux の標準メカニズムはありますか? これを処理するために完全なシリアル回線を結び付けないことをお勧めします。
カスタム電源ボードを開発しているため、小さな UPS のような回路を組み込むオプションがあります。問題は、その回路が Linux に電源が落ちたことをどのように伝えるかということです。
ネットワーク UPS ツールであるNUTを調べてください。おそらく、ベース OS として使用している Linux ディストリビューション用に既にパッケージ化されています。
外部ボードが既存のコンタクト クロージャ ドライバと通信できる場合は、箱から出してそのまま NUT を使用できる場合があります。
接点閉鎖インターフェースは、少数の情報にのみ適しています。もしそうなら、フラグ。「停電」「充電不良」など。配電盤からそれ以上の情報が必要な場合は、既存のスマート UPS プロトコルを複製できます。何らかの理由で車輪の再発明が必要な場合は、カスタム プロトコル用の NUT ドライバーを作成できます。
ほとんどのスマート UPS プロトコルは RS-232 シリアルまたは USB を使用することがわかりますが、私はあなたの質問からカスタム組み込み Linux の雰囲気を得ています。マイクロコントローラーにはおそらく既に I/O ピンがあるため、代わりに I²C または SPI を使用することをお勧めします。
すでに Linux の上に構築しているので、なぜこれが良いアイデアなのかは明らかだと思います。NUT は、Linux と同様に、優れた、安定した、利用可能な無料のインフラストラクチャです。
バッテリが切れた Linux マシン用に似たようなものを作成しました。
簡単に言えば、バッテリーと Linux ボックスの間に 1 つ、バッテリーと外部電源の間に 1 つの 2 つのデジタル電流計です。これらは、2 つのシリアル ポートを介してマシンに接続されていました。外部電流計の読み取り値が内部電流計よりもはるかに低い場合 (完全に充電されたバッテリーの結果である可能性がある値よりも大きい場合)、マシンの cron ジョブがシャットダウンを実行します。はい、古いラップトップまたはバッテリーが含まれているものをベースにしていた場合、これはおそらくはるかに簡単な方法で実行できた可能性がありますが、これは廃棄されたラップトップが簡単に入手できる方法でした:)
私の現在の仕事では、電源障害がある程度頻繁に発生することが予想される環境で Linux システムを実行しています。CFカードにはファイルシステムが含まれており、読み取り専用モードで起動されるため、安全なシャットダウンは実際には必要ありません。次に、すべてのデータが RAM ディスクに読み込まれるため、CF カードへの書き込みは発生しません。ただし、この方法では、ブート間で永続的なストレージを保持する機能が明らかに失われます。