嵌入式设备时间同步(校时)

news2025/4/22 9:10:40

文章目录

  • 二、校时方案
  • 三、chrony 介绍和使用
    • 3.1 chrony 介绍
    • 3.2 chrony 使用示例
    • 3.3 chrony.conf
    • 3.4 chronyd
    • 3.5 chronyc
  • 四、gpsd + chrony + pps 介绍和使用
    • 4.1 gpsd 介绍
      • 4.1.3 gpsd 交叉编译
    • 4.2 pps 和 pps-tools 介绍和使用
  • x.参考资料
  • 五、比较两个设备时间差
    • 5.1 date 命令
    • 5.2 ntpdate命令
      • 5.2.1 使用示例
      • 5.2.2 ntpdate 交叉编译
      • 5.2.3 chronyd 命令
  • 帮助

二、校时方案

ntp校时

三、chrony 介绍和使用

3.1 chrony 介绍

  • chrony 官网
  • v2.4 chrony.conf
  • v2.4 chronyd
  • v2.4 chronyc
  • FAQ 常见问题

chrony是网络时间协议(NTP)的通用实现。它可以将系统时钟与NTP服务器、参考时钟(如GPS接收器)以及使用手表和键盘的手动输入同步。它还可以作为NTPv4(RFC 5905)服务器和对等端操作,为网络中的其他计算机提供时间服务。

通过互联网同步的两台机器之间的典型精度在几毫秒内;在局域网上,精度通常为几十微秒。通过硬件时间戳或硬件参考时钟,亚微秒精度可能是可能的。

chrony中包含两个程序,chronyd是一个可以在启动时启动的守护进程,chronyc是一个命令行界面程序,可以用来监视chronyd的性能,并在其运行时更改各种操作参数。

chrony支持的功能

  • NTP校时:作为ntp client向ntp server进行校时。
  • PPS(脉冲秒信号)校时:通过连接GPS接收器或其他高精度时钟设备来获取脉冲秒信号。
  • RTC(实时时钟)校时:Chrony可以通过与计算机上的实时时钟设备进行通信,将计算机的时钟与实时时钟进行同步。
  • NMEA 校时:通过与NMEA设备(如GPS接收器)通信,获取到NMEA数据,并将其用于校正计算机时钟。
  • 作为校时服务器:给其他设备校时。

注意:实际使用时根据chrony版本查阅帮助文档,这里使用的版本是chrony 2.4。

3.2 chrony 使用示例

使用步骤:

  1. 配置好chrony.conf文件
  2. 启动chronyd
  3. 选择性设置添加自启动
  4. chronyc查看状态信息

示例1:ntp 客户端

server ntp1.aliyun.com trust minpoll 2 maxpoll 4 polltarget 30
server 10.234.111.138 trust minpoll 2 maxpoll 4 polltarget 30
makestep 0.1 -1
driftfile /var/lib/chrony/drift
rtcsync

示例1:gps校时,同时作为ntp服务器端给其他设备校时

# gpsd and pps
refclock SHM 0 poll -2 refid GPS precision 1e-1 offset 0.9999 delay 0.2
refclock PPS /dev/pps0 lock NMEA refid PPS

makestep 0.1 -1
driftfile /var/lib/chrony/drift
rtcsync

# 作为校时服务器
allow all
local stratum 10

3.3 chrony.conf

示例1-faq

server ntp.local minpoll 2 maxpoll 4 polltarget 30

在NTP服务器配置中,minpollmaxpoll参数用于限制NTP客户端发送时间同步请求的频率。这两个参数控制了NTP客户端在连续的时间同步请求之间等待的最小和最大时间间隔。

minpoll参数指定了NTP客户端发送时间同步请求的最小时间间隔,单位为2的幂次方的秒。在你的配置中,minpoll的值为2,表示最小时间间隔为2的2次方,即4秒。

maxpoll参数指定了NTP客户端发送时间同步请求的最大时间间隔,单位同样为2的幂次方的秒。在你的配置中,maxpoll的值为4,表示最大时间间隔为2的4次方,即16秒。

polltarget参数表示NTP客户端向服务器发送请求的时间间隔的目标值,单位为秒。在你的配置中,polltarget的值为30,表示NTP客户端希望每30秒发送一次时间同步请求。

需要注意的是,polltarget参数是以秒为单位的,而不是2的幂次方。因此,polltarget的值并不会超过maxpoll参数的限制。在你的配置中,即使maxpoll的值为4(即16秒),polltarget的值也仍然是30秒。这样设置的目的是为了在时间同步的准确性和服务器负载之间取得一个平衡。

