【发布时间】:2021-03-20 22:03:57
【问题描述】:
我正在开发 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 开始重置日期和时间
使用 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