用ptp4l和phc2sys实现系统时钟同步

news/2024/12/5 5:42:42/

linuxptp用于时钟同步。

安装方法:

ubuntu平台上用apt,也可以用官方的github源码自行编译:

https://github.com/richardcochran/linuxptp

apt install linuxptp

linuxptp主要包含2个程序:ptp4l和phc2sys

1.ptp4l 进行时钟同步,实时网卡时钟与远端的时钟同步(比如TSN交换机),支持1588 和 802.1AS 两种协议

2.phc2sys 将网卡上的时钟同步到操作系统,或者反之

时钟同步命令:

某主机P通过eth2连接TSN交换机,下列命令实现主机P的网卡与交换机进行时钟同步,并且将主机的操作系统的时钟也与TSN交换机同步。

ptp4l实现 网卡上的时钟与TSN交换机同步。

phc2sys实现网卡上的时钟 同步到操作系统(以网卡上的时钟为master)

(“同步到”这个词总是很难精确的表达清楚到底是以这为master还是slave)

ptp4l -i eth2 -2 –m -s -f gPTP.cfg 
phc2sys -a -r --transportSpecific=1 -m --step_threshold=1000# phc2sys还可以写成这样,功能是一样的
phc2sys  -s eth2 -c CLOCK_REALTIME --transportSpecific=1 -m --step_threshold=1000 -w

命令介绍:

ptp4l

-2 指定用2层的以太网帧进行数据传输,而非UDP

-s 作为slave向外界同步(以外面的时间为准)

-f gPTP.cfg 配置更多内容,具体内容见下面。 此例中使用的是802.1AS协议

phc2sys

此处2种用法是一样的,-a -r会自动寻找当前运行的ptp4l程序,利用它的时钟,同步给操作系统时钟,操作系统时钟是slave。

如果用“-a -rr” 两个r,那么时钟同步的方向是相反的,操作系统的时钟是master主时钟,网卡的时钟是slave.

第二种用法中的-s eth2 -c CLOCK_REALTIME -w 不过是写的更清楚一点。

-s 指定master clock

-c 指定 slave clock 或 (CLOCK_REALTIME)

CLOCK_REALTIME 指的是操作系统的时钟。

--transportSpecific=1 用于802.1AS TSN协议的同步, 1588协议可以不用

-m 打印消息

--step_threshold=1000 在master时钟发生突变时,slave不是一下就跟过去,而是一步步跟过去,避免时钟跳变。

-w 等待ptp4l

-r 同步系统 synchronize system (realtime) clock

-rr 系统时钟作为时钟源 repeat -r to consider it also as a time source

gPTP.cfg配置文件是基于linuxptp源码包中的文件修改的。

https://github.com/richardcochran/linuxptp/blob/master/configs/gPTP.cfg

gPTP.cfg的内容:

[global]
gmCapable               1
priority1               128
priority2               248
logAnnounceInterval     0
logSyncInterval         -3
syncReceiptTimeout      3
#neighborPropDelayThresh        800
neighborPropDelayThresh 80000
min_neighbor_prop_delay -20000000
assume_two_step         1
path_trace_enabled      1
follow_up_info          1
transportSpecific       0x1
ptp_dst_mac             01:80:C2:00:00:0E
network_transport       L2
delay_mechanism         P2P

各配置项说明

参数

说明

gmCapable

该项目决定设备是否能成为整个网络的主时钟。 默认配置下,所有运行ptp4l的设备将从该选项设为1的设备中自动协商选择主时钟。

priority1, priority2

设备时钟优的先级。数字越小,优先级越高。

neighborPropDelayThresh

邻近设备延时阈值,单位为纳秒(ns)。实际组网后,设备将根据测得的网络延时来选择主时钟,若连接的所有设备网络延时均超出阈值,且在gmCapable设置为1的情况下,则设备将以自身本地时钟作为网络的主时钟。

ptp_dst_mac

使用MAC地址01:80:C2:00:00:0E。该项目为IEEE 802.1AS协议规范,不应修改。

network_transport

使用数据链路层传输协议,相当于命令行参数-2。该项目为IEEE 802.1AS协议规范,不应修改。

如果需要可以提高进程的实时性和绑定CPU核心,可以使用chrt和taskset

taskset -c 0 chrt 90 ptp4l -i eth0 -f gPTP.cfg -2 -m -s > /var/log/ptp4l.log 2>&1 &
taskset -c 0 chrt 89 phc2sys -a -r --transportSpecific=1 -m --step_threshold=1000 > /var/log/phc2sys.log 2>&1 &

参考:

https://www.kalycito.com/how-to-run-opc-ua-pubsub-tsn/

示例代码来源:

https://www.kalycito.com/wp-content/uploads/2021/06/demo_package.tar


http://www.ppmy.cn/news/638298.html

相关文章

linux libv4l dev下载,libv4l-dev和libv4l2-dev在哪里可以下载

大家好,在对vlc-1.1.7源码进行./configure操作的时候,出现这样的提示: configure: WARNING: LibV4L support disabled because libv4l development headers were not found checking linux/videodev2.h usability... yes checking linux/vide…

ptp4l linux,如何使用PTP4l测试PTPV2协议精度?

1、首先安装ptp4l的方式 http://linuxptp.sourceforge.net/ 下载和安装方式请参照此网址,下载开源代码,然后使用make ,make install 手动安装 或者使用yum install ptp4l 进行安装 2、ptp4l环境搭建 使用ptp4l测试环境,需要两个机…

【echarts】vue+echarts树状图示例,文字显示不全是因为少了中括号[]

效果图献上&#xff1a; 完整代码如下: <template><div><div id"treeChart" :style"{width: 500px, height: 500px, padding: 30px}"></div></div> </template><script> export default {name: "eCharts&…

【C语言】最佳找零组合

这是一个生活实际问题&#xff0c;当你购买了不到100元的商品&#xff0c;却交给了售货员一张100元的货币…售货员就得考虑如何组合给你找钱。 题目:找零钱最佳组合 假设商店货品价格皆不大于100元(且为整数),若顾客付款在100元,求找给顾客之最少货币张数? (货币面值50元&…

如何搭建物联网阿里云平台

如何搭建物联网阿里云平台**背景介绍&#xff1a;**基于NB-M50平台下的阿里云平台的搭建 **目的&#xff1a;**实现NB-M50开发板和阿里云平台的相互通信 1.网页搭建及添加设备 1.1首先需要访问阿里云官网&#xff0c;点击右上角的免费注册或者点击登录&#xff0c;用淘宝、支付…

elementui自定义进度条形状

elementui自定义进度条形状 前言一、我们看下进度条的结构二、怎么改path里数据1.了解下svg2.其他svg标签转换成path3.最关键的一步 前言 进度条多以圆形、直线以及仪表盘形来展示&#xff0c;难免会有ui出奇怪的样式&#xff0c;想要不一样的形状。组件自带没有自定义形状。 …

Android 9.0版本修改Launcher图标默认为圆形

[DESCRIPTION] 客户要求修改Launcher所有图标默认为圆形图标 [SOLUTION] 设置中打开开发者选项后&#xff0c;我们可以发现长按主界面空白处会弹出三个选项&#xff0c;选择Home settings(主屏幕设置)&#xff0c;里面有项更改图标形状&#xff0c;可以看到有几种图标形状选…

element框架的teble表格的数据展示由横向转向竖向

<template><div class"m50"><el-table border style"margin-top: 50px;" :data"originData"><el-table-column label"题型" property"type" align"center"></el-table-column><…