库
最新资讯
FreeRTOS 路线图和代码贡献流程。
FreeRTOS 路线图和代码贡献流程现已在此处和 GitHub 上发布。请参阅
博客文章 。
使用 FreeRTOS 在 TSN 上运行 OPC-UA。
一个开发项目,旨在让应用程序能够一致地访问硬件 TSN 功能。请参阅
博客文章 。
FreeRTOS-Plus-TCP 现具有统一的 IPv4 和 IPv6 功能,支持多接口。
为基于 FreeRTOS 的固件实现防砖化 MCU FOTA:
Microvisor IoT 方法。请参阅
博客文章 。
宣布停止支持 FreeRTOS 202012 LTS。
您可以将项目迁移到 FreeRTOS 202210.01 LTS 或订阅 FreeRTOS 延长维护计划。请参阅
博客文章 。
This site requires JavaScript
to be enabled.
Click here to
view a static menu.
coreSNTP 库术语
轮询间隔
SNTP 客户端可定期同步系统时间与时间服务器,以确保系统时钟
的偏差不会超出应用程序所允许的阈值。轮询间隔就是与时间服务器保持同步
的连续尝试之间的时间间隔。
时钟偏移
收到服务器响应时,CoreSNTP 库会计算出系统时间
与服务器时间之间的偏移值。此计算值被称为时钟偏移值,它可以是正值(系统晚于服务器时间),
也可以是负值(系统早于服务器时间)
。时钟偏移值是 coreSNTP 库在收到网络上的服务器响应时计算出来的
。此值用于校正在网络上发送和接收 SNTP 数据包时出现的时间延迟
。
coreSNTP 库使用下方数学公式计算时钟偏移值:
T2 T3
--------------------------------- <----- *SNTP/NTP server*
/\ \
/ \
Request* / \ *Response*
/ \/
--------------------------------- <----- *SNTP client*
T1 T4
The four most recent timestamps, T1 through T4, are used to compute
the clock offset of the SNTP client relative to the server where:
T1 = Client Request Transmit Time
T2 = Server Receive Time (of client request)
T3 = Server Response Transmit Time
T4 = Client Receive Time (of server response)
Clock Offset = T(NTP/SNTP server) - T(SNTP client)
= [( T2 - T1 ) + ( T3 - T4 )]
---------------------------
2
Kiss-o'-Death 数据包
当 SNTP/NTP 服务器拒绝来自 SNTP/NTP 客户端的时间请求时,它发送的拒绝响应
就叫做 "Kiss-o'-Death" 数据包。服务器可能会在响应数据包中发送 4 个字母的 “kiss 代码”,
给出拒绝理由。CoreSNTP 库的序列化器/反序列化器 API 向应用程序提供
它从 SNTP 服务器拒绝响应数据包中解析出来的 “kiss 代码”。通常情况下,
客户端 API 层会通过避免重复使用此服务器,
而是转到您已配置的库服务器列表中的下一个服务器来处理这些服务器拒绝响应。因此,我们建议
您在应用程序中配置多个时间服务器以获得弹性;
从而在主服务器出现意外服务中断时,可使用备份服务器。
NTP 时代和 NTP 时代纪元
NTP 时代由可用 32 位无符号整数表示的秒数组成(~ 136 年)。
NTP 时代的 32 位限制是 NTP 时间戳的 “秒” 部分的 32 位宽度造成的。
NTP 时代纪元是指此时代的开始时间或基准时间。例如, NTP 时代 0 代表
1900 年 1 月 1 日 0 时 0 分 0 秒到 2036 年 2 月 7 日 6 时 14 分 27 秒 这段时间。1900 年 1 月 1 日 0 时 0 分 0 秒就是
NTP 时代 0 的纪元时间。
下列 NTP 时代表摘自 NTPv4 的建议规范。CoreSNTP 库为
NTP 0 和 NTP 1 时代内的时间戳提供支持。
+-------------+------------+-----+---------------+------------------+
| Date | MJD | NTP | NTP Timestamp | Epoch |
| | | Era | Era Offset | |
+-------------+------------+-----+---------------+------------------+
| 1 Jan -4712 | -2,400,001 | -49 | 1,795,583,104 | 1st day Julian |
| 1 Jan -1 | -679,306 | -14 | 139,775,744 | 2 BCE |
| 1 Jan 0 | -678,491 | -14 | 171,311,744 | 1 BCE |
| 1 Jan 1 | -678,575 | -14 | 202,939,144 | 1 CE |
| 4 Oct 1582 | -100,851 | -3 | 2,873,647,488 | Last day Julian |
| 15 Oct 1582 | -100,840 | -3 | 2,874,597,888 | First day |
| | | | | Gregorian |
| 31 Dec 1899 | 15019 | -1 | 4,294,880,896 | Last day NTP Era |
| | | | | -1 |
| 1 Jan 1900 | 15020 | 0 | 0 | First day NTP |
| | | | | Era 0 |
| 1 Jan 1970 | 40,587 | 0 | 2,208,988,800 | First day UNIX |
| 1 Jan 1972 | 41,317 | 0 | 2,272,060,800 | First day UTC |
| 31 Dec 1999 | 51,543 | 0 | 3,155,587,200 | Last day 20th |
| | | | | Century |
| 8 Feb 2036 | 64,731 | 1 | 63,104 | First day NTP |
| | | | | Era 1 |
+-------------+------------+-----+---------------+------------------+
Figure 4: Interesting Historic NTP Dates
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.