linux RTC 梳理

2 篇文章 0 订阅

1 概念:

RTC(real time clock)实时时钟,主要作用是给Linux系统提供时间。RTC因为是电池供电的,所以掉电后时间不丢失。Linux内核把RTC用作“离线”的时间与日期维护器

2 首先介绍一下RTC的硬件原理:

从网上整理的资料,个人感觉概念和功能说的还算比较全:
在系统掉电的情况下,RTC单元可由后备电池供电,保证RTC的继续运行。RTC可通过STRB/LDRB指令向中央处理器传送8位BCD数据,这些数据包括秒、分、时、星期、日、月、年等。在S3C44B0嵌入式系统中,RTC单元时钟源采用单独外部晶振32.768kHz提供。RTC的系统框架图如图1所示
在这里插入图片描述

(1) rtc的特性:

个人总结rtc的特性只包含两部分:

  1. 可以将时间写入和读出,因为里面有独立的电池,所以系统在掉电的时候可以准确的读取出时间。
  2. 毫秒级别的报警器,可以作为定时中断的发生器,作为手机等产品的关机闹钟。

RTC的特性包括:
-包括秒、分、时、日、月、年的BCD数据
  这些数据都是直接读/写RTC模块中的寄存器,这些寄存器包括:BCDSEC(秒)、BCDMIN(分)、BCDHOUR(时)、BCDDAY(日)、BCDDATE(星期)、BCDMON(月)、BCDYEAR(年)。
  - 闰年发生器
  闰年发生器是根据BCDDAY、BCDMON和BCDYEAR的数据来决定每个月的天数是28、29、30或31天。因为一个8位计数器只能表示2个BCD数据,因此不能直接判断00是否为闰年。例如,它不能区分1900年和2000年哪一个为闰年,而在S3C44B0中有可以处理这种闰年的硬件逻辑。
  - 秒、毫秒中断报警
  RTC可以根据用户的需求设定时间,并在设定的时间内产生一个报警信号。在正常操作模式下,产生报警中断;在掉电模式下,电源管理器唤醒信号和中断信号。
  - 解决了“千年虫”问题
  由于具有解决闰年的硬件逻辑,所以解决了“千年虫”问题。
  - 独立的供电电源
  RTC逻辑可用备用电池驱动,即使在系统掉电的情况下,RTC也可以通过它的独立供电电源向RTC模块供电。在此需要说明的是,在系统掉电的情况下,处理器和RTC逻辑间的接口应关闭,备用电池只驱动晶振电路和BCD计数器,这样才能将系统的功耗降到最低。
  - 循环复位功能
  循环复位功能是由RTC循环复位寄存器RTCRST执行的。

3 都有哪些RTC的芯片

DS323 mmu
HYMB563TS robot
DS1302需要使用外置晶振,且没有温度补偿,误差较大
SD2200
https://wenku.baidu.com/view/b80ea64bcf84b9d528ea7a13.html
带温度补偿的rtc 芯片:
EPSON公司的RX8025T
https://wenku.baidu.com/view/470e9855482fb4daa58d4bcf.html
Maxim公司的DS3231
DS3231内置晶振且有内部温度补偿,误差可做到1分钟每年
https://blog.csdn.net/dpjcn1990/article/details/92831577
SDIC公司的SD3025T
暂无资料
在这里插入图片描述

4 下面继续讲一些时钟同步的方法

网络标识和时区(英语:Network Identity and Time Zone,缩写NITZ)是一种通过无线网络向移动设备提供本地日期和时间、时区、夏时制偏移,以及网络提供商身份信息的机制,这通常用于移动电话自动更新系统时间。NITZ技术自GSM 阶段2 Release 96版本开始成为官方标准的可选部分之一。
使用GPS同步来授时能使时间分辨率达到毫秒级,NITZ标识则“对于时间只能精确到数分钟”

设置时区:
将时区文件 copy到这里 /etc/localtime

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LinuxRTCLinux Real-Time Clock)是Linux系统提供硬件独立的时间服务的模块,主要用于在系统启动时恢复时间并提供一个低精度但稳定的时钟源。它并不依赖于网络或其他外部时间源,适合对时间同步有严格需求的实时环境。 当系统首次引导或RTC电池电力不足失去时间后,LinuxRTC可以通过BIOS提供的RTC硬件接口来校正时间。如果RTC的时间不准确,可以通过以下步骤进行矫正: 1. **查看当前RTC时间**: 在终端运行`cat /sys/class/rtc/rtc0/time`命令,这里`rtc0`通常是默认的RTC设备,查看当前的RTC时间。 2. **使用RTC工具校准**: 使用`hwclock --set --rtc=rtc0`命令设置RTC时间,可以RTCrtc0)作为目标。如果你知道准确的时间戳(例如UTC时间),可以在命令后加上`--ntpdate <timestamp>`。 3. **启用RTC自动校准**: 如果你想让系统定期自动校准RTC,可以在`/etc/default/rcS`或`/etc/default/rc.local`文件设置`HWCLOCK=utc`,这将启用硬件时钟的自动校准功能。 4. **检查和调整RTC校准频率**: 如果你需要更精细的控制,可以查阅`hwclock` man page,了解如何调整校准间隔,例如使用`--adjust`选项来设置校准频率。 请注意,虽然RTC提供了基本的时间服务,但它并不是高精度的时间同步解决方案,对于需要更高精确度的应用,如NTP服务器或需要时间戳同步的服务,可能需要结合NTP进行时间同步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值