DTS配置
bash
&i2c5 {
status = "okay";
hym8563: hym8563@51 {
status = "okay";
compatible = "haoyu,hym8563";
reg = <0x51>;
pinctrl-names = "default";
pinctrl-0 = <&hym8563_int>;
interrupt-parent = <&gpio0>;
interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
};
};
RTC常用的调试命令
bash
i2cdetect -l
i2cdetect -y 5
cat /sys/bus/i2c/devices/5-0051/name
date -s "2025-10-10 10:00:00"
date
ls -al /dev/rtc*
# 没有hwclock 可以暂时使用 busybox hwclock
sudo busybox hwclock --systohc --rtc=/dev/rtc1
sudo busybox hwclock --show --rtc=/dev/rtc1
sudo busybox hwclock --systohc
# 系统 → 硬件RTC 把系统时间写到 rtc1
sudo hwclock -w
sudo hwclock --systohc
sudo hwclock --rtc=/dev/rtc1 --systohc
# 显示硬件时间
sudo hwclock
sudo hwclock --rtc=/dev/rtc1 --show
# 硬件RTC → 系统 读取并设置 硬件RTC时间 更新 系统时间
sudo hwclock -s
sudo hwclock --rtc=/dev/rtc1 --hctosys
# 从系统层读取 rtc1 的当前时间(硬件时钟)
cat /sys/class/rtc/rtc1/time
cat /sys/class/rtc/rtc1/date
# 合并显示
echo "$(cat /sys/class/rtc/rtc1/date) $(cat /sys/class/rtc/rtc1/time)"
# 输出hym8563
cat /sys/class/rtc/rtc1/name
发现默认多打开了一个没用的RTC,导致掉电后开机硬件时间默认从rtc0同步给系统时间(实际外部rtc使用的是rtc1),导致时间不准确,将其关掉。
bash
# CONFIG_RTC_DRV_RK808 is not set
尽量使用hwclock,因为busybox hwclock 可能会忽略 /etc/adjtime 的 UTC/LOCAL 设置,导致时间差个时区错误。
bash
# 正确的 adjtime 配置
cat /etc/adjtime
0.000000 1764923689 0.000000
1764923689
UTC
打印下面报错没关系,rtc 信息有效
bash
[ 3.175747] rtc-hym8563 5-0051: hym8563_init_device: error read i2c data -6
[ 3.178347] rtc-hym8563 5-0051: rtc information is valid
[ 3.185643] rtc-hym8563 5-0051: registered as rtc0

如果开机有打印下面错误
bash
[ 0.879621] rtc-hym8563 3-0051: could not init device, -6