This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DP83640:Linux 上的硬件 PTP 通信错误

Guru**** 2387080 points
Other Parts Discussed in Thread: DP83640
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1164219/dp83640-hardware-ptp-communication-error-on-linux

器件型号:DP83640

大家好、

我们客户的问题之一、我在下面转发、 您能否提供一些故障排除建议?  感谢您提出任何故障排除建议。

目前、我们使用 DP83640PHY 芯片在 Linux 端实现 PTP 协议、并且   使用 ptp4l 软件进行测试(指令:./ptp4l -i eth0 -m -H)时报告以下错误:

ptp4l[1970.968]:端口1:担任高级主角色
ptp4l[1971.969]:轮询 TX 时间戳时超时
ptp4l[1971.969]:增大 TX_TIMESTAMP_TIMEOUT 可能会纠正此问题、但它可能是由驱动程序错误导致的
ptp4l[1971.969]:端口1:发送同步失败

ptp4l[90.823]:端口1:检测到 FAULT_DETECTED (FT_UNspecified)时主器件出现故障
ptp4l[107.026]:端口1:侦听 INIT_COMPLETE 时发生故障
ptp4l[114.285]:端口1:在 Announce_receipt_timeout_expires 上侦听主设备

根据我们的电流测试、它没有在 DP83640驱动程序中调用以下函数

我们当前使用的主芯片是 stm32mp157

Linux 内核版本4.19

我是否可以知道如何解决此问题?  我们期待收到您的回复。

此致、

罗美

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amy、

    我建议客户使用 5.15内核驱动程序文件。 由于客户正在使用4.19内核、我们必须检查在后续版本中启用了哪些功能。

    下面是5.15 Linux 驱动程序的链接:
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/phy/dp83640.c?h=v5.15.74

    此致、
    Jason Lee

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jason、  

    以下 是 客户 反馈:

    感谢您的建议、我已经尝试过、但问题没有得到改善。 以下是我的一些尝试:

    1.我尝试使用5.15内核中的驱动程序,但在4.19内核中无法编译。

    2.我尝试降级到5.1内核中的驱动程序,我可以编译和使用此驱动程序,但测试结果保持不变。

    下面是一些有关使用环境的信息,这些信息可以帮助进行问题分析

    1、dp83640和 MAC 的通信接口为 RMII。

    2、当前使用的 dp83640可以是正常的网络通信。

    3、使用 PTP 硬件时间戳时存在上述问题。

    我对该驱动器有疑问:

    我们的硬件使用的通信接口是 RMII 接口、但驱动程序文件中描述的信息是 MII 接口。 这是否有问题?

    谢谢、

    Amy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amy、

    我们拥有的唯一驱动程序是5.15版;导入要求客户自行进行映射(手动添加5.15至4.19版中的所有函数、然后检查功能)、只需复制粘贴就不够;他们需要匹配所有内容。

    此致、

    Jason Lee

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jason、  

    以下 是 客户 反馈:

    感谢您的建议、我尝试 执行回移植 、但我发现这是驱动4.19内核的太大问题、我无法保证移植是正确的。

    当前版本仍为4.19

    然后、我对内核配置进行了一些调整、附件 是 我的内核配置文件

    3644.config.txt

    当前使用 ptp4l 进行测试时不会报告"ptp4l[1971.969]:port 1:send sync failed",但它会报告如下所示的新错误

    /ptp4l -i eth0 -m -H -f ./ptp4l.conf
    ptp4l[550.155]:选择/dev/ptp0作为 PTP 时钟
    ptp4l[550.372]:端口1:正在初始化以侦听 init_complete
    ptp4l[550.373]:端口0:正在初始化以侦听 init_complete
    ptp4l[557.582]:端口1:在 Announce_receipt_timeout_expires 上侦听主设备
    ptp4l[557.582]:选择本地时钟362530.FFFE.0a8d7e 作为最佳主器件
    ptp4l[557.582]:端口1:担任高级主角色
    ptp4l[563.590]:端口1:接收到无时间戳的 DELAY_REQ
    ptp4l[564.603]:端口1:接收到无时间戳的 DELAY_REQ
    ptp4l[565.609]:端口1:接收到无时间戳的 DELAY_REQ
    ptp4l[566.536]:端口1:接收到无时间戳的 DELAY_REQ
    ptp4l[566.622]:端口1:接收到无时间戳的 DELAY_REQ
    ptp4l[567.978]:端口1:接收到无时间戳的 DELAY_REQ
    ptp4l[568.608]:端口1:接收到无时间戳的 DELAY_REQ

    /ptp4l -i eth0 -m -H -s -f ./ptp4l.conf
    ptp4l[70.044]:选择/dev/ptp0作为 PTP 时钟
    ptp4l[70.261]:端口1:正在初始化以侦听 init_complete
    ptp4l[70.262]:端口0:正在初始化以侦听 init_complete
    ptp4l[77.233]:选择本地时钟8a6a12.FFFE.3f2e3c 作为最佳主器件
    ptp4l[82.387]:端口1:新的外部主控器362530.FFFE.0a8d7e-1
    ptp4l[83.386]:端口1:接收到无时间戳的同步
    ptp4l[83.896]:选择本地时钟8a6a12.FFFE.3f2e3c 作为最佳主器件
    ptp4l[84.386]:端口1:接收到无时间戳的同步
    ptp4l[85.386]:端口1:接收到无时间戳的同步
    ptp4l[86.386]:端口1:接收到无时间戳的同步
    ptp4l[86.403]:选择的最佳主时钟362530.FFFE.0a8d7e
    ptp4l[86.403]:端口1:侦听 RS_SLAVE 上的未校准
    ptp4l[87.386]:端口1:接收到无时间戳的同步
    ptp4l[88.386]:端口1:接收到无时间戳的同步
    ptp4l[89.387]:端口1:接收到无时间戳的同步
    ptp4l[90.387]:端口1:接收到无时间戳的同步
    ptp4l[91.387]:端口1:接收到无时间戳的同步

    我尝试修复:[patch 5.6 06/41] net:stmac:在 dwmac v5.10a 中为所需的 PTP 数据包启用时间戳快照- Greg Kroah-Hartman (kernel.org)

    但问题仍然存在。

    我期待你的答复,说明我如何解决这个问题。

    谢谢、  

    罗美

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amy、

    遗憾的是、我们的团队没有支持移植的特定专业知识;我们的最佳建议仍然是使用最新版本。  

    此致、

    Jason Lee