1、硬件与软件
本次测试的硬件为RK3568芯片,操作系统为ubuntu 20.04。
2、RTC与系统时间
先说结果,如果RTC驱动不可用或者RTC内部存储的时间非法, 那么操作系统会存储上一次有效的时间,当再次上电时,date命令会使用存储的时间为起始,向后计时。如果没有RTC驱动,操作系统能联网同步时间,每次上电都会自动同步网络时间到系统时间,date读取到的就是正确的北京时间。
下面是一些测试记录,在操作系统不联网的情况下进行重复上电操作,RTC在断电后不会维持供电,并读取系统时间。
RTC不带电容多次上电测试系统时间
1、上电eiota@firefly:~$ date
Tue 25 Jul 2023 04:18:18 PM CSTeiota@firefly:~$ sudo hwclock -r
[sudo] password for eiota:
2023-07-25 08:01:52.750005+08:002、Last login: Tue Jul 25 16:18:04 2023 from 10.10.26.92
eiota@firefly:~$ date
Tue 25 Jul 2023 04:18:29 PM CST
eiota@firefly:~$3、eiota@firefly:~$ date
Tue 25 Jul 2023 04:22:39 PM CST
eiota@firefly:~$ sudo hwclock -r
[sudo] password for eiota:
2023-07-25 08:05:41.252411+08:004、
Last login: Tue Jul 25 16:22:33 2023 from 10.10.26.92
eiota@firefly:~$ date
Tue 25 Jul 2023 04:17:53 PM CST
eiota@firefly:~$ sudo hwclock -r
[sudo] password for eiota:
2023-07-25 08:00:43.260777+08:00
eiota@firefly:~$5、联网同步过一次时间后,上电启动时间变成17:08了,说明linux系统会保存一个上一次的时间
Last login: Tue Jul 25 17:08:02 2023 from 10.10.26.92
eiota@firefly:~$ date
Tue 25 Jul 2023 05:07:53 PM CST
eiota@firefly:~$ date
Tue 25 Jul 2023 05:07:55 PM CST
eiota@firefly:~$ sudo hwclock -r
[sudo] password for eiota:
2023-07-25 08:00:58.126505+08:00
eiota@firefly:~$ date
Tue 25 Jul 2023 05:08:08 PM CST6、Last login: Tue Jul 25 17:07:51 2023 from 10.10.26.92
dateeiota@firefly:~$ date
Tue 25 Jul 2023 05:07:43 PM CST7、eiota@firefly:~$ date
Tue 25 Jul 2023 05:30:26 PM CST
eiota@firefly:~$
eiota@firefly:~$ sudo hwclock -r
[sudo] password for eiota:
2023-07-25 08:00:44.516689+08:00
eiota@firefly:~$
对于一个新烧写的系统,由于可能没有同步过时间,操作系统第一次启动时,RTC内部读取到错误的时间,并且没有存储的时间,执行date命令会无法读取到时间,这时启动的应用程序中如果使用时间,程序运行就会报错。