【问题标题】:Is it possible to write time to RTC chip using clock_settime()是否可以使用 clock_settime() 将时间写入 RTC 芯片
【发布时间】:2013-03-29 10:22:35
【问题描述】:

/dev/rtc 上的 ioctl RTC_SET_TIME 可用于设置 RTC 芯片的时间和日期。但是 /dev/rtc 只允许一个进程打开它。

所以我打算继续使用不需要打开 /dev/rtc 设备的 clock_settime()。但我不清楚它是否将日期和时间设置为 RTC chip

根据手册页,clock_settime() API 支持以下时钟。哪个写入 RTC 芯片(如果支持)?

CLOCK_REALTIME
    System-wide realtime clock. Setting this clock requires appropriate privileges. 
CLOCK_MONOTONIC
    Clock that cannot be set and represents monotonic time since some unspecified starting point. 
CLOCK_PROCESS_CPUTIME_ID
    High-resolution per-process timer from the CPU. 
CLOCK_THREAD_CPUTIME_ID
    Thread-specific CPU-time clock. 

【问题讨论】:

  • 不,此功能不用于设置任何(硬件)时钟。它旨在供用户空间程序测量时间。如果您想要一个时钟(“挂钟”),请安装 NTP,它会处理您系统中的真实时间。

标签: c linux time clock


【解决方案1】:

很遗憾,不,clock_settime() 不会更新实时时钟 (RTC)。

我看到人们在调用clock_settime() 强制RTC 更新后使用system("rtc -s hw");

【讨论】:

    【解决方案2】:

    简答:

    clock_settime() 是否写入 RTC 未指定,因此特定于实现


    长答案:

    调用clock_settime(CLOCK_REALTIME, ...) 保证设置操作系统的系统时钟,这是内核中的软件时钟。仅此而已。

    • 操作系统可能会在关机时将系统时钟写入 RTC。 (vxWorks)
    • 操作系统可能会定期将系统时钟写入 RTC,例如每 11 分钟一次。 (possible Linux config)
    • 操作系统可以实现 RTC 漂移补偿。设置 RTC 可能会产生意想不到的结果。 (Linux with adtimex)

    底线:在设置 RTC 之前,了解事情是如何在您的平台上实现的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多