浅聊一下Linuxptp

news2024/11/26 21:20:47

浅聊一下Linuxptp

文章目录

  • 浅聊一下Linuxptp
    • 1.什么是Linuxptp
    • 2.安装Linuxptp
    • 3.源码解析一下
      • 1.8个带main函数的源文件
        • 1.hwstamp_ctl.c
        • 2.nsm.c
        • 3.phc2sys.8
        • 4.phc_ctl.8
        • 5.pmc.8
        • 6.ptp4l.c
        • 7.timemaster.c
        • 8.ts2phc.c
      • 2.clock.c文件
    • 4.自己实践

1.什么是Linuxptp

LinuxPTP(linuxptp)是用于Linux系统的精确时间同步软件包,支持IEEE 1588 Precision Time Protocol(PTP)标准。它提供了一个用户空间的守护进程(daemon),名为ptp4l,用于与网络中的PTP设备通信,实现高精度的时钟同步。

2.安装Linuxptp

1.检查是否支持软硬件时间戳

ethtool - T enp0s3

对于软件时间戳支持,参数列表应包括:

  • SOF_TIMESTAMPING_SOFTWARE
  • SOF_TIMESTAMPING_TX_SOFTWARE
  • SOF_TIMESTAMPING_RX_SOFTWARE

对于硬件时间戳支持,参数列表应包括:

  • SOF_TIMESTAMPING_RAW_HARDWARE
  • SOF_TIMESTAMPING_TX_HARDWARE
  • SOF_TIMESTAMPING_RX_HARDWARE

2.安装

sudo git clone https://github.com/nxp-archive/openil_linuxptp.git linuxptp
cd linuxptp
sudo make
sudo make install

3.使用(软件时间戳)

主时钟:sudo ptp4l -i enp0s8 -m -S      

从时钟:sudo ptp4l -i enp0s3-m -S -s

在这里插入图片描述

3.源码解析一下

源码里面太多文件,很多文件跟ptpd差不多,主要分析里面8个带main函数的源文件以及clock.c文件。

这8个源文件中最主要是这两个

ptp4l:ptp4l是LinuxPTP的主要守护进程,负责与PTP设备通信,并实现PTP协议的各种功能。它处理传入的PTP消息,管理本地时钟和时钟源选择,执行时钟校准等操作。

phc2sys:phc2sys是另一个工具,用于将来自PTP硬件时钟(PHC)的时间同步到系统时钟。它负责校准系统时钟以与PTP网络同步,并确保精确的时间戳记录。

1.8个带main函数的源文件

1.hwstamp_ctl.c

是一个程序,用于使用 SIOCSHWTSTAMP ioctl 在网络驱动程序级别设置和获取硬件时间戳策略

2.nsm.c

是一个实现 NetSync Monitor (NSM) 客户端的程序。 NSM 是一个精确时间协议 (PTP) 的扩展,它使客户端能够测量其时钟相对于网络中任何 PTP 时钟的偏移量支持 NSM。 它使用单播消息,但与单播模式下的 PTP 不同,它不要求服务器保留特定于客户端的任何状态。 这是对监控特别有用。

3.phc2sys.8

是一个同步系统中两个或多个时钟的程序。 通常,它用于将系统时钟同步到 PTP 硬件时钟 (PHC),它本身由 ptp4l 同步程序。使用 -a 选项,要同步的时钟是从正在运行的 ptp4l daemon 中获取的,并且同步的方向会自动跟随 PTP 端口状态的变化。

4.phc_ctl.8

是一个可以用来直接控制PHC时钟设备的程序。 通常,它用于调试目标的,一般用处不大 设备的控制。对于PHC时间设备的一般控制, phc2sys应该是首选。

5.pmc.8

是一个根据 IEEE 标准 1588 实现 PTP 管理客户端的程序。该程序从标准输入或由名称和管理 ID 指定的命令行操作读取,通过选定的传输发送它们并打印任何收到的回复。 支持三种动作:GET获取指定信息,SET更新指定信息,CMD发起指定事件。 默认情况下,管理命令针对所有端口。 TARGET 命令可用于为后续消息选择特定的时钟和端口。

6.ptp4l.c

是根据适用于 Linux 的 IEEE 标准 1588 的精确时间协议 (PTP) 的实现。 它实现了边界时钟(BC)、普通时钟(OC)和透明时钟(TC)。

  延迟机制选项
  -A       Auto,自动选择延迟机制。,从E2E开始,当收到对等延迟请求时切换到P2P
  -E       E2E,选择延迟请求 - 响应(E2E)机制。 默认是用这个机制。 单个PTP通信路径上的所有时钟必须使用相同的机制。 使用E2E机制在端口上收到对等延迟请求时,将输出warning
  -P       P2P,对等延迟机制
  网络传输选项
  -2       IEEE 802.3
  -4       UDP IPV4(默认)
  -6       UDP IPV6
  时间戳选项
  -H        使用硬件时间戳(默认)
  -S        使用软件时间戳          
  -L        LEGACY HW时间戳
  其他选项
  -f  [file]  从指定文件file中读取配置。 默认情况下不读取任何配置文件。
  -i  [dev]  选择PTP接口设备,例如eth0(可多次指定)必须至少使用此选项或配置文件指定一个端口。
  -p  [dev]  在Linux内核v3.5之前,无法发现与网络接口关联的PHC设备。 此选项指定在旧内核上运行时要使用的PHC设备(例如/ dev/ptp0)。要使用的时钟设备,默认为auto,忽略软件/ LEGACY HW时间戳(不推荐使用此选项)
  -s      slaveOnly mode,从时钟模式(覆盖配置文件)
  -t      透明时钟模式
  -l  [num]  将日志记录级别设置为'num',默认是6
  -m      将消息打印到stdout
  -q      不打印消息到syslog
  -v      打印软件版本并退出
  -h      help

