如何解决Tinkerboard 与 RTC 板不更新系统时间
我正在开发 ASUS TinkerBoard,操作系统 Linaro 9.5 - 内核 4.4.132
我加了一块基于 DS3231 芯片的 RTC 板。
系统创建设备 /dev/rtc1 添加到 /dev/rtc0 和 /dev/rtc(链接到 /dev/rtc0)。
我可以通过 i2cdetect 和 hwclock 命令与 RTC 芯片通信,但我有一个奇怪的行为。
这是我的测试 - 当然我已断开网络连接以避免 ntp 同步:
无 RTC:在每次上电时,板/操作系统都会从 2016 年 11 月 3 日 00:00 重置日期和时间
使用实时时钟:
- 通过互联网连接同步日期/时间
- 强制设置由
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时间正确但没有恢复到系统时间。
有什么想法吗?
解决方法
您说 /dev/rtc 是指向 /dev/rtc0 的链接,这意味着您的内核配置了 CONFIG_RTC_HCTOSYS_DEVICE
设置为 rtc0。您可以将其设置为 rtc1 或更新您的设备树别名,以便 DS3231 成为 rtc0。
另一种解决方案是停止依赖内核 hctosys 并在启动脚本中使用 hwclock -f /dev/rtc1 --hctosys
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。