Linux PTP 测量实操 (IEEE 1588)

news2024/11/14 21:45:58

测量 IEEE 1588 需要使用 linuxptp 这个工程, 官网是

https://linuxptp.sourceforge.net/

获取代码可以通过git

git clone git://git.code.sf.net/p/linuxptp/code linuxptp

如果是当前环境本地编译的话, 直接在下载好的代码路径make就可以.

如果需要在开发板上面使用的话,就需要交叉编译,将makefile里面的gcc替换为你平台的toolchain就可以了.

编译好之后, 我们需要的就只有1个文件, 就是 ptp4l.

下面开始测试:

我的环境 : 开发板上的双网口,使用网线直连, 可以ping通.

看下网口对ptp协议的支持情况:

通过 https://linuxptp.sourceforge.net/ 第5节的介绍得知, 当前的网卡既支持 Hardware 模式, 又支持 software 模式.

看一下 ptp4l 的版本,验证交叉编译的正确性.

# ./ptp4l -v
4.4-dirty

因为是串口连接, 所以只有一个中端, 就决定, 一个网口后台跑 server, 一个网口前台跑 client.

./ptp4l -2 -i eth0 -m -H &
//eth0 作为server端,硬件时间戳 -m  print messages to stdout 是输出信息到串口. -H是HARDWARE模式, & 是后台运行
./ptp4l -2 -i eth1 -m -H -s
//eth1 作为client端,硬件时间戳 -m  print messages to stdout 是输出信息到串口. -H是HARDWARE模式, -s 是 client only synchronization mode,就是从模式

输出的log如下

# ./ptp4l -2 -i eth0 -m -S &
# ptp4l[159.928]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[159.928]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[159.929]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE

#
#
# ptp4l[167.408]: port 1 (eth0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
ptp4l[167.408]: selected local clock fefefe.fffe.1b951a as best master
ptp4l[167.408]: port 1 (eth0): assuming the grand master role