主要操作:

主时钟:sudo ptp4l -i enp0s8 -m -S (软件时间戳)

从时钟:sudo ptp4l -i enp0s3-m -S -s

log:

1.该master offset值表示从主设备测量的偏移量(以纳秒为单位)

2.s0,s1,s2表示时钟伺服器的不同状态,s0表示未锁定,s1表示正在同步,s2表示锁定,锁定状态表示不会再发生阶跃行同步,只是缓慢调整;

3.当从端口状态改变UNCALIBRATEDSLAVE时,计算机已经成功地与一个PTP主时钟同步。

7.timemaster.c

timemaster 是一个程序,它使用 ptp4l 和 phc2sys 结合 chronyd orntpd 将系统时钟同步到 NTP 和 PTP 时间源。 PTP 时间由 phc2sys 和 ptp4l 通过 SHM 参考时钟提供给 chronyd

8.ts2phc.c

将 PTP 硬件时钟 (PHC) 与外部时间戳信号同步。 可以使用单个源将时间分配给一个或多个 PHC 设备。

延迟机制选项

-A       Auto,自动选择延迟机制。,从E2E开始,当收到对等延迟请求时切换到P2P

-E       E2E,选择延迟请求 - 响应(E2E)机制。 默认是用这个机制。 单个PTP通信路径上的所有时钟必须使用相同的机制。 使用E2E机制在端口上收到对等延迟请求时,将输出warning

-P       P2P,对等延迟机制

网络传输选项

-2       IEEE 802.3

-4       UDP IPV4(默认)

-6       UDP IPV6

时间戳选项

-H        使用硬件时间戳(默认)

-S        使用软件时间戳

-L        LEGACY HW时间戳

其他选项

-f  [file]  从指定文件file中读取配置。 默认情况下不读取任何配置文件。

-i  [dev]  选择PTP接口设备,例如eth0(可多次指定)必须至少使用此选项或配置文件指定一个端口。

-p  [dev]  在Linux内核v3.5之前,无法发现与网络接口关联的PHC设备。 此选项指定在旧内核上运行时要使用的PHC设备(例如/ dev/ptp0)。要使用的时钟设备,默认为auto,忽略软件/ LEGACY HW时间戳(不推荐使用此选项)

-s      slaveOnly mode,从时钟模式(覆盖配置文件)

-t      透明时钟模式

-l  [num]  将日志记录级别设置为'num',默认是6

-m      将消息打印到stdout

-q      不打印消息到syslog

-v      打印软件版本并退出

-h      help

2.clock.c文件

这个是管理时钟的代码。这些代码负责监测系统时钟的状态,校准系统时钟与PTP软硬件时钟的差异,并执行时钟校准和同步操作,以保持时间的准确性。

在这个文件中也可以自己修改打印输出的东西。

在这里插入图片描述

在这修改。

4.自己实践

1.校验是否正确

date +"%T.%N"打印系统时间,然后比对时间差

2.检查能否与ptpd混在一起

实验过可以但是延迟较高

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

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

相关文章

HIS系统是什么意思?HIS系统的主要功能有哪些?

HIS系统是什么意思? HIS系统即医院信息系统(全称为Hospital information System) ,是指利用计算机软硬件技术和网络通信技术等现代化手段,对医院及其所属各部门的人流、物流、财流进行综合管理,对在医疗活动各阶段产生的数据进行采…

构造函数(包括默认构造函数) ,析构函数的使用与特性

文章目录 一、构造函数二、默认构造函数(也是构造函数)默认构造函数的种类:1.无参类型2.全缺省类型3.编译器自动生成的4.汇总 三、析构函数 一、构造函数 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自…

opencv_c++学习(七)

一、图像颜色空间变换 一、图像颜色空间介绍 RGB颜色模型 具体的体现样式如下: 在opencv中有可以实现数据类型的转换接口,如下: Mat:convertTo (OutputArray m, int rtype, alpha, double 1, double beta)实现如下: a.conve…

Python-字典与集合

学习内容:Python基础入门知识 专栏作者:不渴望力量的哈士奇不渴望力量的哈士奇擅长Python全栈白宝书[更新中],⑤ - 数据库开发实战篇,网安之路,等方面的知识,不渴望力量的哈士奇关注云原生,算法,python,集成测试,去中心化,web安全,智能合约,devops,golan…

