我在 Raspberry Pi 4 上安装了 Debian/Raspbian buster Linux,并连接了 isl1208 RTC。我认为 RTC 本身可以工作:当内核模块禁用时,我可以直接使用 python 脚本读取它
systemd timedatectl
命令显示 RTC 时钟和
/sys/bus/i2c/devices/i2c-1/1-006f/rtc/rtc0/time
显示时间。
但hwclock -r
不起作用:
$ sudo hwclock -r
hwclock: select() to /dev/rtc0 to wait for clock tick timed out
hwclock
应在启动期间使用 RTC 设置系统时间。
任何想法为什么hwclock -r
不起作用?或者应该有其他方法在启动期间从 RTC 设置系统时间?
编辑1:
看来systemd可以读取RTC,因为systemd-timedated只对/dev/rtc进行读取操作,效果很好。
hwclock -r 在从 /dev/rtc 读取时间之前首先执行synchronize_to_clock_tick_rtc,其中进程等待中断,但该中断永远不会到来。
所以我想知道更新中断是否应该适用于 isl1208 和 RasPi,其中 RTC i2c IC 和 RasPi 之间只有 i2c 连接?
答案1
解决方法是使用 busybox 中的 hwclock,它不执行同步过程。
答案2
你试过吗:
sudo i2cdetect -y 1
您应该看到出现一堵文本墙,如果出现 UU 而不是 68,则我们已成功加载 RTC 电路的内核驱动程序
如果你的 RTC 是正确的,也许你错过了:
sudo hwclock -w
该命令会将时间从 Raspberry Pi 写入 RTC 模块。
详细步骤: https://pimylifeup.com/raspberry-pi-rtc/ 或者 https://www.instructables.com/id/Set-up-Real-Time-Clock-RTC-on-Raspberry-Pi/