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

关于如何同步开发板的时间和现在一样:

重启后开发板时间再次回到 2015 年,说明硬件时钟(RTC)未正确保存时间系统未从 RTC 读取时间,问题可能出在以下几个方面,按步骤排查修复即可:

一、确认硬件时钟(RTC)是否正常工作

  1. 查看当前硬件时钟时间
    输入命令 hwclock 或 hwclock --show,观察输出:
    • 如果显示的时间也是 2015年1月1日,说明之前的 hwclock -w 命令未成功将系统时间写入 RTC,或 RTC 硬件故障(如无电池、电池没电)。
    • 如果显示的是你之前设置的正确时间(2025-07-19 17:36),则问题是系统开机时未从 RTC 读取时间。

二、针对性解决:

情况 1:硬件时钟(RTC)未保存时间(hwclock 显示错误)
  • 重新写入 RTC 并验证

    1. 先重新设置系统时间:

      bash

      date -s "2025-07-19 17:36:00"  # 设置正确系统时间
      
    2. 强制写入硬件时钟(加 -f 指定 RTC 设备,部分开发板需要):

      bash

      hwclock -w -f /dev/rtc0  # 多数开发板RTC设备为/dev/rtc0,若不存在可尝试/dev/rtc
      
    3. 立即查看 RTC 是否保存成功:

      bash

      hwclock -f /dev/rtc0  # 若显示2025-07-19 17:36,则写入成功
      
  • 检查 RTC 硬件(如电池)
    如果多次写入后,hwclock 仍显示错误时间,可能是开发板的 RTC 备用电池没电或接触不良,需要物理检查硬件(部分开发板需要外接纽扣电池维持 RTC 供电)。

情况 2:RTC 时间正确,但系统开机不读取(hwclock 显示正确,date 错误)

系统默认可能未配置 “开机时从 RTC 同步时间”,需要手动添加启动脚本:

  1. 编辑系统启动初始化文件(不同开发板路径可能不同,常见路径如下):

    bash

    vi /etc/init.d/rcS  # 或 /etc/rc.local、/etc/profile
    
  2. 在文件末尾添加以下命令(同步 RTC 时间到系统时间):

    bash

    hwclock -s -f /dev/rtc0  # -s 表示从RTC读取时间到系统
    
  3. 保存文件并重启开发板,验证时间是否正确:

    bash

    reboot  # 重启后输入 date 查看是否为正确时间
    

三、终极解决方案:若 RTC 硬件故障,用脚本强制同步(临时替代)

如果 RTC 彻底无法使用,可通过开机脚本强制设置时间(适合临时调试,断电后仍会丢失):

  1. 编辑启动文件(如 /etc/init.d/rcS),添加:

    bash

    # 每次开机强制设置为固定时间(需定期更新脚本)
    date -s "2025-07-19 17:36:00"
    
  2. 保存后重启,时间会被强制设置为脚本中的值。

按以上步骤操作后,重启开发板再次输入 date,即可确认时间是否保持正确。核心是确保 “RTC 能保存时间” 且 “系统开机时读取 RTC”。


目前的状态是:硬件时钟(RTC)时间正确,但系统时区仍为 UTC(导致显示时间与北京时间相差 8 小时)。具体表现为:

  • hwclock -f /dev/rtc0 显示正确时间(2025-07-19 17:43),说明 RTC 保存正常;
  • date 显示时区为 UTC,而我们需要的是 CST(中国标准时间,UTC+8)。

解决时区问题的关键步骤(确保永久生效):

1. 手动创建 / 替换时区配置文件

如果 /usr/share/zoneinfo/Asia/Shanghai 存在:

bash

# 强制将时区设置为上海(覆盖原有时区配置)
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

如果上述文件不存在(部分精简系统可能缺少),直接写入时区环境变量到启动脚本:

bash

# 编辑启动文件(确保开机时加载时区)
echo 'export TZ="Asia/Shanghai"' >> /etc/profile
# 立即生效当前终端的时区
source /etc/profile
2. 验证时区是否生效

执行 date 命令,若输出包含 CST 则成功:

bash

date
# 正确结果示例:Sat Jul 19 17:43:13 CST 2025 (时区从UTC变为CST)
3. 重启后再次确认

重启开发板:

bash

reboot

http://www.dtcms.com/a/288320.html

相关文章:

  • MyBatis分页神器PageHelper深度解析
  • 【深度学习-Day 38】破解深度网络退化之谜:残差网络(ResNet)核心原理与实战
  • openmv小车追小球
  • 如何设计一个软件项目管理系统:架构设计合集(六)
  • QGIS制作的仪表盘工程
  • Redisson RLocalCachedMap 核心参数详解
  • Python工厂方法模式详解:从理论到实战
  • Python绘制数据(三)
  • 创意 C++ 文本冒险战斗游戏代码
  • 2025年水安备考:水利水电安全员C类考试题
  • 高效检测数据突变的MDAM算法详解
  • 模电基础-电阻和功率
  • 网络通信之TCP协议
  • 深入解析HDFS读取流程:短路读优化、零拷贝技术与DFSClient本地缓存策略
  • 【ComfyUI学习笔记02】工作区的整理与注释办法 | 2个节点包推荐
  • 【Linux】如何理解 “一切皆文件”
  • 《一行注解解决重复提交:Spring Boot 接口幂等实战》
  • [硬件电路-40]:从物理世界到数字软件,信号处理的共通性
  • java基础(day11)
  • 突破 MySQL 性能瓶颈:死锁分析 + 慢查询诊断 + 海量数据比对实战
  • Redis布隆过滤器的学习(六)
  • 财务数字化——解读财务指标及财务分析的基本步骤与方法【附全文阅读】
  • 基于LSTM的时间序列到时间序列的回归模拟
  • 06-人机共生:Prompt之外的思考
  • Linux Shell 命令 + 项目场景
  • windows11下基于docker单机部署ceph集群
  • 同步队列阻塞器AQS的执行流程,案例图
  • 张量交换维度(转置),其实是交换了元素的排列顺序
  • lvs集群技术(Linux virual server)
  • MinIO深度解析:从核心特性到Spring Boot实战集成