当前位置: 首页 > ai >正文

硬件实时时钟(RTC)

硬件实时时钟(RTC)详解

硬件实时时钟(Real-Time Clock,RTC)是计算机主板上的一个独立计时芯片,用于在系统关机后持续记录时间。它不依赖操作系统,由纽扣电池(如CR2032)供电,保证时间数据持久化。


1. RTC 核心特性

特性说明
独立性不依赖CPU或操作系统,断电后仍运行(靠电池供电)
精度通常误差 ±2ppm(约每月±5秒),高精度RTC(如DS3231)可达 ±0.5ppm
接口通过I²C或SPI与系统通信
时钟源32.768kHz晶振(分频后生成1Hz信号)
电池寿命典型CR2032电池可使用3-10年

2. Linux 中的 RTC 操作

(1) 查看系统时间与硬件时间

# 系统时间(软件时钟)
date# 硬件时间(RTC)
sudo hwclock --show

(2) 同步时间

# 将系统时间写入RTC
sudo hwclock --systohc# 从RTC读取时间到系统
sudo hwclock --hctosys

(3) 检查RTC设备

# 列出RTC设备
ls /dev/rtc*# 查看RTC详细信息
sudo dmesg | grep rtc

3. RTC 与系统时钟的关系

  • 系统时钟
    由Linux内核维护,依赖CPU计时和NTP同步,关机后失效。
    (可通过 date 命令修改)

  • 硬件时钟(RTC)
    物理芯片记录的时间,持久化存储。
    (通过 hwclock 命令管理)

同步流程

  1. 开机时:RTC时间 → 系统时间(若未配置NTP)
  2. 关机时:系统时间 → RTC时间(需手动或自动同步)

4. 配置自动时间同步

(1) 启用NTP与RTC同步

编辑 /etc/systemd/timesyncd.conf

[Time]
NTP=pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org

重启服务:

sudo timedatectl set-ntp true
sudo systemctl restart systemd-timesyncd

(2) 设置时区

sudo timedatectl set-timezone Asia/Shanghai

(3) 检查时间同步状态

timedatectl status

输出示例:

               Local time: Wed 2023-10-04 15:30:00 CSTUniversal time: Wed 2023-10-04 07:30:00 UTCRTC time: Wed 2023-10-04 07:30:00Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yesNTP service: activeRTC in local TZ: no

5. 常见问题

(1) RTC时间与系统时间不一致

原因

  • 未启用NTP同步
  • 时区配置错误
  • RTC电池电量不足

解决

# 强制同步
sudo hwclock --systohc

(2) RTC时间显示为UTC

若希望RTC存储本地时间(不推荐):

sudo timedatectl set-local-rtc 1

(3) RTC设备未识别

检查内核日志:

dmesg | grep rtc

若未检测到,可能是主板驱动问题或电池失效。


6. 嵌入式开发中的RTC

在嵌入式Linux中,需确保:

  1. 内核启用RTC驱动:
    make menuconfig  # 勾选 Device Drivers → Real Time Clock
    
  2. 设备树(DTS)配置RTC节点:
    &i2c1 {rtc@68 {compatible = "maxim,ds3231";reg = <0x68>;};
    };
    

7. 总结

操作命令说明
查看RTC时间sudo hwclock --show显示硬件时钟
系统时间→RTCsudo hwclock --systohc同步到硬件
RTC时间→系统sudo hwclock --hctosys同步到系统
启用NTP自动同步sudo timedatectl set-ntp true依赖网络时间协议
http://www.xdnf.cn/news/9418.html

相关文章:

  • java调用C语言的dll方法
  • JWT安全:假密钥.【签名随便写实现越权绕过.】
  • PHP+MySQL开发语言 在线下单订水送水小程序源码及搭建指南
  • TypeScript 中的剩余参数:灵活处理可变数量参数
  • Prometheus + Grafana 监控常用服务
  • 《Scientific Reports撤稿门技术节分析》——从图像篡改检测到学术伦理重建的技术透视
  • Golang | gRPC索引服务
  • HTTP协议接口三种测试方法之-JMeter(保姆教程)
  • 大模型在先天性肌性斜颈诊疗全流程中的应用研究报告
  • Flink SQL 编程详解:从入门到实战难题与解决方案
  • 论文笔记:Towards Explainable Traffic Flow Prediction with Large Language Models
  • 查询oracle进程数和会话数进行优化
  • Gemini Pro 2.5 输出
  • P2014 [CTSC1997] 选课
  • 53、用例(Use Case)详解
  • 封装索引列表
  • AXI3、AXI4 和 AXI5 的详细差异对比
  • 第三章、运动学逆解(双足轮根据腿高求舵机角度)
  • 完全卸载VS Code--Windows版
  • 在 Vue + Vite 项目中,直接使用相对路径或绝对路径引用本地图片资源时,图片无法正确显示。
  • Claude 4对比Claude 3.7全面评测:2025最新AI模型实测对比
  • 山东大学软件学院创新项目实训开发日志——第十三周
  • xilinx 7系列底层可配置逻辑块CLB中的LUT、FF等资源
  • IT编程学习资料大全​​​​​​​​
  • 嵌入式学习之系统编程(六)线程
  • 打破边界 智启新篇 新一代质检LIMS系统的演进蓝图
  • QGis实现geoserver上的样式展示(方便样式编辑)
  • ShardingSphere-读写分离
  • leetcode0611. 有效三角形的个数-medium
  • ROS2学习(14)------ ROS2Launch 多节点启动与配置脚本