0

我正在使用 ASUS TinkerBoard,OS Linaro 9.5 - Kernel 4.4.132

我添加了一个基于 DS3231 芯片的小 RTC 板。
系统创建添加到 /dev/rtc0 和 /dev/rtc 的设备 /dev/rtc1(链接到 /dev/rtc0)。
我可以通过i2cdetecthwclock命令与 RTC 芯片交谈,但我有一个奇怪的行为。

这是我的测试——当然我已经断开网络以避免 ntp 同步:

没有 RTC:每次上电时,板/操作系统都会从 2016 年 11 月 3 日 00:00 重置日期和时间

使用 RTC:

  • 通过 Internet 连接同步日期/时间
  • 强制设置的 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_DEVICE设置为 rtc0。您可以将其设置为 rtc1 或更新您的设备树别名,以便 DS3231 变为 rtc0。

另一种解决方案是停止依赖内核 hctosys 并hwclock -f /dev/rtc1 --hctosys在启动脚本中使用。

于 2021-03-20T14:03:57.267 回答