0

我有以下测试台

掌握

TQMLS1028A-IND

它只有硬件时间戳操作系统,

ID="poky"
NAME="Poky (Yocto Project Reference Distro)"
VERSION="3.0.4 (zeus)"
VERSION_ID="3.0.4"
PRETTY_NAME="Poky (Yocto Project Reference Distro) 3.0.4 (zeus)"

它有 ptp4l 2.0 版

奴隶

PC 它只有软件时间戳操作系统:

NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

我正在为主人使用这个命令

taskset -c 1 chrt 99 ptp4l -i eno1 -mq

此命令用于从站

sudo taskset -c 1 chrt 99 ptp4l -S -i enp3s0f1 -mq -s

它给了我非常高的主偏移、频率和路径延迟值,它在 MASTER_CLOCK_SELECTED 上进入状态 s2 SLAVE,但仅持续几秒钟。它给出了以下错误

ptp4l[7632.725]: master offset 1611850007215613701 s2 freq +100000000 path delay  17013783
ptp4l[7633.625]: master offset 1611850007110097044 s2 freq +100000000 path delay  22519248
ptp4l[7634.525]: clockcheck: clock jumped forward or running faster than expected!
ptp4l[7634.525]: master offset 1611850010370484934 s0 freq +100000000 path delay  22519248
ptp4l[7634.525]: port 1: SLAVE to UNCALIBRATED on SYNCHRONIZATION_FAULT
ptp4l[7635.425]: master offset 1611850010270476347 s0 freq +100000000 path delay  22519248
ptp4l[7636.325]: master offset 1611850010167504974 s0 freq +100000000 path delay  25493617

git的linuxptp存储库中有一些配置文件,我尝试使用gPTP.cfg文件来配置ptpt4l,使用命令For Master

taskset -c 1 chrt 99 ptp4l -f gPTP.cfg -i eno1 -mq

对于奴隶

sudo taskset -c 1 chrt 99 ptp4l -S -f gPTP.cfg -i enp3s0f1 -mq -s

但这是最糟糕的,因为SLAVE根本不尝试同步

ptp4l[8748.087]: selected local clock b82a72.fffe.9ac430 as best master
ptp4l[8751.360]: selected local clock b82a72.fffe.9ac430 as best master
ptp4l[8754.814]: selected local clock b82a72.fffe.9ac430 as best master

我不确定问题是因为它们具有不同的时间戳,还是我必须提供任何配置文件或参数。

你能帮忙吗?

先感谢您

4

1 回答 1

1

此问题已通过以下方式解决

  1. 关闭两个系统中的 NTP 服务
       timedatectl set-ntp false
       sudo systemctl stop systemd-timedated.service
       sudo systemctl stop systemd-timesyncd

  1. 用如下命令同步网卡中的时间,eno1为接口。请注意这一点,因为 NIC 的时间可能与系统时钟的时间不同,并且可能会产生问题。考虑到eno1是您在哪里进行同步的接口
        phc2sys -c eno1 -O 0 -w -m -s CLOCK_REALTIME
  1. 打开 phc2sys 使系统时钟与接口的 ptp 时钟同步
         phc2sys -s eno1 -m -w
  1. 在master中开启ptp4l
          ptp4l -i eno1 -mq -2
  1. 在slave端开启ptp4l
           ptp4l -S -i enp3s0f1 -mq -s -2

ptp4l中的选项-2(IEEE 802.3或以太网),可以改为-4(UDP IPV4)或-6(UDP IPV6)

于 2021-02-03T12:19:25.050 回答