综上所述,NTP客户端的实际时间同步间隔取决于服务器响应和网络延迟等因素,但会受到minpollmaxpoll参数的限制。在你的配置中,NTP客户端将以30秒为目标值发送时间同步请求,但实际的时间间隔可能会在4秒到16秒之间变化。

示例2-faq

server ntp.local minpoll 0 maxpoll 0 xleave
hwtimestamp eth0

3.4 chronyd

3.5 chronyc

chronyc是一个命令行界面程序,可用于监视chronyd的性能,并在运行时更改各种操作参数。

  • chronyc tracking:跟踪命令显示有关系统时钟性能的参数。
    root@imx6qdlsabresd:/app/log#  chronyc tracking
    Reference ID    : 127.127.1.1 ()
    Stratum         : 10
    Ref time (UTC)  : Thu Sep 07 23:14:28 2023
    System time     : 14539.303710938 seconds fast of NTP time
    Last offset     : -0.271399736 seconds
    RMS offset      : 105085.718750000 seconds
    Frequency       : 499789.469 ppm fast
    Residual freq   : +0.000 ppm
    Skew            : 0.000 ppm
    Root delay      : 0.000000 seconds
    Root dispersion : 0.000001 seconds
    Update interval : 0.1 seconds
    Leap status     : Normal
    

四、gpsd + chrony + pps 介绍和使用

  • gpsd + chrony : 实现时间同步。
  • gpsd + chrony + pps : 实现更高精度的时间同步。

4.1 gpsd 介绍

4.1.3 gpsd 交叉编译

  • 交叉编译 gpsd
  • 编译依赖:pps-tools 软件包中的 timepps.h 头文件(放到对应位置)

4.2 pps 和 pps-tools 介绍和使用

  • PPS 支持需要:GPS接收器 + 硬件设计连接 + 内核配置开启 + 驱动。
  • 查看当前系统是否已支持 pps
  • ppstest查看pps信号时间值
  • 查看pps中断
  • pps配合gpsd使用(配合)

PPS是指脉冲秒信号(Pulse Per Second),它是一个精确的时间标记信号,用于精确同步计时设备。PPS通常由GPS接收器提供,以确保设备与全球卫星导航系统(GPS)的时间同步。

PPS-Tools是一个用于处理和分析PPS信号的软件工具包。它包含了一系列用于接收、分析和校准PPS信号的工具和库。使用PPS-Tools,用户可以通过计算和比较PPS信号与其他参考时间源的差异来实现高精度的时间同步。

PPS-Tools的功能包括:

  1. PPS接收器:用于接收和解码PPS信号的硬件设备。
  2. PPS校准:通过与参考时间源比较PPS信号,进行时间校准和同步。
  3. 数据记录和分析:记录和分析PPS信号的时间戳数据。
  4. 精度测量:测量PPS信号与参考时间源之间的精确度和稳定性。

PPS-Tools是一个强大的工具包,广泛用于科学研究、计时设备校准和精确时间同步等领域。它可以帮助用户实现微秒级甚至更高精度的时间同步,对于需要高精度时间标记的应用非常有用。

查看当前系统是否已支持 pps

dmesg | grep pps

在这里插入图片描述

在应用层,使用ppstest工具可查看pps信号时间值(pps信号发生时刻的系统时间点)

ppstest若没有需通过源码交叉编译得到。
在这里插入图片描述
查看pps中断:

root@imx6qdlsabresd:/app/test/debug_gpsd# cat /proc/interrupts |grep pps
 37:     258897          0          0          0  gpio-mxc   5 Edge      pps.-1
root@imx6qdlsabresd:/app/test/debug_gpsd# cat /proc/interrupts |grep pps
 37:     258899          0          0          0  gpio-mxc   5 Edge      pps.-1
root@imx6qdlsabresd:/app/test/debug_gpsd# cat /proc/interrupts |grep pps
 37:     258903          0          0          0  gpio-mxc   5 Edge      pps.-1

参考资料

  • 关于GPS的1PPS时间同步功能探索与测试
  • 关于GPS的1PPS时间同步功能探索与测试
  • 源码下载:https://packages.ubuntu.com/zh-cn/source/jammy/riscv64/pps-tools

x.参考资料

  • 一文了解自动驾驶中的时间同步
  • 嵌入式Linux时间同步 gpsd+chrony+pps
  • chrony+gpsd部署pps校时
  • chrony+gpsd部署pps校时
    CentOS 7时间和日期和时间同步

五、比较两个设备时间差

