Sigmastar_RTC使用参考

REVISION HISTORY

Revision No.
Description
Date
1.0
  • Initial release
  • 04/15/2024

    1. 概述

    Real Time Clock(实时时钟),简称RTC,主要是用于计时和闹钟设置。RTC驱动采用标准的LINUX框架,能够使用统一的接口来操作RTC。

    2. 硬件介绍

    2.1. RTC晶振频率

    RTC目前使用32.768kHz频率的晶振

    3. Kernel用法介绍

    3.1. Kernel Config配置

    Device Drivers --->
    
        [*] Sstar RTC Driver --->
            [ ]     Sstar RTC With PWC
            [*]     Sstar RTC With Alarm
            [ ]     Sstar RTC With Offset
    

    3.2. Dts配置参数说明

          rtcpwc {
              compatible = "sstar,rtcpwc";
              reg = <0x1F006800 0x200>;
              interrupts = <GIC_SPI INT_IRQ_DIG_TOP IRQ_TYPE_LEVEL_HIGH>;
              status = "ok";
          };
    
    属性 描述 备注
    compatible 用于匹配驱动进行驱动注册 禁止修改
    reg 寄存器映射的物理地址 禁止修改
    interrupts 中断号及属性 禁止修改
    status 驱动开关 根据需要配置,ok/disabled

    3.3. RTC命令操作方法

    3.3.1. 显示系统时间

    命令:date

    3.3.2. 设置系统时间

    命令: date MMDDhhmmYYYY.ss

    MM : month(01-12);

    DD : day(01-31);

    Hhmm : time(0000-2359);

    YYYY : year[optional];

    ss : seconds(00-59) [optional]

    3.3.3. Show RTC Clock

    命令:hwclock

    3.3.4. Set RTC Clock to System Clock

    命令:hwclock -w

    3.4. RTC应用编程操作方法

    应用程序可以通过ioctl操作 /dev/rtc0 文件读取设定RTC时间及Alarm时间,代码具体实现可以参考driver/sstar/rtc/ut/rtc_ut.c。接下来演示如何通过rtc_ut操作RTC。

    3.4.1. 读取系统时间

    命令:./rtc_ut

    3.4.2. 设置系统时间

    命令:./rtc_ut -w -s "2021-11-3 20:10:30"

    ​描述:设置RTC时间为2021年11月3日 20:10:30

    命令:./rtc_ut -w -o 10

    描述:设置RTC时间为当前时间加上10秒

    3.4.3. 读取报警时间

    命令:./rtc_ut -a

    3.4.4. 设置报警时间

    命令:./rtc_ut -a -w -s "2021-11-3 20:20:30"

    描述:设置RTC报警时间为2021年11月3日 20:20:30

    程序会sleep到alarm触发

    命令:./rtc_ut -w -a -o 10

    描述:设置RTC时间为当前时间加上10秒

    3.5. 自定义用户空间接口

    3.5.1. 用户空间接口

    由于内核的RTC框架并未完全涵盖SigmaStar RTCPWC硬件设计的编码要求,因此RTC驱动在sys文件系统中自定义了一些文件用于扩充功能。文件的位置为:/sys/class/sstar/rtcpwc/

    文件 描述
    alarm_timer 用于查看和设置报警时间,输出的值为倒计时,输入的值为增加倒计时时间

    如需设置alarm时间为30秒后,可以使用以下命令:

    1. echo 30 > alarm_timer
    

    查看倒计时时间,可以使用以下命令:

    1. cat alarm_timer