This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM623:未来的 AM623 RTC 时间设置将立即保存、但不会立即保存过去的设置

Guru**** 2335080 points
Other Parts Discussed in Thread: AM623
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1514292/am623-am623-rtc-time-settings-for-the-future-will-be-saved-immediately-but-for-the-past-will-not-be-saved-immediately

器件型号:AM623

工具/软件:

您好、

我在 AM623上使用 RTC 时遇到问题。
电路板的时间为2025年、如果我将时间点设置为2026、然后断开电源、则再次上电后时间将更新。

~# date
Thu May 15 16:00:04 UTC 2025
~# hwclock
2025-08-08 08:20:27.177775+00:00
~# date -s "2026-6-6 6:6:6"
Sat Jun 6 06:06:06 UTC 2026
~# hwclock -w
~# hwclock
2026-06-06 06:06:13.808466+00:00

但是、如果我将时间设置为2024、则 RTC 的时间将在断电和接通后恢复到2025年的时间。

~# date -s "2024-4-4 4:4:4"
Thu Apr 4 04:04:04 UTC 2024
~# hwclock -w
~# hwclock
2024-04-04 04:04:12.374590+00:00
~# date
Thu Apr 4 04:04:17 UTC 2024

在这种设置为过去时间的情况下、时间通常只在重新引导或关机后才会设置。

~# date
Fri Aug  8 08:09:02 UTC 2025
~# date -s "2023-3-3 3:3:3"
Fri Mar  3 03:03:03 UTC 2023
~# hwclock -w
~# hwclock
2023-03-03 03:03:10.332103+00:00
~# date
Fri Mar  3 03:03:12 UTC 2023
~# poweroff

我们使用的芯片是 RTC-pcf5563。 我看到有人说、出于安全或系统一致性原因、某些嵌入式平台的 RTC 驱动程序会限制重新调用的时间、除非它处于关闭过程中(例如关机、重新启动)。

这是真的吗? 是否有方法可以立即写入?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    看起来  RTC-pcf8563由 NXP 制造。 在 TI 方面、我们只需提供低级 I2C 驱动程序、用于通过 I2C 与 RTC 交互。 与外设交互的实际驱动程序来自 NXP。 如果您对该 NXP 外设或 NXP 驱动程序有任何疑问、请发送电子邮件至 NXP。

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Nick

    RTC 驱动程序层没有问题、似乎是由系统初始化引起的。

    下面是我的测试日志。 开始时、系统时间是2015-1-5。 我将其设置为2008-8-8、并且显示设置成功。
    然后我关闭电源、然后再次打开电源。
    但是、系统启动后、显示的时间仍然是2015-1-5、但 dmesg 中 RTC 驱动程序读取的时间是2008-8-8。
    我不知道系统启动前更改了时间配置的内容。 在设置日期之前、它仍然可以记住日期值。
    你对此有何建议?

    ~# date
    Mon Jan  5 01:07:36 UTC 2015
    ~# date -s "2008-8-8 8:8:8"
    Fri Aug  8 08:08:08 UTC 2008
    ~# hwclock -w --update-drift
    ~# sync
    ~# date
    Fri Aug  8 08:08:12 UTC 2008
    ~# hwclock
    2008-08-08 08:08:16.335551+00:00
    ~#
    
    Power off and restart
    
    ~# date
    Mon Jan  5 01:06:12 UTC 2015
    ~# hwclock
    2015-01-05 01:06:32.227769+00:00
    ~# dmesg | grep rtc
    [    0.986352] rtc rtc0: invalid alarm value: 2008-08-08T32:58:00
    [    0.992483] rtc-pcf8563 0-0051: registered as rtc0
    [    0.998561] rtc-pcf8563 0-0051: setting system clock to 2008-08-08T08:08:43 UTC (1218182923)
    ~#

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Stephen、

    这实际上像是一个通用的" Linux 时钟如何在任何 Linux 处理器上工作"问题、而不是一个" TI 特定代码或硬件如何工作"问题。 温馨提示、我们不能在这些论坛上支持有关如何使用 Linux 的一般性问题、而只能回答特别有关 TI 软件或 TI 硬件的问题。

    首先、您应验证"date"之前正在使用的时钟源。 您的系统使用的时钟源可能与外部 RTC 不同。 然后、您可以选择要使用的时钟源。

    由于这是一个"通用 Linux"问题、我在这里无法提供太多帮助。 我建议在网络上搜索类似这样的线程:
    https://unix.stackexchange.com/questions/662571/how-can-i-verify-the-clocksource-in-my-system

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nick、

    谢谢、问题已经解决。 这是由时间戳文件引起的。