【问题标题】:Tinkerboard with RTC board does not update the system time带有 RTC 板的 Tinkerboard 不更新系统时间
【发布时间】:2021-03-20 22:03:57
【问题描述】:

我正在开发 ASUS TinkerBoard,操作系统 Linaro 9.5 - 内核 4.4.132

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

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

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

使用 RTC:

  • 通过 Internet 连接同步日期/时间
  • 强制hwclock -f /dev/rtc1 --systohc设置的RTC值
  • 通过'hwclock -f /dev/rtc1 --get'检查了值
  • 断开网络并关闭电路板 - 假设是在 18:00
  • 在 18:15 为电路板通电
  • 当桌面准备就绪时,我看到系统时间设置为 18:00 (?)
  • 如果我通过 hwclock -f /dev/rtc1 --get 阅读 RTC 并且我有 18:15
  • 数据已正确设置为今天 (!)

好像恢复了系统日期,掉电时系统时间被冻结,RTC时间正确但没有恢复到系统时间。

有什么想法吗?

【问题讨论】:

  • 该 RTC 是否有专用电源(电池或其他)?
  • 是的,它有电池
  • 我无法解释为什么更新日期而不是时间..
  • 您是否已等待一两天才能确定日期实际已更改?
  • 还没有。但通常日期会重置为 2016 年 11 月 3 日。我的猜测是,在操作系统启动时,时间(和日期?)没有从 RTC 恢复。如果我从 RTC 获取它们,它们是正确的。

标签: embedded-linux clock linaro


【解决方案1】:

你说 /dev/rtc 是到 /dev/rtc0 的链接,这意味着你的内核配置了 CONFIG_RTC_HCTOSYS_DEVICE 设置为 rtc0。您可以将其设置为 rtc1 或更新您的设备树别名,以便 DS3231 变为 rtc0。

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

【讨论】:

  • 我发现文档说要在 /etc/default/hwclock 文件中定义 HCTOSYS_DEVICE=rtc1 。现在我正在尝试使用启动脚本。
  • 由启动脚本完成 - 谢谢!
猜你喜欢
  • 2020-10-28
  • 2020-01-23
  • 1970-01-01
  • 2012-08-16
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
相关资源
最近更新 更多