1、在控制台中输入以下命令,设置当前时间:
date -s "2025-07-21 19:05:00"
2、在控制台中输入以下命令,将当前时间写入硬件时钟:
hwclock -w
3、重启开发板,让系统读取硬件时钟中的时间:
reboot
4、在控制台中输入以下命令,查看当前时间是否正确:
date
如果时间正确,说明校准成功。如果时间不正确,可以重复以上步骤进行校准。
开发板重启后时间变回 2015 年,通常是以下几类原因导致,可按对应思路排查解决:
一、硬件层面
RTC 电池没电或接触不良
- 很多开发板依赖纽扣电池为 RTC(实时时钟)供电,若电池电量耗尽、松动或未安装,系统重启后无法从 RTC 获取正确时间,会回到默认初始值(常为 2015 等出厂测试时间)。
- 解决:检查开发板 RTC 电池,重新安装 / 更换有电的纽扣电池(如 CR2032 型号),确保接触良好。
RTC 硬件或驱动问题
- 开发板 RTC 模块本身损坏,或 Linux 系统中 RTC 驱动未正确加载、配置,会导致无法正常读写硬件时钟。
- 解决:
- 查看系统日志(
dmesg
命令),搜索 “RTC” 相关关键词,确认驱动是否加载成功(如显示rtc-x
设备注册成功)。 - 若驱动有问题,重新编译内核时确保勾选对应 RTC 驱动(在
Device Drivers -> Real Time Clock
菜单);或联系开发板厂商获取正确驱动。
- 查看系统日志(
二、软件配置层面
系统未正确读取 RTC 时间
- 部分嵌入式系统需手动配置时区、启用 RTC 同步,若未设置,系统可能优先用默认时间而非 RTC 时间。
- 解决:
- 设置系统时区(以设置上海时区为例):
bash
# 创建/修改时区链接(不同系统路径可能不同,常见 /etc/localtime 或 /usr/share/zoneinfo) ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 同步硬件时钟到系统(确保硬件时钟本身已校准) hwclock -s
- 检查
/etc/rc.local
等开机脚本,确认是否有覆盖时间的命令,若有需删除或修改。
- 设置系统时区(以设置上海时区为例):
文件系统为只读模式
- 若开发板文件系统挂载为只读(如某些嵌入式系统为保护存储,默认只读),
hwclock -w
可能无法将时间写入硬件时钟(因无法修改 RTC 设备节点或配置文件)。 - 解决:
- 重新挂载文件系统为可读写:
bash
mount -o remount,rw /
- 执行
hwclock -w
后,再改回只读(可选,部分场景需保持只读):bash
mount -o remount,ro /
- 重新挂载文件系统为可读写:
- 若开发板文件系统挂载为只读(如某些嵌入式系统为保护存储,默认只读),
三、其他特殊情况
系统镜像或环境变量问题
- 开发板使用的系统镜像本身有时间相关 Bug,或某些环境变量(如
TZ
)被错误设置,影响时间显示。 - 解决:
- 检查环境变量
TZ
:echo $TZ
,若异常(如为空或错误时区),重新设置:bash
export TZ=Asia/Shanghai
- 尝试更换官方稳定版系统镜像,重新烧录验证。
- 检查环境变量
- 开发板使用的系统镜像本身有时间相关 Bug,或某些环境变量(如
NTP 自动同步干扰(若开启)
- 若系统开启了 NTP(网络时间同步)服务,但未正确联网,NTP 可能因同步失败将时间重置为错误值。
- 解决:
- 关闭 NTP 服务(如
systemctl stop ntpd
或删除自动启动配置),手动校准时间后再测试; - 若需 NTP,确保开发板联网正常,且 NTP 服务器可访问(替换为国内服务器如
ntp.aliyun.com
)。
- 关闭 NTP 服务(如
按上述方向逐步排查,一般能定位到时间重置的根源。重点先检查 RTC 电池、驱动,再确认软件配置和文件系统挂载模式 。