RTC 配置
Read time: 2 minute(s)
本节介绍 RTC 的参数配置。
内核配置
-
在 SDK 根目录下,执行下列命令,进入 kernel 的功能配置界面:
make kernel-menuconfig
或使用简写命令
make km
-
在内核配置界面,按如下选择打开 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”
字样,表示未配置时区,示例如下:
Tue Jan 601:41:27 UTC 1970
此时,RTC 时间和系统时间(date 命令的输出)一致。
- 如果系统输出中包含 “CST” 字样,表示已经配置了 +8
时区:
Tue Jan 601:41:27 CST 1970
此时 RTC 时间和系统时间会出现一个时区差:系统时间 = RTC 时间 + 时区
以 +8 时区为例,通过 hwclock 命令 可以查看时区差:- 系统时间:
date
Tue Jan 601:49:53 CST 1970
-
原始 RTC 时间
hwclock
Mon Jan 517:49:17 19700.000000 seconds
- RTC 时间 +
时区,和系统时间一致
hwclock -u
Tue Jan 601:49:20 19700.000000 seconds
在打开时区的情况下,使用 hwclock -wu 命令可以从系统时间同步到 RTC 时间的设置。
查看 RTC 时间的方式也应该加参数
-u
,指示 hwclock 工具 RTC 中保存的是 UTC 时间。
- 系统时间:
- 如果系统输出中包含 “UTC”
字样,表示未配置时区,示例如下: