0

私はASUS TinkerBoard、OS Linaro 9.5 - Kernel 4.4.132に取り組んでいます

DS3231 チップをベースにした小さな RTC ボードを追加しました。
システムは、/dev/rtc0 および /dev/rtc (/dev/rtc0 へのリンク) に追加されたデバイス /dev/rtc1 を作成します。i2cdetectおよびhwclock
コマンドを使用 して RTC チップと通信できますが、奇妙な動作をします。

これは私のテストです-もちろん、ntp同期を避けるためにネットワークから切断されています:

RTC なし: 電源を入れるたびに、ボード/OS は 2016 年 11 月 3 日 00:00 から日付と時刻をリセットします。

RTC を使用:

  • インターネット接続で日付/時刻を同期しました
  • によって設定された RTC 値を強制するhwclock -f /dev/rtc1 --systohc
  • 「hwclock -f /dev/rtc1 --get」で値を確認
  • ネットワークから切断され、ボードの電源がオフになりました - 18:00 としましょう
  • 18:15にボードの電源を入れました
  • デスクトップの準備が整うと、システム時刻が 18:00 (?) に設定されていることがわかります
  • RTChwclock -f /dev/rtc1 --getを 18:15までに読んだ場合
  • データは今日 (!) に正しく設定されています

システムの日付が復元されたようで、電源が切れたときにシステム時刻がフリーズし、RTC 時刻は正しいのにシステム時刻に復元されません。

何か案が?

4

1 に答える 1

1

/dev/rtc は /dev/rtc0 へのリンクであると言いますが、これはカーネルがCONFIG_RTC_HCTOSYS_DEVICErtc0 に設定されていることを意味します。これを rtc1 に設定するか、DS3231 が rtc0 になるようにデバイス ツリー エイリアスを更新することができます。

もう 1 つの解決策は、カーネル hctosys への依存をやめてhwclock -f /dev/rtc1 --hctosys、起動スクリプトで使用することです。

于 2021-03-20T14:03:57.267 に答える