RTC 配置
4 Dec 2024
Read time: 3 minute(s)
本节介绍 RTC 的参数配置。
内核配置
在 Luban 根目录下执行 make kernel-menuconfig,进入 kernel 的功能配置,按如下选择打开 RTC 驱动:
Linux
Device Drivers
[*] Real Time Clock
[*] ArtInChip Soc RTC
配置 DTS 参数
RTC 驱动支持从 DTS 中配置的自定义参数如下表所示:
注:
aic,alarm-io-output
和 aic,32k-io-output
共用一个 IO 输出,只能二选一。参数名称 | 适用版本 | 类型 | 取值范围 | 功能说明 |
---|---|---|---|---|
aic,alarm-io-output | V0.1/V1.0 | Boolean | 有 - 1,无 - 0 | 是否使能 alarm 的 IO 输出功能 |
aic,32k-io-output | V1.0 | Boolean | 有 - 1,无 - 0 | 是否使能 32K 时钟输出功能 |
clock-rate | V1.0 | Integer | 3276800±3196 | 时钟源的实测频率值*100,用于时钟校准。 这种取值方式可提高校准的精度,使得校准可以精确到 0.03 Hz。 |
aic,clock-driver | V1.0 | Integer | [0, 15] | Clock 驱动能力,数值越小越省功耗 需要通过一个 Sysfs 节点 驱动能力扫描 来获得取值。 |
D211 配置
-
common/d211.dtsi 中的参数配置:
rtc: rtc@19030000 { compatible = "artinchip,aic-rtc-v1.0"; reg = <0x0 0x19030000 0x0 0x1000>; interrupts-extended = <&plic0 50 IRQ_TYPE_LEVEL_HIGH>; clocks = <&cmu CLK_RTC>; resets = <&rst RESET_RTC>; };
-
xxx/board.dts 中的参数配置:
&rtc { aic,alarm-io-output; clock-rate = <3276851>; aic,clock-driver = <13>; status = "okay"; };
配置时区
Luban SDK 提供了时区管理功能,默认配置时区为
Asia/Shanghai
,即中国的 +8 时区。
按照下列流程,可以配置和管理时钟:- 在 Luban 根目录下执行 make
menuconfig,进入功能配置:
System configuration (Asia/Shanghai) default local time
-
执行 Shell 命令
date
,查看输出信息,判断是否有时区配置。- 有 “UTC”
字样表示未配置时区:
# date Tue Jan 601:41:27 UTC 1970 - 未配置时区
此时,RTC 时间和系统时间(date 命令的输出)一致。
- 有 “CST” 字样表示已经配置了 +8
时区:
# date Tue Jan 601:41:27 CST 1970 - 已配置 +8 时区
配置时区后,RTC 时间和系统时间会出现一个时区差:系统时间=RTC 时间+时区
以 +8 时区为例,通过 hwclock 命令 看到这个差别:# date - 系统时间 Tue Jan 601:49:53 CST 1970# hwclock - 原始的 RTC 时间 Mon Jan 517:49:17 19700.000000 seconds # hwclock -u - RTC 时间 + 时区,和系统时间一致 Tue Jan 601:49:20 19700.000000 seconds
- 有 “UTC”
字样表示未配置时区:
-
在打开时区的情况下,使用
hwclock -wu
命令可以从系统时间同步到 RTC 时间的设置 。查看 RTC 时间的方式也应该加参数
-u
,指示 hwclock 工具 RTC 中保存的是 UTC 时间。