8. RTC¶
RTC全称为Real Time Clock,是一个专门用来记录时间的硬件设备,一般可以集成在soc内部,或者选择外挂,通过i2c与其通信。
那为什么会需要RTC,因为Linux的系统时间(也就是我们常说的wall time)只能在系统运行时使用,系统关机时间就丢了,而RTC可以在系统关闭后,依靠外部电池或其他supply继续工作,这才将时间保存下来。
LubanCat-RK356x系列板卡需要RTC电池才能开启RTC的功能。
接线的正负极如下:
如果线序不对,可以使用镊子调整RTC电池的接口:
8.1. rk809¶
RK809是一款高性能PMIC,RK809 集成5个大电流DCDC、9个LDO、2个开关SWITCH、 1个RTC、1个高性能CODEC、可调上电时序等功能。
LubanCat-RK356x系列板卡均使用RK809作为pmic使用,但是真正使用RK809的RTC功能的只有LubanCat-1,LubanCat-1N,LubanCat-2,LubanCat-2N
8.2. rx8010¶
LubanCat-2金手指底板和BTB底板使用的RTC是外置的rx8010芯片,rx8010有使用简单、标准SOP8封装和高性价比
注意
rk809的内部rtc电流在30uA,外置的rx8010芯片的电流在0.8uA,相差整整37.5倍,如果使用rk809的内部rtc电池很快就会没电,如果是需要长时间使用rtc的场景,建议使用外部rtc。
8.3. 使用板卡上的RTC¶
以上带有rx8010的板卡,默认关闭了内部rk809的rtc,默认使能rx8010,不带有rx8010的板卡默认使能了内部rk809的rtc。
Android 提供了用户空间调用接口。在板卡中对应的路径为:
SYSFS接口:/sys/class/rtc/rtc0/
PROCFS接口: /proc/driver/rtc
SYSFS接口:
1 2 3 4 | rk3568_lubancat_2_v2_mipi1080p:/ # cat /sys/class/rtc/rtc0/date
2024-08-01
rrk3568_lubancat_2_v2_mipi1080p:/ # cat /sys/class/rtc/rtc0/time
08:04:41
|
PROCFS接口:
1 2 3 4 5 6 7 8 9 10 11 12 | rk3568_lubancat_2_v2_mipi1080p:/ # cat /proc/driver/rtc
rtc_time : 08:06:14
rtc_date : 2024-08-01
alrm_time : 00:00:00
alrm_date : 1970-01-01
alarm_IRQ : no
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1
max user IRQ frequency : 64
24hr :
|
8.4. 一些常用的命令¶
1 2 3 4 5 6 7 8 | 安卓使用硬件rtc执行指令:
hwclock --show --rtc=/dev/rtc0 //查看RTC0的时间
date //查看系统时间
date "2024-03-09 09:46:00" //写入系统时间
hwclock --systohc --rtc=/dev/rtc0 //将系统时间写入硬件时钟,并指定硬件时钟设备为 /dev/rtc0
|
8.5. 外挂RTC模块¶
提示
如果使用不带rx8010板卡的用户也希望使用低功耗的外部rtc,可以通过40pin外挂一个rtc。
8.5.1. 40pin外挂rtc¶
推荐使用pcf8563或者ds1307外部rtc模块。
购买链接(仅供参考):(淘宝)PCF8563T芯片 RTC实时时钟模块
购买链接(仅供参考):(淘宝)DS1307时钟模块 RTC实时时钟模块
8.5.2. 修改设备树配置¶
以鲁班猫2-v2使用外挂RTC ds1307为例,鲁班猫2-v2板卡40pin上总共有2个i2c,分别是I2C3_M0、I2C5_M0。
修改android11-dev/kernel/arch/arm64/boot/dts/rockchip/rk3568-lubancat-2-v2-mipi1080p.dts配置文件,将对应的I2C和ds1307打开, 关闭默认的rk809 rtc,如下图使用I2C3_MO。menuconfig将ds1307驱动编译到内核。
8.5.3. 实物连接¶
以鲁班猫2-v2使用I2C3_M0为例。
板卡 |
模块 |
---|---|
3.3V |
VCC |
SCL |
SCL |
SDA |
SDA |
GND |
GND |
其余引脚不接 |
ds1307实物连接图如下:
i2c-tools 测试图如下:
8.5.4. Android app修改rtc时间¶
目前野火提供了Android rtc修改测试程序,目前只能使用在user debug编译的固件如下:
该APP下存在6个按钮,分别为:获取RTC时间、获取系统时间、修改RTC时间、修改系统时间、同步系统时间、同步RTC时间。
按键 |
功能 |
---|---|
获取 RTC 时间 |
获取RTC时间,将其显示到RTC的文本框中 |
获取系统时间 |
获取系统时间,将其显示到system的文本框中 |
修改 RTC 时间 |
将文本框的时间修改到RTC |
修改系统时间 |
将文本框的内容修改到系统时间 |
同步系统时间 |
将RTC的时间同步到系统时间 |
同步 RT C时间 |
将系统时间同步到RTC |