4.4.2. 参数配置
4.4.2.1. 内核配置
参考快速入门 - 编译概述 - Kernel配置,进入kernel的功能配置,按如下选择:
Linux
Device Drivers
[*] Real Time Clock
[*] ZX Soc RTC
4.4.2.2. DTS 参数配置
4.4.2.2.1. RTC 自定义参数
RTC驱动支持从DTS中配置的自定义参数,如下表:
参数名称 |
适用版本 |
类型 |
取值范围 |
功能说明 |
---|---|---|---|---|
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 |
正整数 |
3276800±3196 |
时钟源的实测频率值*100,用于时钟校准 |
aic,clock-driver |
V1.0 |
正整数 |
[0, 15] |
clock驱动能力,数值越小越省功耗 |
备注
参数
aic,clock-driver
的值,需要通过一个 Sysfs 节点 驱动能力扫描 来扫描得到。参数
aic,alarm-io-output
和aic,32k-io-output
共用一个IO输出,所以只能二选一。clock-rate
取时钟源频率值的 100倍,是为了提高校准的精度,校准可以精确到0.03Hz。
4.4.2.2.2. M4 配置
common/m4.dtsi中的参数配置:
rtc: rtc@19030000 {
compatible = "zx,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";
};
4.4.2.3. 时区配置
openwrt SDK中默认配置时区为 Asia/Shanghai
,即中国的 +8 时区。 在openwrt根目录下执行 make menuconfig,进入功能配置:
System configuration
(Asia/Shanghai) default local time
有没有时区配置,可以通过shell命令 date
的输出信息判断,有 “UTC” 字样表示未配置时区,有 “CST” 字样表示已经配置了 +8 时区。
# date
Tue Jan 6 01:41:27 UTC 1970 - 未配置时区
# date
Tue Jan 6 01:41:27 CST 1970 - 已配置 +8 时区
未配置时区的时候,RTC 时间 和 系统时间(date命令的输出)是一致的;增加了时区配置后,两个会有一个时区差,关系:
系统时间 = RTC 时间 + 时区
以 +8 时区为例,可以通过 hwclock 命令 看到这个差别:
# date - 系统时间
Tue Jan 6 01:49:53 CST 1970
# hwclock - 原始的RTC时间
Mon Jan 5 17:49:17 1970 0.000000 seconds
# hwclock -u - RTC时间 + 时区,和系统时间一致
Tue Jan 6 01:49:20 1970 0.000000 seconds
备注
在打开时区的情况下,从 系统时间同步到RTC时间 的设置命令用 hwclock -wu
,查看RTC时间的方式也应该加参数 -u
(告诉hwclock工具RTC中保存的是UTC时间)。