首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一

  • 25-03-08 01:41
  • 3990
  • 8199
blog.csdn.net

拖了很久,花了半天测了一下,效果还行,可以脱离隔壁的原子钟做开发测试了。

参考文献: http://linuxptp.sourceforge.net/

0、硬件支持

查看网卡是否支持软硬件时间戳:
sudo ethtool -T eno1

Time stamping parameters for eno1:
Capabilities:
	hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)
	software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)
	hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)
	software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
	software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
	hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
	off                   (HWTSTAMP_TX_OFF)
	on                    (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
	none                  (HWTSTAMP_FILTER_NONE)
	all                   (HWTSTAMP_FILTER_ALL)
	ptpv1-l4-sync         (HWTSTAMP_FILTER_PTP_V1_L4_SYNC)
	ptpv1-l4-delay-req    (HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ)
	ptpv2-l4-sync         (HWTSTAMP_FILTER_PTP_V2_L4_SYNC)
	ptpv2-l4-delay-req    (HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ)
	ptpv2-l2-sync         (HWTSTAMP_FILTER_PTP_V2_L2_SYNC)
	ptpv2-l2-delay-req    (HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ)
	ptpv2-event           (HWTSTAMP_FILTER_PTP_V2_EVENT)
	ptpv2-sync            (HWTSTAMP_FILTER_PTP_V2_SYNC)
	ptpv2-delay-req       (HWTSTAMP_FILTER_PTP_V2_DELAY_REQ)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  1. 软件时间戳需要包括参数
    SOF_TIMESTAMPING_SOFTWARE
    SOF_TIMESTAMPING_TX_SOFTWARE
    SOF_TIMESTAMPING_RX_SOFTWARE

  2. 硬件时间戳需要包括参数
    SOF_TIMESTAMPING_RAW_HARDWARE
    SOF_TIMESTAMPING_TX_HARDWARE
    SOF_TIMESTAMPING_RX_HARDWARE

1、LinuxPTP源码下载

sudo git clone git://git.code.sf.net/p/linuxptp/code linuxptp
cd linuxptp
sudo make
sudo make install
  • 1
  • 2
  • 3
  • 4

查看Usage

ptp4l -h
  • 1
  延迟机制选项
  -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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2、run linuxptp

  • 2.1 软件时间戳,主从模式测试

服务端(主钟):

sudo ptp4l -i enp0s31f6 -m -S
  • 1

客户端(从钟):

sudo ptp4l -i eno1 -m -S -s
  • 1

运行结果:
主钟:
master-s
从钟:
slave-s
运行一会儿以后:
slave-s2
log中的内容为:

  1. master offset : 即PTP协议中定义的主从端时间差,单位:ns
  2. s0,s1,s2 : 表示时钟伺服器的不同状态,s0表示未锁定,s1表示正在同步,s2表示锁定,锁定状态表示不会再发生阶跃行同步,只是缓慢调整
  3. freq:
  4. port 0:INITIALIZING to LISTENING on INIT_COMPLET : 本地PTP管理的Unix域socket;
  5. port 1:new foreign … : eno1上的端口;
  6. 从钟端口状态由UNCALIBRATED 变为SLAVE时,则从钟已经成功地与best master同步。
  • 2.2 硬件时间戳测试
    服务端(主钟):
sudo ptp4l -i enp0s31f6 -m -H
  • 1

客户端(从钟):

sudo ptp4l -i eno1 -m -H -s
  • 1

如果要修改系统时间的话,需要PHC把通过PTP协议获取到的时间 同步到系统上,执行phc2sys命令:

#主钟
sudo phc2sys -m -s CLOCK_REALTIME -c enp0s31f6 -w
sudo ptp4l -i enp0s31f6 -m -H
#从钟
sudo phc2sys -m -s eno1 -w
sudo ptp4l -i eno1 -m -H -s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

运行结果:
从钟:
slave-H
显然用硬件时间戳同步的精度高得多,而且这只是一块普通网卡,走的还是校园网

  • 2.3 配置文件
    运行时使用-f可以指定配置文件,命令行会覆盖配置文件,常用的配置项如下(‘#’后面是注释,实际配的时候要留注释的话注释需要单独一行,目前是这样):
[global]
twoStepFlag             1 #PTP两步模式是否开启
clientOnly              0 #
socket_priority         0
priority1               128 #对应BMCA里的优先级1
priority2               128 #对应BMCA里的优先级2
domainNumber            0   #PTP域number
#utc_offset             37 #配置闰秒,截止目前是37秒,一般不用配置因为时钟源配过(默认是注释的)
clockClass              248 #对应BMCA里的clockClass
…………
logAnnounceInterval     1  # log间隔
delayAsymmetry          0  # 可配置的链路不对称性,正数表示rx比tx延迟高,负数表示低,单位ns。
…………
BMCA                    ptp # 指定BMCA算法 ptp、noop、自定义
…………
ptp_dst_mac             01:1B:19:00:00:00
p2p_dst_mac             01:80:C2:00:00:0E
……
clock_type              OC
network_transport       UDPv4 #L2 UDPv4 UDPv6,对应命令行的-2 -4 -6
delay_mechanism         E2E # E2E P2P
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 2.4 透明时钟(TC)模式测试(已修复)

/- 这个bug已经修复了 -\

TC和BC都需要至少有两个interface;
执行以下命令

sudo ptp4l -i eno1 eno2 -m -H -t
  • 1

提示无效的选项:
在这里插入图片描述
嗯?usage里分明写着 -t 是transparent clock 啊
sudo vim ptp4l.8
嗯,-f -i -m -p -l -i -A -E -P -2 -4 -6 -H -S -L -q -v -h
??就是没有-t,不懂了

  • 手动TC/BC:需要设备有俩网卡,一个卡绑从钟一个卡绑定主钟,来实现TC/BC。效果其实差不多。
  • 最近开发时遇到的USRP的U L O问题:
  1. "U"错误
    当host PC或运行于其上的应用程序不能为USRP以足够快速率提供样值时,往往会出现"U"错误,举例说明:USRP以设定的采样速率为5M/s需求样值,而host PC却只能以低于5M/s的速率提供样值时,就会出现"U"错误。
  2. "O"错误
    当host PC或运行于其上的应用程序不能以足够快的速率来处理USRP提供的样值时,往往会出现"O"错误,距离说明:当USRP以设定的采样速率为5M/s提供样值,而host PC却只能以处理低于5M/s的速率处理样值是,就会出现"O"错误。
  3. "L"错误
    USRP的设计机理是:要求Packet中的时间戳要早于FPGA中的时间戳。如果指令到达FPGA时Packet中的时间戳已经过时,USRP会给出"L"错误,也就是指令到达的时间比预计执行时间要晚。

这里有一组利用两台铯原子钟时钟服务器通过SDR平台(OAI EPC+srs eNB + COTS UE)针对空口进行的15小时测试得到的数据,可以来一波空口性能分析:

更:
度盘连接被和谐了


在这里插入图片描述

注:本文转载自blog.csdn.net的Kujou的文章"https://blog.csdn.net/BUPTOctopus/article/details/86246335"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top