Apex Xavier II+ PTP#
说明#
精确时间协议(PTP)是一种用于在整个计算机网络中同步时钟的协议。在局域网上,可实现纳秒级别的时钟精度。

准备工作#
准备工作-硬件链接#
准备两台设备:设备A和设备B,A设备为主设备(Master),B设备为从设备(Slave)。两台设备网口设置静态ip,通过网线直连,并可以相互ping通。如果网络链路上使用交换机或者路由器,需要交换机或者路由器也支持ptp协议。
准备工作-软件环境#
sudo git clone -b v4.1 git://git.code.sf.net/p/linuxptp/code linuxptp
cd linuxptp
sudo make
sudo make install
主从设备配置#
配置流程
master启动ptp4l服务 → master时间同步到网卡时钟 → slave把master时间同步到网卡时钟 → slave把网卡时钟同步到系统时钟
打开一个终端,执行以下命令:
sudo ptp4l -i eth1 -m -H --step_threshold 1.0
此命令用于启动ptp4l服务,此时master设备终端打印信息应该会如下图所示:

另开一个终端,执行以下命令:
sudo phc2sys -m -s CLOCK_REALTIME -c eth1 -w --step_threshold 1.0
此命令用于把master设备的系统时钟同步至网卡硬件时钟,此时该终端打印信息应该会如下图所示:

设备打开终端,执行以下命令:
sudo ptp4l -i eth1 -m -H -s --step_threshold 1.0
此命令用于把master时钟同步至slave时钟,此时该终端打印信息应该会如下图所示:

其中master offset就是master、slave设备之间的时间偏移量,单位:ns
另开一个终端,执行以下命令:
sudo phc2sys -m -s eth1 -w --step_threshold 1.0
此命令用于把slave设备的网卡时钟同步至系统时钟,此时该终端打印信息应该会如下图所示:

其中phc offset就是slave设备上网卡时钟、系统时钟的时间偏移量
功能验证#
测试流程
确认master时间 → 确认slave时间 → 修改master时间 → 确认slave时间被同步
查看master设备系统时间:
sudo timedatectl

查看slave设备系统时间:
sudo timedatectl

更改master设备系统时间
sudo date -s 12:12:12
此时可以看到,matser系统时间已经更改,见下图所示:

同时观察slave设备上的系统时间,等待大约30s,可以看到此时时间已经调整为master的系统时间。
sudo timedatectl
观察slave设备上的系统时间,可以看到此时时间已经调整为master的系统时间,如下图所示:

性能验证#
在从设备上打开终端,执行以下命令:
sudo ptp4l -i eth1 -m -H -s --step_threshold 1.0
此命令用于把master时钟同步至slave时钟,此时该终端打印信息应该会如下图所示:

其中master offset就是master、slave设备之间的时间偏移量,单位:ns
备注#
查看设备是否支持硬件PTP#
sudo ethtool -T ethX
ethX改成对应的网卡即可,此时会显示以下内容(以eth1为例):

如包含以下参数,即代表设备支持硬件PTP功能: SOF_TIMESTAMPING_SOFTWARE
SOF_TIMESTAMPING_TX_SOFTWARE
SOF_TIMESTAMPING_RX_SOFTWARE
SOF_TIMESTAMPING_RAW_HARDWARE
SOF_TIMESTAMPING_TX_HARDWARE
SOF_TIMESTAMPING_RX_HARDWARE
如果只包含以下参数,则代表设备不支持硬件PTP功能。
SOF_TIMESTAMPING_SOFTWARE
SOF_TIMESTAMPING_TX_SOFTWARE
SOF_TIMESTAMPING_RX_SOFTWARE