linux rtc

一. rtc 作用

rtc是一个片外的时钟源,相比片内时钟源它更精确,而且稳定性高,不会随频率变化而变化。

RTC中存储两个时间,一个是普通的滴答时间,另一个是提醒时间,RTC犹如一个滴答计时器,当RTC中时钟到达指定的提醒时间的时候,就会发出中断,让系统开机,从而达到关机闹钟的功能。

 

二. 用户空间接口

 

/dev/rtc... 兼容PC系统的RTC,对非x86结构支持不完整。

/dev/rtc0,/dev/rtc1 ... 系统框架的一部分,支持多种RTC

 

系统下还有如下两个位置提供rtc相关接口:

两者描述的属性不尽相同,/sys接口下主要rtc本身业务功能描述; 而proc接口主要是描述了rtc支持的功能,其描述属性和ioctl操作接近。

2.1  sys接口

/sys/class/rtc/rtcN... sysfs支持只读访问RTC

cat /sys/class/rtc/rtc0/
date           hctosys        power/         time           
dev            max_user_freq  since_epoch    uevent         
device/        name           subsystem/     wakealarm

--------------------------------------------------------------------------

cat /sys/class/rtc/rtc0/*
2021-05-11
253:0
cat: /sys/class/rtc/rtc0/device: 是一个目录
1
64
ls2x-rtc 100d0100.rtc
cat: /sys/class/rtc/rtc0/power: 是一个目录
1620698709
cat: /sys/class/rtc/rtc0/subsystem: 是一个目录
02:05:09
MAJOR=253
MINOR=0
DEVNAME=rtc0

2.2 proc接口

/proc/driver/rtc... 首个RTC(rtc0)使用procfs接口访问

cat /proc/driver/rtc
rtc_time    : 01:41:56
rtc_date    : 2021-05-11
alrm_time    : 12:59:04
alrm_date    : 2021-05-10
alarm_IRQ    : no
alrm_pending    : no
update IRQ enabled    : no
periodic IRQ enabled    : no
periodic IRQ frequency    : 64
max user IRQ frequency    : 64
24hr        : yes

 

2.3 ioctl

rtc  ioctl 支持如下命令:

命令

解释

RTC_AIE_OFF

 

关闭alarm中断

RTC_AIE_ON

打开alarm中断,RTC连接上一个中断线,它可以在未来24小时发送一个报警中断

RTC_PIE_ON

打开周期性中断

RTC_PIE_OFF

关闭周期性中断

RTC_UIE_ON

打开update类型的中断

RTC_UIE_OFF

关闭update类型的中断

RTC_ALM_READ

读取alarm的时间,在24小时内发送一个警告

RTC_ALM_SET

设定alarm的时间,在24小时内发送一个警告

RTC_RD_TIME

读取当前的RTC时间

RTC_SET_TIME

设定当前的RTC时间

RTC_IRQP_READ

读取当前周期性中断的频率

RTC_IRQP_SET

设定当前周期性中断的频率

 

三.  驱动

 

四. 测试

Linux时间有两个, 系统时间(Wall Time), RTC时间。

系统时间(WT):由Linux系统软件维持的时间

date
2021年 05月 11日 星期二 11:02:45 CST

 

RTC时间:这个时间来自我们设备上的RTC芯片,通过 hwclock 可以读取

hwclock -r
2021-05-11 11:03:28.717382+08:00

 

4.1 获取系统rtc状态

dmesg | grep rtc
[   29.489140] rtc rtc0: invalid alarm value: 1957-4-20 4:30:35
[   29.494815] ls2x-rtc LOON0001:00: rtc core: registered LOON0001:00 as rtc0
[   29.503640] rtc-efi rtc-efi: rtc core: registered rtc-efi as rtc1
[   29.651267] ls2x-rtc LOON0001:00: setting system clock to 2021-05-10 01:14:30 UTC (1620609270)

 

4.2 时间标识

RTC硬件时钟是主板time,系统时间是linux操作系统的time。
1、CST China Standard Time UT+8:00
2、GMT 格林威治标准时间(Greenwich Mean Time,简称G.M.T.)
3、UTC 世界协调时间UTC比GMT来得更加精准
4、DST 夏日节约时间:所谓「夏日节约时间」Daylight Saving Time(简称D.S.T.),
5、RTC 硬件时钟(Real Time Clock,简称RTC):hwclock -r,相对应的系统时钟(System Clock):date -R。
6、GMT + 8 = UTC + 8 = CST
7、查看硬件时钟的操作:# hwclock --show 或# clock –show
8、强制把系统时间写入CMOS#clock -w
9、同步系统时钟并写入cmos: ntpdate 时间服务器;hwclock -w

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值