12. RTC#
RTC全称为Real Time Clock,是一个专门用来记录时间的硬件设备,一般可以集成在soc内部,或者选择外挂,通过i2c与其通信。
那为什么会需要RTC,因为Linux的系统时间(也就是我们常说的wall time)只能在系统运行时使用,系统关机时间就丢了,而RTC可以在系统关闭后,依靠外部电池或其他supply继续工作,这才将时间保存下来。
LubanCat-RK系列板卡需要RTC电池才能开启RTC的功能,RTC电池的选型如下:
购买链接(仅供参考): (淘宝)CR2032联想 IBM笔记本台式机主板电池3V纽扣COMS 带线 2针
购买链接(仅供参考): (淘宝)原装KTS CR2032纽扣电池3V笔记本遥控器台式机主板电脑锂电池带线
备注
链接仅供参考,如需要,请自行根据上述链接的关键词搜索购买
接线的正负极如下:
如果线序不对,可以使用镊子调整RTC电池的接口:
12.1. 使用方法#
Linux 提供了三种用户空间调用接口。在板卡中对应的路径为:
SYSFS接口:/sys/class/rtc/rtc0/
PROCFS接口: /proc/driver/rtc
IOCTL接口: /dev/rtc0
SYSFS接口:
1root@lubancat:~# cat /sys/class/rtc/rtc0/date
22023-06-19
3root@lubancat:~# cat /sys/class/rtc/rtc0/time
403:15:22
PROCFS接口:
1root@lubancat:~# cat /proc/driver/rtc
2rtc_time : 07:06:56
3rtc_date : 2023-06-19
4alrm_time : 03:18:50
5alrm_date : 2023-06-19
6alarm_IRQ : no
7alrm_pending : no
8update IRQ enabled : no
9periodic IRQ enabled : no
10periodic IRQ frequency : 1
11max user IRQ frequency : 64
1224hr : yes
13root@lubancat:~#
IOCTL接口:
1可以参考内核文档作为例子
2tools/testing/selftests/timers/rtctest.c
12.2. 一些常用的命令#
1date //修改系统时钟,具体命令使用可以man下
2hwclock -s //将硬件时间同步到系统时间
3hwclock -w //将系统时间同步到硬件时间
4timedatectl //显示系统时间等
5
6#以下手动设置时间或者网络同步时间后,-w将系统时间写入到硬件rtc,-s再将rtc时间写回系统,这样每次重启板卡都会进行rtc时间同步到系统时间。
7sudo date -s "2024-08-14 08:00:00" //手动设置时间
8sudo hwclock -w //系统时间同步到硬件rtc
9sudo hwclock -s //硬件rtc同步到系统