硬件实时时钟(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.pswp.cn/web/82204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm debug的时候无法debug到指定的位置就停住不动了

报错大致是这样的&#xff0c;但是直接run没有问题&#xff0c;debug就停住不动了 Traceback (most recent call last): File "/home/mapengsen/.pycharm_helpers/pydev/_pydevd_bundle/pydevd_comm.py", line 467, in start_client s.connect((host, port)) Timeou…

Python6.1打卡(day33)

DAY 33 MLP神经网络的训练 知识点回顾&#xff1a; 1.PyTorch和cuda的安装 2.查看显卡信息的命令行命令&#xff08;cmd中使用&#xff09; 3.cuda的检查 4.简单神经网络的流程 1.数据预处理&#xff08;归一化、转换成张量&#xff09; 2.模型的定义 …

NodeJS全栈开发面试题讲解——P11消息队列(MQ)

✅ 11.1 为什么要用消息队列&#xff1f;在哪些场景下最适合&#xff1f; ✅ 作用&#xff1a; 削峰填谷&#xff1a;缓解高并发压力&#xff0c;异步处理任务&#xff08;如秒杀下单 → MQ → 异步扣库存&#xff09; 解耦服务&#xff1a;上下游解耦&#xff08;如下单服务…

mysql执行sql语句报错事务锁住

报错情况 1205 - Lock wait timeout exceeded; try restarting transaction先找出长时间运行的事务 SELECT * FROM information_schema.INNODB_TRX ORDER BY trx_started ASC;终止长时间运行的事务 KILL [PROCESS_ID];

C#集合循环删除某些行

你想要在遍历集合&#xff08;例如List&#xff09;的同时删除某些元素时&#xff0c;直接在循环中删除元素可能会导致问题&#xff0c;因为这可能会改变集合的大小和导致索引问题&#xff1b; 可以用for循环的倒序来删除&#xff1b; 如果要删除满足特定条件的所有元素&…

裂缝仪在线监测装置:工程安全领域的“实时守卫者”

在基础设施运维领域&#xff0c;裂缝扩展是威胁建筑结构安全的核心隐患之一。传统人工巡检方式存在效率低、时效性差、数据主观性强等局限&#xff0c;而裂缝仪在线监测装置通过技术迭代&#xff0c;实现了对结构裂缝的自动化、持续性追踪&#xff0c;为工程安全评估提供科学依…

Multisim14使用教程详尽版--(2025最新版)

一、Multisim14前言 1.1、主流电路仿真软件 1. Multisim:NI开发的SPICE标准仿真工具,支持模拟/数字电路混合仿真,内置丰富的元件库和虚拟仪器(示波器、频谱仪等),适合教学和竞赛设计。官网:艾默生旗下测试和测量系统 - NI。 2. LTspice XVII:ADI旗下免费高性能SPICE仿…

深度学习篇---人脸识别中的face-recognition库和深度学习

深度学习方法和使用 Python 的face_recognition库进行人脸识别在技术原理、实现方式和应用场景上有显著区别&#xff0c;以下从多个维度对比分析&#xff1a; 一、技术原理 1. 深度学习方法 核心逻辑&#xff1a;基于神经网络&#xff08;如卷积神经网络 CNN&#xff09;构建…

Go语言中的数据类型转换

Go 语言中只有强制类型转换&#xff0c;没有隐式类型转换。 1. 数值类型之间的相互转换 1.1. 整型和整型之间的转换 package main import "fmt"func main() {var a int8 20var b int16 40fmt.Println(int16(a) b)// 60 }1.2. 浮点型和浮点型之间的转换 packag…

行为型:中介者模式

目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 5、注意事项 1、核心思想 目的&#xff1a;通过引入一个中介对象来封装一组对象之间的交互&#xff0c;解决对象间过度耦合、频繁交互的问题。不管是对象引用维护还是消息的转发&am…

node_modules\node-sass: Command failed.报错了

node_modules\node-sass: Command failed.错误解决 第一步&#xff1a;删掉:目录中划红线的配置文件 删掉项目中的node_modules第二步&#xff1a;用admin权限执行&#xff0c;重新配置npm和yarn npm config set registry https://registry.npm.taobao.org --global npm con…

STM32 ADC工作原理与配置详解

文章目录 ADCADC简介逐次逼近型ADCADC框图ADC框图的工作流程&#xff08;以规则组为例&#xff09;1. 输入通道选择与信号接入2. 触发转换&#xff1a;软件或硬件触发3. 采样保持与量化编码4. 转换结果处理与存储5. 状态标志与中断6. 参考电压与时钟驱动7. 辅助功能&#xff1a…

1、Pytorch介绍与安装

1、Pytorch介绍 PyTorch 是由 Facebook AI Research (FAIR) 团队开发并维护的一款开源深度学习框架&#xff0c;于 2016 年首次发布。它因其直观的设计、卓越的灵活性以及强大的动态计算图功能&#xff0c;迅速在学术界和工业界获得了广泛认可&#xff0c;成为当前深度学习研究…

RedisTemplate查询不到redis中的数据问题(序列化)

RedisTemplate查询不到redis中的数据问题(序列化) 一.问题描述 存入Redis中的值取出来却为null,问题根本原因就是RedisTemplate和StringRedisTemplate的序列化问题、代码示例&#xff1a; SpringBootTest class Redis02SpringbootApplicationTests {Autowiredprivate RedisTe…

【Net】TCP粘包与半包

文章目录 TCP粘包与半包1 背景2 粘包&#xff08;packet stick&#xff09;3 半包&#xff08;packet split&#xff09;4 为什么会出现粘包/半包&#xff1f;5 如何解决&#xff1f;6 示例7 总结 TCP粘包与半包 在网络编程中&#xff0c;粘包和半包问题是常见的 TCP 协议特有…

Leetcode 3566. Partition Array into Two Equal Product Subsets

Leetcode 3566. Partition Array into Two Equal Product Subsets 1. 解题思路2. 代码实现 题目链接&#xff1a;3566. Partition Array into Two Equal Product Subsets 1. 解题思路 这一题我的实现还是比较暴力的&#xff0c;首先显而易见的&#xff0c;若要满足题目要求&…

QT中更新或添加组件时出现“”qt操作至少需要一个处于启用状态的有效资料档案库“解决方法”

在MaintenanceTool.exe中点击下一步 第一个&#xff1a; 第二个&#xff1a; 第三个&#xff1a; 以上任意一个放入资料库中

52. N-Queens II

题目描述 52. N-Queens II 回溯法 这道题与第51题是一样的。51. N-Queens-CSDN博客 class Solution {int columns; //从低位到高位起算&#xff0c;第i位为0表示棋盘第i列可以放置皇后&#xff0c;第i位为1表示棋盘第i列不能放置皇后//边长为n的棋盘分别有2n-1条正斜线和反…

解锁AI智能Agent的“风格基因”

从“黑箱”到“智能Agent”:LangChain的架构哲学革新 在LangChain出现之前,开发者直接调用LLM API的方式,充满了“黑箱”操作的挑战: 紧耦合的业务逻辑与模型调用: 所有的业务逻辑、API调用、记忆管理、错误处理等都可能混杂在同一个代码块中。这导致代码脆弱、难以测试,…

大数据运维过程中常见的一些操作

大数据运维是确保大数据系统稳定运行、高效处理数据的关键环节。以下是大数据运维过程中常见的一些操作和任务: 1. 集群部署与配置 基础设施搭建:部署服务器、网络设备、存储系统,配置虚拟化环境(如 Docker、Kubernetes)。分布式系统安装:安装 Hadoop、Spark、Hive、Kaf…