#
#
# ./ptp4l -2 -i eth1 -m -S -s
ptp4l[171.096]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[171.096]: uds: removed existing /var/run/ptp4l
ptp4l[171.096]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[171.097]: uds: removed existing /var/run/ptp4lro
ptp4l[171.097]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[171.420]: port 1 (eth1): new foreign master fefefe.fffe.1b951a-1
ptp4l[175.428]: selected best master clock fefefe.fffe.1b951a
ptp4l[175.428]: foreign master not using PTP timescale
ptp4l[175.428]: port 1 (eth1): LISTENING to UNCALIBRATED on RS_SLAVE
ptp4l[177.448]: master offset      -8166 s0 freq      -0 path delay     42458
ptp4l[178.452]: master offset      -3083 s0 freq      -0 path delay     42458
ptp4l[179.456]: master offset      -5625 s0 freq      -0 path delay     39833
ptp4l[180.460]: master offset      -4322 s0 freq      -0 path delay     39822
ptp4l[181.464]: master offset      -3281 s0 freq      -0 path delay     39822
ptp4l[182.468]: master offset      -1124 s0 freq      -0 path delay     39833
ptp4l[183.472]: master offset      -3739 s0 freq      -0 path delay     40781
ptp4l[184.476]: master offset      -2792 s0 freq      -0 path delay     41292
ptp4l[185.480]: master offset      -4125 s0 freq      -0 path delay     41292
ptp4l[186.484]: master offset      -3489 s0 freq      -0 path delay     41031
ptp4l[187.488]: master offset      -1438 s0 freq      -0 path delay     40771
ptp4l[188.492]: master offset      -4395 s0 freq      -0 path delay     41020
ptp4l[189.496]: master offset      -3811 s0 freq      -0 path delay     41020
ptp4l[190.500]: master offset      -1917 s0 freq      -0 path delay     40417
ptp4l[191.504]: master offset      -7333 s0 freq      -0 path delay     40833
ptp4l[192.508]: master offset       2501 s0 freq      -0 path delay     40833
ptp4l[193.512]: master offset      -5239 s2 freq    +182 path delay     41281
ptp4l[193.512]: port 1 (eth1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
ptp4l[194.516]: master offset      -2542 s2 freq     -75 path delay     41083
ptp4l[195.520]: master offset      -7000 s2 freq    -527 path delay     41083
ptp4l[196.524]: master offset      -4708 s2 freq    -303 path delay     40833
ptp4l[197.528]: master offset      -3500 s2 freq    -186 path delay     40000
ptp4l[198.532]: master offset      -5155 s2 freq    -356 path delay     40322
ptp4l[199.536]: master offset      -3530 s2 freq    -197 path delay     40322
ptp4l[200.540]: master offset      11553 s2 freq   +1323 path delay     40322
ptp4l[201.544]: master offset      -4188 s2 freq    -256 path delay     40729
ptp4l[202.548]: master offset      -4114 s2 freq    -252 path delay     40322
ptp4l[203.552]: master offset       -864 s2 freq     +72 path delay     40322
ptp4l[204.556]: master offset      -3405 s2 freq    -186 path delay     40322
ptp4l[205.560]: master offset      -5437 s2 freq    -394 path delay     40729
ptp4l[206.564]: master offset      -4562 s2 freq    -311 path delay     40729
ptp4l[207.568]: master offset      -6562 s2 freq    -518 path delay     40729
ptp4l[208.572]: master offset      -5979 s2 freq    -466 path delay     40729
ptp4l[209.576]: master offset      -5187 s2 freq    -392 path delay     40729
ptp4l[210.580]: master offset      -5041 s2 freq    -382 path delay     39041
ptp4l[211.584]: master offset      -3166 s2 freq    -198 path delay     39041
ptp4l[212.588]: master offset      -2916 s2 freq    -176 path delay     39041
ptp4l[213.592]: master offset      -5166 s2 freq    -406 path delay     39416
ptp4l[214.596]: master offset      -4187 s2 freq    -312 path delay     39270
ptp4l[215.600]: master offset      -4353 s2 freq    -333 path delay     39270
ptp4l[216.604]: master offset      -2292 s2 freq    -129 path delay     39000
ptp4l[217.608]: master offset      -3208 s2 freq    -224 path delay     39000
ptp4l[218.612]: master offset      -1083 s2 freq     -13 path delay     38917
ptp4l[219.616]: master offset      -1104 s2 freq     -16 path delay     39146
ptp4l[220.620]: master offset      -3125 s2 freq    -221 path delay     39375
ptp4l[221.624]: master offset      -4239 s2 freq    -337 path delay     39406
ptp4l[222.628]: master offset       3510 s2 freq    +442 path delay     39406
ptp4l[223.632]: master offset      -1603 s2 freq     -71 path delay     39562
ptp4l[224.636]: master offset      -4198 s2 freq    -335 path delay     39739
ptp4l[225.640]: master offset      -4780 s2 freq    -398 path delay     39739
ptp4l[226.644]: master offset      -1989 s2 freq    -121 path delay     39739
ptp4l[227.648]: master offset      -5000 s2 freq    -427 path delay     40083
ptp4l[228.652]: master offset      -5041 s2 freq    -436 path delay     40083
ptp4l[229.656]: master offset      -5562 s2 freq    -494 path delay     40437
ptp4l[230.660]: master offset      -1645 s2 freq    -104 path delay     40562
ptp4l[231.664]: master offset      -3978 s2 freq    -341 path delay     40437
ptp4l[232.668]: master offset      -5854 s2 freq    -534 path delay     40562
ptp4l[233.672]: master offset      -6750 s2 freq    -631 path delay     40542
ptp4l[234.676]: master offset      -5083 s2 freq    -469 path delay     40542
ptp4l[235.680]: master offset      -5635 s2 freq    -530 path delay     40052
ptp4l[236.684]: master offset       6615 s2 freq    +702 path delay     40052
ptp4l[237.688]: master offset      -6114 s2 freq    -577 path delay     40198
ptp4l[238.692]: master offset      -4230 s2 freq    -393 path delay     39396
ptp4l[239.696]: master offset      -4354 s2 freq    -410 path delay     39396
ptp4l[240.700]: master offset      -1083 s2 freq     -84 path delay     39333
ptp4l[241.704]: master offset      -4813 s2 freq    -462 path delay     39396
ptp4l[242.708]: master offset      -3104 s2 freq    -294 path delay     39396
ptp4l[243.712]: master offset      -4166 s2 freq    -404 path delay     39375
ptp4l[244.716]: master offset       4354 s2 freq    +452 path delay     39646
ptp4l[245.720]: master offset      -4229 s2 freq    -410 path delay     39646
ptp4l[246.724]: master offset      -4656 s2 freq    -458 path delay     40656
ptp4l[247.728]: master offset      -6958 s2 freq    -695 path delay     41500
ptp4l[248.732]: master offset      -4344 s2 freq    -438 path delay     39677
ptp4l[249.736]: master offset      -3927 s2 freq    -400 path delay     39677
ptp4l[250.740]: master offset      -2521 s2 freq    -262 path delay     39729
ptp4l[251.744]: master offset      -6406 s2 freq    -657 path delay     40656
ptp4l[252.748]: master offset      -1271 s2 freq    -145 path delay     39729
ptp4l[253.752]: master offset      -2145 s2 freq    -234 path delay     39729
ptp4l[254.756]: master offset      -3042 s2 freq    -327 path delay     39875
ptp4l[255.760]: master offset       1458 s2 freq    +124 path delay     39875
ptp4l[256.764]: master offset        281 s2 freq      +7 path delay     39552
ptp4l[257.768]: master offset      -4969 s2 freq    -523 path delay     39552
ptp4l[258.772]: master offset       1479 s2 freq    +123 path delay     39187
ptp4l[259.776]: master offset      -7125 s2 freq    -744 path delay     39875

可以看到软模式执行良好. 我的环境, 硬模式有问题,出错log如下,还不知道原因.

# ./ptp4l -2 -i eth0 -m -H &
# ptp4l[38041.506]: selected /dev/ptp0 as PTP clock
ptp4l[38041.548]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[38041.548]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[38041.548]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
# ./ptp4l -2 -i eth1 -m -H -s
ptp4l[38048.235]: selected /dev/ptp1 as PTP clock
ptp4l[38048.276]: port 1 (eth1): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[38048.276]: uds: removed existing /var/run/ptp4l
ptp4l[38048.276]: port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[38048.276]: uds: removed existing /var/run/ptp4lro
ptp4l[38048.277]: port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[38049.376]: port 1 (eth0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
ptp4l[38049.376]: selected local clock fefefe.fffe.1b951a as best master
ptp4l[38049.376]: port 1 (eth0): assuming the grand master role
ptp4l[38049.380]: port 1 (eth1): new foreign master fefefe.fffe.1b951a-1
ptp4l[38050.380]: port 1 (eth1): received SYNC without timestamp
ptp4l[38050.392]: timed out while polling for tx timestamp
ptp4l[38050.392]: increasing tx_timestamp_timeout or increasing kworker priority may correct this issue, but a driver bug likely causes it
ptp4l[38050.392]: port 1 (eth0): send sync failed
ptp4l[38050.392]: port 1 (eth0): MASTER to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED)
ptp4l[38055.048]: selected local clock fefefe.fffe.1b951b as best master
ptp4l[38066.472]: port 1 (eth0): FAULTY to LISTENING on INIT_COMPLETE
ptp4l[38074.144]: port 1 (eth0): LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
ptp4l[38074.144]: port 1 (eth0): assuming the grand master role
ptp4l[38075.148]: port 1 (eth1): received SYNC without timestamp
ptp4l[38075.160]: timed out while polling for tx timestamp
ptp4l[38075.160]: increasing tx_timestamp_timeout or increasing kworker priority may correct this issue, but a driver bug likely causes it
ptp4l[38075.160]: port 1 (eth0): send sync failed
ptp4l[38075.160]: port 1 (eth0): MASTER to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED)

