关于校准 ARM 开发板时间的步骤和常见问题:我应该是RTC电池没电了才导致我设置了重启开发板又变回去2025年的时间

发布于:2025-07-22 ⋅ 阅读:(13) ⋅ 点赞:(0)

1、在控制台中输入以下命令,设置当前时间:

date -s "2025-07-21 19:05:00"

2、在控制台中输入以下命令,将当前时间写入硬件时钟:

hwclock -w

3、重启开发板,让系统读取硬件时钟中的时间:

reboot

4、在控制台中输入以下命令,查看当前时间是否正确:

date

如果时间正确,说明校准成功。如果时间不正确,可以重复以上步骤进行校准。


开发板重启后时间变回 2015 年,通常是以下几类原因导致,可按对应思路排查解决:

一、硬件层面

  1. RTC 电池没电或接触不良

    • 很多开发板依赖纽扣电池为 RTC(实时时钟)供电,若电池电量耗尽、松动或未安装,系统重启后无法从 RTC 获取正确时间,会回到默认初始值(常为 2015 等出厂测试时间)。
    • 解决:检查开发板 RTC 电池,重新安装 / 更换有电的纽扣电池(如 CR2032 型号),确保接触良好。
  2. RTC 硬件或驱动问题

    • 开发板 RTC 模块本身损坏,或 Linux 系统中 RTC 驱动未正确加载、配置,会导致无法正常读写硬件时钟。
    • 解决
      • 查看系统日志(dmesg 命令),搜索 “RTC” 相关关键词,确认驱动是否加载成功(如显示 rtc-x 设备注册成功)。
      • 若驱动有问题,重新编译内核时确保勾选对应 RTC 驱动(在 Device Drivers -> Real Time Clock 菜单);或联系开发板厂商获取正确驱动。

二、软件配置层面

  1. 系统未正确读取 RTC 时间

    • 部分嵌入式系统需手动配置时区、启用 RTC 同步,若未设置,系统可能优先用默认时间而非 RTC 时间。
    • 解决
      • 设置系统时区(以设置上海时区为例):

        bash

        # 创建/修改时区链接(不同系统路径可能不同,常见 /etc/localtime 或 /usr/share/zoneinfo)
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime  
        # 同步硬件时钟到系统(确保硬件时钟本身已校准)
        hwclock -s  
        
      • 检查 /etc/rc.local 等开机脚本,确认是否有覆盖时间的命令,若有需删除或修改。
  2. 文件系统为只读模式

    • 若开发板文件系统挂载为只读(如某些嵌入式系统为保护存储,默认只读),hwclock -w 可能无法将时间写入硬件时钟(因无法修改 RTC 设备节点或配置文件)。
    • 解决
      • 重新挂载文件系统为可读写:

        bash

        mount -o remount,rw /  
        
      • 执行 hwclock -w 后,再改回只读(可选,部分场景需保持只读):

        bash

        mount -o remount,ro /  
        

三、其他特殊情况

  1. 系统镜像或环境变量问题

    • 开发板使用的系统镜像本身有时间相关 Bug,或某些环境变量(如 TZ)被错误设置,影响时间显示。
    • 解决
      • 检查环境变量 TZecho $TZ,若异常(如为空或错误时区),重新设置:

        bash

        export TZ=Asia/Shanghai  
        
      • 尝试更换官方稳定版系统镜像,重新烧录验证。
  2. NTP 自动同步干扰(若开启)

    • 若系统开启了 NTP(网络时间同步)服务,但未正确联网,NTP 可能因同步失败将时间重置为错误值。
    • 解决
      • 关闭 NTP 服务(如 systemctl stop ntpd 或删除自动启动配置),手动校准时间后再测试;
      • 若需 NTP,确保开发板联网正常,且 NTP 服务器可访问(替换为国内服务器如 ntp.aliyun.com)。

按上述方向逐步排查,一般能定位到时间重置的根源。重点先检查 RTC 电池、驱动,再确认软件配置和文件系统挂载模式 。


网站公告

今日签到

点亮在社区的每一天
去签到