README.md 1.7 KB

Clock Time Subsystem

The clock_time subsystem provides a unified time base and event scheduling for RT-Thread. It separates timekeeping (a monotonic counter) from event delivery (a programmable timer interrupt) so platforms can combine different hardware sources while the kernel sees consistent behavior.

Design Principles

  • Monotonic time: time readings never go backward.
  • Separation of roles: a clock source provides a counter, a clock event triggers deadlines.
  • Scaled integer conversion: counters are converted to nanoseconds with a resolution scale factor, avoiding floating point.
  • Graceful fallback: if a hardware event is unavailable, software timers keep the system functional.

Building Blocks

  • Clock source: provides a stable counter and its frequency.
  • Clock event: can be programmed to fire at the next deadline.
  • Clock timer adapter: exposes a general timer peripheral as a clock source or event device.
  • Clock hrtimer: software scheduler that orders high-resolution timeouts and programs the next event.
  • Clock boottime helpers: translate the monotonic counter into common time formats for use by higher layers.

Time Flow

  • Read path: counter -> scaled resolution -> nanoseconds.
  • Timeout path: hrtimer queue -> next expiry -> program event -> interrupt -> dispatch callbacks.

BSP Integration Guidance

  • Provide a stable counter or a programmable timer. One device can serve both roles.
  • Select a default source and event device to enable accurate timekeeping and efficient scheduling.
  • Keep ISRs minimal; the core handles conversion and scheduling.
  • POSIX time APIs are layered on top of this subsystem and reuse its monotonic base.