参考文章:

12 – 利用LinuxPTP进行时间同步(软/硬件时间戳) – 研一-腾讯云开发者社区-腾讯云

Linux下交叉编译 linuxptp-CSDN博客

linuxptp时钟同步测试_ptp时钟测试-CSDN博客

Linuxptp使用总结_linuxptp版权-CSDN博客

RT-Thread : IEEE1588/PTP 协议的实现_stm32 ptp-CSDN博客

IEEE1588v2解析(3)--PTP的路径时延测量方法介绍_1588测试操作指导-CSDN博客

数据采集和测试中的时间精度协议(PTP) | HBM

linux下ptp性能测试_ptp测试软件-CSDN博客

PTP简介-IEEE1588协议-CSDN博客

SSZTAU5 Technical article | TI.com

以太网帧

PTP(Precision Time Protocol)高精度时间同步协议+linuxptp代码学习_【ptp(precision time protocol)高精度时间同步协议+linuxptp代码学-CSDN博客

【时间同步】IEEE-1588总结_ieee1588-CSDN博客

手把手教你解决PL2303驱动在Win10无法使用-CSDN博客

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

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

相关文章

通信工程学习:什么是接入网(AN)中的TF传送功能

接入网(AN)中的TF传送功能 在通信工程中,TF(Transfer Function)传送功能是指为接入网(AN)不同位置之间提供通道和传输介质,以实现数据的有效传输。以下是关于TF传送功能的详细解释&a…

