时间实用程序
概述
Zephyr的正常运行时间是基于一个滴答计数器。使用默认的CONFIG_TICKLESS_KERNEL
,这个计数器在系统启动时以名义上恒定的速率从零前进。类似于这个计数器的POSIX类似于CLOCK_MONOTONIC
,或者在Linux中是CLOCK_MONOTONIC_RAW
。k_uptime_get()
提供了这个时间的一个毫秒表示。
应用程序通常需要将Zephyr的内部时间与日常生活中使用的外部时间尺度联系起来,如当地时间或协调的世界时。这些系统以不同的方式解释时间,并可能由于闰秒和夏令时等本地时间偏移而产生不连续性。
由于这些不连续性,以及循环计数器下面的时钟的显著不准确性,从Zephyr时钟估计的时间和“实际”民用时间尺度中的实际时间之间的偏移不是恒定的,并且在Zephyr应用程序的运行时间中会有很大的变化。
该实用程序API支持的时间为:
- 时间表示之间的转换
- 同步和对齐时间尺度
有关支持这些功能的术语和概念,请参见Zephyr中时间支持的概念。
表示转换
时间尺度实例可以用多种方式表示,包括:
一个时代以来的几秒钟。这种形式中的时间的POSIX表示包括time_t
和结构体时间pec,它们通常被解释为“UNIX时间”的表示。
日历时间分别为一年、月、日、小时、分钟和秒。这种形式中的时间的POSIX表示包括结构体tm。
请记住,这些只是时间表示,必须相对于一个时间尺度进行解释,这个时间尺度可能是局部时间、UTC或其他一些连续或不连续的尺度。
在标准的C库例程