Zephyr内核——应用模块——时间实用程序

Zephyr内核使用滴答计数器作为正常运行时间,但应用程序需要将其与外部时间尺度如UTC或当地时间同步。时间实用程序API支持时间表示转换、时间尺度同步。转换涉及秒和日历时间的相互转换,同步处理不同时间尺度的速率和偏移误差。Zephyr的时间支持概念包括单调、连续和不连续的时间尺度,如TAI、UTC和POSIX时间。API提供了与外部源如GPS或蓝牙网格时间对齐的功能。
摘要由CSDN通过智能技术生成

时间实用程序

概述

Zephyr的正常运行时间是基于一个滴答计数器。使用默认的CONFIG_TICKLESS_KERNEL,这个计数器在系统启动时以名义上恒定的速率从零前进。类似于这个计数器的POSIX类似于CLOCK_MONOTONIC,或者在Linux中是CLOCK_MONOTONIC_RAWk_uptime_get()提供了这个时间的一个毫秒表示。

应用程序通常需要将Zephyr的内部时间与日常生活中使用的外部时间尺度联系起来,如当地时间或协调的世界时。这些系统以不同的方式解释时间,并可能由于闰秒和夏令时等本地时间偏移而产生不连续性。

由于这些不连续性,以及循环计数器下面的时钟的显著不准确性,从Zephyr时钟估计的时间和“实际”民用时间尺度中的实际时间之间的偏移不是恒定的,并且在Zephyr应用程序的运行时间中会有很大的变化。

该实用程序API支持的时间为:

  • 时间表示之间的转换
  • 同步和对齐时间尺度

有关支持这些功能的术语和概念,请参见Zephyr中时间支持的概念。

表示转换

时间尺度实例可以用多种方式表示,包括:

一个时代以来的几秒钟。这种形式中的时间的POSIX表示包括time_t和结构体时间pec,它们通常被解释为“UNIX时间”的表示。

日历时间分别为一年、月、日、小时、分钟和秒。这种形式中的时间的POSIX表示包括结构体tm。

请记住,这些只是时间表示,必须相对于一个时间尺度进行解释,这个时间尺度可能是局部时间、UTC或其他一些连续或不连续的尺度。

在标准的C库例程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值