水滴式粉碎机:辣椒粉碎轻松搞定

在食品加工行业中,辣椒作为一种重要的调味品,其加工方式直接影响到产品的口感。水滴式粉碎机的粉碎方式不仅保留了辣椒原有的色泽、香味和营养成分,还减少了加工过程中的热损失和氧化反应,确保了辣椒粉的品质。 精细度与均匀度&am…

Kafka 消息丢失如何处理?

今天给大家分享一个在面试中经常遇到的问题:Kafka 消息丢失该如何处理? 这个问题啊,看似简单,其实里面藏着很多“套路”。 来,咱们先讲一个面试的“真实”案例。 面试官问:“Kafka 消息丢失如何处理&#x…

基于SSM+Vue+MySQL的在线医疗服务系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着医疗信息化的快速发展和患者对便捷医疗服务需求的日益增长,开发一个高效、可靠的在线医疗服务系统显得尤为重要。基于SSM(SpringSpring MVCMyBatis)框架、前端采用Vue.js、后端连接MySQL数…

CrossOver24.0.5破解版免费下载和永久激活图文教程,苹果电脑怎么玩《黑神话:悟空》

CrossOver24可以玩《黑神话:悟空》么?答案是可以的。 1、首先我们需要下载CrossOver24软件。 CrossOver24安装包夸克网盘链接:https://pan.quark.cn/s/35e64d746778 2、下载完成后,我们双击CrossOver.pkg开始安装,然…

LeetCode[简单] 141.环形链表

给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…

C++初阶学习——探索STL奥秘——模拟实现list类

1、基本框架 list 由三个类构建而成: 节点类:每个节点必须的三部分(指向前一个节点的指针、指向后一个节点的指针、当前节点存储的数据) 迭代器类:此时的迭代器为双向迭代器,比较特殊,需要对其进行封装,如 it并非使迭代器单纯向后移动&…

QT添加图标标题和打包项目

QT项目打包 项目的标题和图标标题项目图标exe图标 可执行文件——生成exeexe运行报错“找不到qt6gui.dll”等 相关库文件——生成zip安装包打包程序——生成exe安装包 项目的标题和图标 项目打包要好看点,得有个好点的标题和图标,这次打包的项目是我上一…

