31. 外部RTC使用¶
EBF6ull Pro开发板使用内部的RTC,断电时需要纽扣电池供电,而且耗电较快也不是很准,为此我们可以使用外置的 RTC电路。本章将简单讲解一种外置RTC的方法。
31.1. RTC硬件¶
硬件电路参考如上,使用外置RTC芯片RX8010SJ,只使用时钟功能,通过i2c读取,IRQ1和IRQ2不用接。
31.2. RTC驱动增加¶
使用这个外置时钟,需要内核加下驱动,可以改下我们内核的配置文件(npi_v7_defconfig), 增加CONFIG_RTC_DRV_RX8010=y配置,然后重新编译,替换内核即可,内核编译替换可以参考下: 内核编译
31.3. RTC设备树插件¶
可以修改设备树或者插件一个独立的设备树插件,下面使用设备树插件添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /dts-v1/;
/plugin/;
#include "imx6ul-pinfunc.h"
#include "dt-bindings/gpio/gpio.h"
/ {
fragment@0 {
target= <&i2c2>;
__overlay__{
rx8010: rx8010@32 {
compatible = "epson,rx8010";
reg = <0x32>;
status = "okay";
};
};
};
};
|
重新编译下设备树插件,可以参考下: 设备树插件编译加载
获取到设备树插件文件rtc-rx8010.dtbo,使用新的镜像,需要传输到开发板的/usr/lib/linux-image-4.19.35-imx6/overlays/目录下, 然后在/boot/uEnv.txt文件中开启设备树插件,即加一行:
1 | dtoverlay=/usr/lib/linux-image-4.19.35-imx6/overlays/rtc-rx8010.dtbo
|
保存uEnv.txt文件后,使用sync,然后再重启下系统。
31.4. RTC测试¶
使用命令安装下i2c工具
sudo apt install i2c-tools -y
然后使用i2cdetect命令查看i2c2总线上的设备,可以看到设备显示UU, 说明是被其他驱动占用(这里是RTC的驱动使用这个设备)
也可以使用命令查看下设备文件,
使用命令sudo hwclock -f /dev/rtc0,读取rtc的时间,这里之前同步了时间
一些常用的命令:
date //修改系统时钟,具体命令使用可以man下
hwclock -s //将硬件时间同步到系统时间
hwclock -w //将系统时间同步到硬件时间
timedatectl //显示系统时间等