如何使用jenkins、ant、selenium、testng搭建自动化测试框架

如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开eclipse然后去选择运行文件吗&#xff…

NR RLC(二)相关参数及format

欢迎关注同名微信公众号“modem协议笔记”。 实际查看RLC部分log难免要翻协议,查阅最多的就是相关参数的含义,反而RLC具体过程就没有像当初阅读时那样特别关注了。其实清楚RLC参数含义,看38.322就没那么困难。而RLC具体过程往往要用到相关参…

azkaban --- 案例实操

目录 案例一 : 输出Hello World 案例二 :作业依赖 案例三 :内嵌工作流 案例四 :自动失败 案例五 :手动失败 案例六 :JavaProcess 案例七 :启动服务 案例八 :Hbase 案例九 …

SpringBoot整合企业微信消息推送(四十五)

从头开始,并不意味着失败,相反,正是拥抱成功的第一步,即使还会继续失败 上一章简单介绍了 SpringBoot整合钉钉消息推送(四十四) , 如果没有看过,请观看上一章 一. 企业微信前期准备 用户需要注册一个企业微信, 并且登…

ANR基础 - Input系统

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、Input系统概述二、整体框架1.整体框架类图2.核心启动过程2.1 initialize2.1 I…

浅析一下PTPD

浅聊一下PTPD 文章目录 浅聊一下PTPD1.什么是PTPD2.PTPD源码浅析一下1.src文件1.arith.c2.bmc.c3.constant.h 和 datatypes.h4.display.c5.management.c6.protocol.c7.ptp_datatypes.h8.ptp_primitives.h9.ptp_timers.c10.ptpd.c11.signaling.c12.timedomain.c 2.def文件夹3.de…

ROS:gazebo创建仿真地图,turtlebot3加载仿真地图进行建图,生成yaml和pgm地图信息

一.安装turtlebot3 Ubuntu18.04 实现:安装turtlebot3功能包、虚拟机与机器人之间的网络配置、测试机器人Cartographer建图_Charlesffff的博客-CSDN博客 二.安装gazebo ROS18.04:安装gazebo,下载模型_gazebo下载模型_Charlesffff的博客-CSD…

Linux 设备驱动程序(二)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核(一) 深入理解 Linux 内核(二) Linux 设备驱动程序(一) Linux 设备驱动程序(二) Linux设备驱动开发详解 文章目录 系列文章目…

大型央企集团财务经营分析框架系列(三)

01集团经营管理分析的切入点 集团经营管理分析的切入点往往是从财务分析开始。 往往在一家企业里面,财务方面的信息化建设是要早于其它方面的信息化建设的,业务标准化程度比较高,数据标准化程度也比较高,分析框架也相对成熟。 …

栈和队列的相关功能实现及其基础应用

前言:栈和队列是常见的数据结构,它们在计算机科学中被广泛应用。栈和队列都是一些元素的集合,它们的主要区别在于数据的组织方式和访问顺序。在栈中,元素的添加和删除都在同一端进行,称为栈顶,而在队列中&a…

PMP考试100个主要知识点

1.一个项目在启动阶段会进行量级估算,准确范围是-50至100%。2000版的量级估算准确度为:-25%到75%。 2.质量控制通常先于范围确认执行,但这两个过程可以并列进行参考 3.Cost-plus-fixed-fee(CPFF)成本加固定费用合同。成本补偿型合同包括成本加…

快速入门ChatGPT和AIGC:底层原理、热门工具、行业现状【我们能做什么】

最近大家热议的ChatGPT和AI绘画工具的底层技术原理是什么?是如何发展到现在的?有哪些应用场景、热门工具?AIGC产业上下游有哪些公司?作为普通用户,我们还能接触哪些应用AI技术打造的商业解决方案?…… 我们…

微信小程序 录音+播放组件封装

展示 长按录音 松开结束录音 点击播放 再次点击暂停 再次点击继续播放 展示效果: 录音功能 录音功能(手指按下开始录音 手指松开结束录音): 使用wx原生录音功能在 component 外新建 wx.getRecorderManager() RecorderManager…

国巨 :硬件设计基础60条

硬件设计是现代科技发展中至关重要的领域之一。它涵盖了从微电子器件到复杂的系统级设计的各个方面,是现代电子产品的核心。在这篇文章中,我将介绍60个基础概念,这些概念是硬件设计工程师必备的知识,并且是设计出高质量硬件的关键…

【web】学习ajax和fetch

1/什么是ajax ajax 全名 async javascript and XML(异步JavaScript和XML) 是前后台交互的能⼒。 也就是我们客户端给服务端发送消息的⼯具,以及接受响应的⼯具。 在不重新加载整个网页的情况下,对网页的某部分进行更新。而传统的网页(不使用 Ajax)如果需…

设计师必备的5个素材库,马住

今天就告诉大家设计师都是去哪些网站找素材,分享五个网站,解决你80%的设计素材,建议收藏! 1、菜鸟图库 https://www.sucai999.com/?vNTYxMjky 这是一个为新手设计师提供免费素材的设计网站,站内有超多平面模板、海报…