excel如何快速选中某个数字或者某串数字

鼠标光标放在某个数字或者某串数字的末尾,进行双击鼠标左键即可 (就会选中当前鼠标光标前相邻的所有数字):

【Node.js】RabbitMQ 延时消息

概述 在 RabbitMQ 中实现延迟消息通常需要借助插件(如 RabbitMQ 延迟队列插件),因为 RabbitMQ 本身不原生支持延迟消息。 延迟消息的一个典型场景是,当消息发布到队列后,等待一段时间再由消费者消费。这可以通过配置…

【拦截导弹】

​ 题目 ​​ 题解 题解:1010. 拦截导弹(dp与贪心) - AcWing 我谈几点: 第一,由此复习了upper_bound和lower_bound函数 第二,由此学习了贪心方式求“最多分割不严格递减子序列的数目”和“最长不严格递…

算法参数对拥塞控制的影响

来看看参数对公平收敛的影响。仅假象一下就知道应该是个加权公平,但事实如何,还是要具体看一下。 首先看 aimd,标准的 reno 算法是每 round 之后 cwnd 加 1,但如果有些流加 1,有些流加 2,会如何&#xff1…

踩坑【已解决】:使用maven打印结果是控制台输出中文乱码

报错原图: 解决方案: 1、修改maven->runner中的配置添加如下信息: -Dfile.encodingUTF-8 2、检查编码的配置信息: 3、检查窗口右下角的配置信息: 解决结果:

SEGGERS实时系统embOS推出Linux端模拟器

SEGGER 发布了两个新的 embOS 仿真模拟器:embOS Sim Linux 和 embOS-MPU Sim Linux。 通过模拟 Linux 主机系统上的硬件,取代物理硬件,为开发人员提供了一种无缝的方式来构建原型和测试应用程序。 embOS Sim Linux 端口支持 32 位和 64 位系…

【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP

目录 1 -> Ping命令 2 -> Netstat命令 3 -> Pidof命令 4 -> 验证UDP-Windows作为client访问Linux 4.1 -> UDP client样例 1 -> Ping命令 Ping命令是一种网络诊断工具,它使用ICMP(Internet Control Message Protocol,互联网控制消…

CAN BUS

CAN BUS 原理 网上资料非常丰富,是车载系统主要BUS之一。 我们关注如下方面 can bus 是什么网络结构CAN BUS 协议ECU node实现其他 What is CAN Bus? Control Area Network (CAN) bus is a serial communication protocol that allows devices to exchange dat…

MySQL:视图【详解】

1、视图 1.1 视图的定义 视图是在数据库中定义的虚拟表。它是一个基于一个或多个实际表的查询结果集,可以像实际表一样被查询和操作。视图可以看作是一个动态生成的数据表,其内容是从其他表中选择、过滤和计算得到的。 视图通过使用SQL查询语句来定义…

Framebuffer应用编程

目录 前言 LCD操作原理 涉及的 API 函数 open函数 ioctl 函数 mmap 函数 Framebuffer程序分析 源码 1.打开设备 2.获取LCD参数 3.映射Framebuffer 4.描点函数 5.随便画几个点 上机实验 前言 本文介绍LCD的操作原理和涉及到的API函数,分析Framebuffer…

配置全新服务器深度学习一套流程

目录 1.安装anaconda2.配置cuda3.配置cudnn4.配置新的pytorch环境5.安装rdkit包6.小问题记录 1.安装anaconda 直接参考视频 总结: 1.下载anaconda安装包,尽量不下载最新的版本 2.bash 对应安装包,一直回车,yes 3.配置环境vim ~/.…

点餐小程序实战教程10权限验证

目录 1 创建员工的全局变量2 创建员工首页3 跳转到员工首页4 给全局变量赋值5 验证权限6 登录的完整代码总结 我们已经实现了员工的注册及登录功能,登录成功后需要跳转到我们的员工首页。在首页加载的时候我们需要去验证当前用户是否已经登录,未登录我就…