基于RK3566核心板设计了一块主板,运行 linux系统,外部RTC芯片使用HYM8563,挂在CPU i2c3总线上,管脚为SDA:GPIO1_A0、SCL:GPIO1_A1,电路连接如下:
DTS文件中增加i2c3节点的配置
&i2c3 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&i2c3m0_xfer>;
clock-frequency = <400000>;
i2c-scl-rising-time-ns = <138>;
i2c-scl-falling-time-ns = <4>;
pcf8563: pcf8563@51 {
compatible = "nxp,pcf8563";
reg = <0x51>;
#clock-cells = <0>;
status = "disabled";
};
hym8563: hym8563@51 {
compatible = "haoyu,hym8563";
reg = <0x51>;
#clock-cells = <0>;
status = "okay";
};
};
内核添加对hym8563的支持
先cd到kernel目录下,然后执行make menuconfig打开configuration,如下图所示:
一般内核添加了对hym8563的支持,所以不需要修改configuration。如果内核没有添加支持,选中Haoyu Microelectronics HYM8563,然后键盘输入‘y’即可选中,修改之后需要保存对应的defconfig文件,执行以下代码保存:
make savedefconfig
cp defconfig arch/arm64/configs/rockchip_linux_defconfig
?调试
进入到sdk目录,执行./build.sh kernel,编译生成新的boot.img文件,将boot.img烧写到主板,待主板启动后,执行i2cdetect -l查看i2c3是否存在:
[root@RK356X:/]# i2cdetect -l
i2c-3 i2c rk3x-i2c I2C adapter
i2c-6 i2c DesignWare HDMI I2C adapter
i2c-4 i2c rk3x-i2c I2C adapter
i2c-2 i2c rk3x-i2c I2C adapter
i2c-0 i2c rk3x-i2c I2C adapter
再执行i2cdetect -y 3检测hym8563是否在i2c总线上:
[root@RK356X:/]# i2cdetect -y 3
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
?执行结果表示i2c3总线上有个地址为0x51的从设备。
查看设备名称:
[root@RK356X:/]# cat /sys//bus/i2c/devices/3-0051/name
hym8563
?显示时间:
[root@RK356X:/]# hwclock
Tue Oct 10 01:52:13 2000 0.000000 seconds
修改时间,执行date -s命令修改时间,再执行hwclock -w更新硬件时间:
[root@RK356X:/]# date -s "2022-04-17 16:19:50"
Sun Apr 17 16:19:50 UTC 2022
[root@RK356X:/]# hwclock -w
[root@RK356X:/]# hwclock
Sun Apr 17 16:20:07 2022 0.000000 seconds
?接上备用电池,断开主板其它电源,等一段时间再给主板上电,主板启动之后执行date查看系统时间:
[root@RK356X:/]# date
Sun Apr 17 16:34:00 UTC 2022
可以看出主板断电之后时间在继续运行。?
|