PTP移植

 1:libmnl移植

        源码:git clone git://git.netfilter.org/libmnl

        ./autogen.sh

        交叉编译:

1 ./configure --host=arm-linux-gnueabi CC=交叉编译工具 CFLAGS=-march=armv5te --prefix=安装目录
2 make -j6
3 make install

2.移植ethtool

        源码 :ethtool - utility for controlling network drivers and hardware (kernel.org)

        ./autogen.sh 

        ./configure --host=arm-linux-gnueabi CC=arm-linux-gnueabi-gcc   MNL_CFLAGS="-I/tmp/libmnl/include" MNL_LIBS="-L/tmp/libmnl/lib -lmnl" --prefix=安装目录

        make

        make install

3:查看网卡是否支持软硬件时间戳

        ethtool -T eth0

  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

4:PTP交叉编译

        源码:linuxptp download | SourceForge.net

         1.首先更改makefile

                CC= gcc #这里修改成你的交叉编译器

        2.make

        编译完成,生成ptp4l  phc2sys

       参数:ptp4l参数如下:

$ ptp4l -h
 延迟机制选项
  -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
————————————————
版权声明:本文为CSDN博主「Kujou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BUPTOctopus/article/details/86246335

     

软时间戳测试:

主片:ptp4l -i eth0  -m  -S

从片:ptp4l -i eth0 -m -S -s

 现象:

主片:

从片:

实测:软时间戳精度为几百微妙误差。

硬时间戳测试:

        主片:ptp4l -i eth0  -m -H
        从片:ptp4l -i eth0  -m -H -s
 

主片:

 从片:

 实测:硬件时间戳为纳秒级误差

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

#主钟
phc2sys -m -s CLOCK_REALTIME -c eth0 -w
ptp4l -i eth0 -m -H
#从钟
phc2sys -m -s eth0 -w
ptp4l -i eth0 -m -H -s

log中的内容为:

master offset : 即PTP协议中定义的主从端时间差,单位:ns
s0,s1,s2 : 表示时钟伺服器的不同状态,s0表示未锁定,s1表示正在同步,s2表示锁定,锁定状态表示不会再发生阶跃行同步,只是缓慢调整
freq:
port 0:INITIALIZING to LISTENING on INIT_COMPLET : 本地PTP管理的Unix域socket;
port 1:new foreign … : eno1上的端口;
从钟端口状态由UNCALIBRATED 变为SLAVE时,则从钟已经成功地与best master同步。
 

 运行时使用-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

参考文档:

(35条消息) 12 - 利用LinuxPTP进行时间同步(软/硬件时间戳) - 研一_Kujou的博客-CSDN博客_phc2sys

 (35条消息) LinuxPTP没那么简单_姚家湾的博客-CSDN博客_linux ptp驱动

(34条消息) Linux下交叉编译 linuxptp_heat.huang的博客-CSDN博客_linuxptp 交叉编译

(35条消息) PTP(Precision Time Protocol)高精度时间同步协议+CS模式测试代码_woswod的博客-CSDN博客_ptp协议

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yefei123123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值