5.1 date 命令

两台设备分别通过xshll工具进行SSH连接,然后工具—发送输入到—所有会话:

# 获取系统时间纳秒
date +%Y-%m-%d' '%H:%M:%S.%N

# 获取系统时间毫秒
date +%Y-%m-%d' '%H:%M:%S.%N | cut -b 1-23

# 自动循环获取时间(有休眠、不如手动敲)
while true; do date +%Y-%m-%d' '%H:%M:%S.%N; sleep 0.1;done
  • 若性能要求高:务必确保两台设备、PC在同一个交换机下。
  • 时间误差:PC到两台设备的网络时延、IO时延。

5.2 ntpdate命令

5.2.1 使用示例

只比较和ntp 服务器的时间差,不校时:

./ntpdate -q ntp1.aliyun.com

响应:
server 120.25.115.20, stratum 2, offset 32.851291, delay 0.04848 8
Sep 14:43:24 ntpdate[15053]: step time server 120.25.115.20 offset 32.851291 sec

5.2.2 ntpdate 交叉编译

版权声明:本文为CSDN博主「钱德勒宾」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38184741/article/details/100011091

前言
板子上需要在开机时同步网络时间。

之前板子上有ntpdate工具,可以直接使用。最近突然不能用了。需要手动移植一个。

开发板:Hi3559A

编译工具链:aarch64-himix100-linux-gcc

ntp版本:ntp-4.2.8p13.tar.gz

openssl 版本:openssl-1.0.1f.tar.gz (注意,使用其他版本会报版本错误)

5.2.3 chronyd 命令

在这里插入图片描述

# 校时一次退出
chronyd -q 'pool pool.ntp.org iburst'

# 不校时,只比较时间差
chronyd -Q 'pool pool.ntp.org iburst'

在这里插入图片描述

帮助

  • Xavier + GPS/PPS + NTP时间设置
  • https://www.ntp.org/downloads/

GPSD+chrony 没有秒脉冲,两台设备校时后相差60ms(AG15的RSU和大唐的OBU)
两台AG15的RSU相差2ms
PC到设备延时呢。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1087746.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+opencv+深度学习实现二维码识别 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 pythonopencv深度学习实现二维码识别 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 该项目较为新颖&…

Vue—大文件分片上传

背景 如题,最近遇到大文件上传慢的问题,用户需要经常上传一些超过一百多M的文件,系统由于历史原因上传功能并没有做分片上传的功能,是整个文件上传,并且服务器带宽限制和NGINX对文件大小的限制等问题,所以…

亳州市的自然风光与旅游资源:欣赏安徽省中部的壮丽景色

亳州市是中国安徽省的一个地级市,位于该省的中部。 亳州市辖区包括谯城区、涡阳县、蒙城县和利辛县等地。亳州市拥有悠久的历史和丰富的文化遗产,同时也以其独特的自然风光而闻名。 首先,让我们来了解一下亳州的历史和景点。亳州的历史可以…

机器人硬件在环仿真:解决实体开发与测试挑战,提升效率与安全性

工业机器人具备出色的灵活性和运动能力,广泛应用于工业制造领域。它们可以完成装配、焊接、喷涂、搬运、加工、品质检测等任务,提高了生产效率,保证了产品质量。此外,在医疗领域也有辅助手术等特殊应用,展现了其在多个…

pdf处理工具 Enfocus PitStop Pro 2022 中文 for mac

Enfocus PitStop Pro 2022是一款专业的PDF预检和编辑软件,旨在帮助用户提高生产效率、确保印刷品质量并减少错误。以下是该软件的一些特色功能: PDF预检。PitStop Pro可以自动检测和修复常见的PDF文件问题,如缺失字体、图像分辨率低、颜色空…

在 Elasticsearch 中实现自动完成功能 2:n-gram

在第一部分中,我们讨论了使用前缀查询,这是一种自动完成的查询时间方法。 在这篇文章中,我们将讨论 n-gram - 一种索引时间方法,它在基本标记化后生成额外的分词,以便我们稍后在查询时能够获得更快的前缀匹配。 但在此…

高质量!推荐一些免费自学网站

大家好,我是 jonssonyan 说到自学网站,大家第一印象肯定是”菜鸟教程“、”w3school“、B 站大学。这些教程当然非常的好,而且适合入门学习,但是存在一些缺点,第一,知识点比较分散,没有一个整体…

【EI检索征稿】第五届机器学习、大数据与商务智能国际会议(MLBDBI 2023)

