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驱动能力,数值越小越省功耗

备注

  1. 参数 aic,clock-driver 的值,需要通过一个 Sysfs 节点 驱动能力扫描 来扫描得到。

  2. 参数 aic,alarm-io-outputaic,32k-io-output 共用一个IO输出,所以只能二选一。

  3. 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时间)。