プログラムでCMOSバッテリーが機能しているかどうかを判断したい。Linux上のC++プログラムで、インターネットに接続し、CMOSバッテリーの場合はシステム時刻を更新したい。存在しないか、機能していません。
チェックサムエラーが発生した場合、BIOSはCMOS RAMのどこかにビットを設定すると思います。しかし、これはマザーボードの各メーカーに固有です。
うまくいくかもしれない1つのこと...
dd if=/dev/nvram of=cmos_ram.bin
おそらくそれをします。正直なところ、多くのCMOSクロックの乾燥と不正確さのために、とにかく起動するたびにシステム時刻を更新する必要があります。
接吻!
NTPを使用して、常に時刻を修正します(ntpdate、次にntpd)。
このようにあなたは常に正しい時間を持っています。これは、CMOSまたは内部クロックのないコンピューターが行うことです。
他のプログラムをビルドする必要はありません(それらはすでに存在します)。また、CMOSをチェックする必要もありません(持っているのは良いですが、必須ではありません)
これは可能かもしれませんが、クロスプラットフォームではない可能性があります(ハードウェアが大きく異なるPCとBeagleBoneの両方で使用したいため)。
Ntpを実行すると、バッテリーの状態に関係なく、常に正確な時刻が維持されます。