第五届机器学习、大数据与商务智能国际会议(MLBDBI 2023) 2023 5th International Conference on Machine Learning, Big Data and Business Intelligence 由浙江财经大学信息管理与人工智能学院主办,AEIC学术交流中心作支持单位的第五届机器…

Squids DBMotion新增多款同构数据库迁移

秋天的第一次数据传输! 又双叒叕,丝滑的零停机数据库在线迁移工具Squids DBMotion再发新版! Squids DBMotion继续横向扩展数据库能力,本次不仅增加了PostgreSQL、GaussDB和openGauss的同构数据库能力,也提供了这些数…

自己在家给电脑重装系统Win10教程

自己在家怎么给电脑重装系统Win10?Win10电脑系统如果操作时间特别长了,就可能出现卡顿、蓝屏等系统问题,这时候用户就想给电脑重装系统,却不知道重装具体的操作步骤,下面小编给大家详细介绍自己在家给电脑重装Win10系统…

架构必备能力——kafka的选型对比及应用场景

系列文章目录 上手第一关,手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么,以及如何使用SpringBoot对接Kafka 架构必备能力——kafka的选型对比及应用场景 系列文章目录一、Kafka的模型与优势1. Kafka 模型2. Kafka 优势 二、Kafka与竞争对手的…

【@胡锡进】大模型量化分析- 南京银行 601009.SH

对于股票价格的预测,以下是几种常见的方法: SARIMA模型:SARIMA(Seasonal Autoregressive Integrated Moving Average)模型适用于具有季节性变动的时间序列数据。它结合了ARIMA模型和季节性差分的方法来预测未来的价格…

axios响应拦截器 路由导航守卫

axios响应拦截器使用场景: 1. 处理全局错误:响应拦截器可以用来统一处理API请求的错误。当后端返回错误状态码,或者响应数据不符合预期时,我们可以在拦截器中进行统一的错误处理逻辑,例如弹窗提示、记录日志等。 2. 统…

倾斜摄影三维模型的顶层构建的问题分析

倾斜摄影三维模型的顶层构建的问题分析 在构建倾斜摄影超大场景的三维模型时,常见的顶层构建问题可能包括以下几个方面: 1、数据质量问题:倾斜摄影所获取的原始数据可能存在噪点、缺失、重叠或者变形等问题,这些问题会直接影响到…

Hadoop问题:start-all.sh显示未找到命令

在sbin文件夹下是start-all.sh可以运行的,但是到了别的文件夹下就不行了,于是想到了是文件路径问题,因为hadoop环境是和java环境一起配置的导致sbin写成了bin 解决办法: 打开.bashrc配置hadoop的环境变量 sudo vim ~/.bashrc …

热电厂蒸汽流量如何无线传输至无纸记录仪上显示?

某数码影像材料制造集团生产目前主要消耗蒸汽和电能源,蒸汽用能情况较为复杂,需要用5公里的蒸汽管线将较远区域某热电厂的蒸汽接入厂内,每周专人巡查一次管线,部分蒸汽管线位置特别偏僻,不易出入。 为了监控蒸汽流量&…

Java NIO到底是个什么东西?

Java NIO到底是个什么东西? 面试官:这次咱们就来聊聊Java 的NIO呗?你对NIO有多少了解? 候选者:嗯,我对Java NIO还是有一定的了解的,NIO是JDK 1.4 开始有的,其目的是为了提高速度。NIO翻译成 n…

GIS地图学知识

一、投影坐标系 "WGS 1984"坐标系墨卡托投影分度带(UTM ZONE)的选择: 北半球区选取最后字母为N的带,带数(经度的整数/6)31,如113.25,34.12中带数(113/6)3149,选取WGS 1984 UTM ZONE 49N 二、投影分带 经度中三度分带投…

Flink测试利器之DataGen初探 | 京东云技术团队

什么是 Flinksql Flink SQL 是基于 Apache Calcite 的 SQL 解析器和优化器构建的,支持ANSI SQL 标准,允许使用标准的 SQL 语句来处理流式和批处理数据。通过 Flink SQL,可以以声明式的方式描述数据处理逻辑,而无需编写显式的代码…

【2023研电赛】商业计划书赛道上海市一等奖:基于双矢量优化谐波预测控制的MMC-PET光伏储能系统

该作品参与极术社区组织的2023研电赛作品征集活动,欢迎同学们投稿,获取作品传播推广,并有丰富礼品哦~ 团队介绍 参赛单位:上海理工大学 参赛队伍:Dream explorers 参赛队员:吕哲 李天皓 赵安杰 项目意义…