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.

[参考译文] AM6442:将 DP83869HM SFD (TX/RX) 信号连接到 AM6442 ICSSG、用于 PTP (IEEE 1588) 硬件时间戳

Guru**** 2418520 points
Other Parts Discussed in Thread: AM6442, DP83869HM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1533425/am6442-connecting-dp83869hm-sfd-tx-rx-signals-to-am6442-icssg-for-ptp-ieee-1588-hardware-timestamping

器件型号:AM6442
Thread 中讨论的其他器件: DP83869HM

工具/软件:

您好 TI 专家、

我们使用的是 AM6442 SoC 一方 DP83869HM PHY 、生成 TX_SFD RX_SFD 支持 IEEE 1588 的脉冲 PTP(精确时间协议)
我们的目标是 时间戳以太网帧 使用中的这些 SFD 信号 ICSSG 子系统

配置:

  • 不同应用 ICSSG0 和 ICSSG1 以支持四个以太网端口。

  • SFD 信号 是通过 GPIO 从 PHY 输出(如 DP83869HM 数据表中所述)。

  • 我们计划将这些信号路由到 PRU 内核来通过 GPI 输入 用于帧时间戳。

我们的问题:

  1. 什么是 推荐的方法是将 DP83869HM 的 TX_SFD 和 RX_SFD 输出连接到 AM6442 的 ICSSG PRU GPI 引脚

  2. 我们怎么会这样呢 配置这些 PRU GPI 引脚 在中 器件树中 pinmux 以确保它们能够由 ICSSG 固件访问?

  3. 有任何问题 现有的 PRU 以太网固件 (如)prueth-fw或已支持的示例 通过 GPI 输入的外部时间戳输入 是否为 SFD 时间戳?

  4. 我们的最终目标是实现 准确的硬件时间戳 使用路由到 PRU GPI 引脚的 SFD 脉冲。

TI 的任何见解或建议都将非常有用。

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是 推荐的方法是将 DP83869HM 的 TX_SFD 和 RX_SFD 输出连接到 AM6442 的 ICSSG PRU GPI 引脚 ?

    您可以将其连接到 PRU_ICSSG0/1_PR1_EDC0/1_LATCH0/1_IN 引脚

    我们的最终目标是执行 准确的硬件时间戳 使用路由到 PRU GPI 引脚的 SFD 脉冲。

    ICSSG PRUETH 通过 MAC 侧时间戳支持 802.1AS。  AM243x MCU+ SDK: 可实现小于 100ns 级别同步抖动性能的以太网 TSN gPTP TimeReceiver(gPTP 从站)示例

    我会让其他同事对 Linux 支持发表评论

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

    您好 Pratheesh、

    感谢您的答复和澄清。

    为了进行确认、我们计划使用TX_SFDRX_SFD DP83869HM PHY 的和输出并分别连接到:

    • TX_SFD→PRG0_IEP0_EDC_LATCH_IN0(球 V1)

    • RX_SFD→PRG0_IEP0_EDC_LATCH_IN1(焊球 T1)

    我们的目标是使用通过 PRU GPI 引脚捕获的 SFD 脉冲来执行以太网帧的硬件时间戳。 我们的目标是基于 Linux 的系统、而不是 MCU+ SDK。

    我从您的消息中了解到 ICSSG PRUETH 支持 802.1AS 的 MAC 侧时间戳、但我们希望使用这些锁存器输入通过外部时间戳捕获实现更高的精度。

    请您帮助我们澄清以下内容:

    1. 如何配置 Linux 器件树中的 PRG0_IEP0_EDC_LATCH_IN0/1 引脚?
      是否有任何pinctrl示例或 IEP 绑定来启用这些作为时间戳捕获输入?

    mypruicssg0iep1_pins_default:mypruicssg0iep1-default-pins{
    pinctrl-single、pins =<
    AM64X_IOPAD (0x01a8、PIN_INPUT、2)/*(V1) PRG0_PRU0_GPO18.PRG0_IEP0_EDC_LATCH_IN0 */
    AM64X_IOPAD (0x017c、PIN_INPUT、2)/*(T1) PRG0_PRU0_GPO7.PRG0_IEP0_EDC_LATCH_IN1 */
    >;
    };

    1. 连接后、我们如何测试 IEP 计时器正在捕获 SFD 脉冲?
      是否有方法从 Linux 用户空间访问这些时间戳?  

    2. IEP 锁存机制是否可以集成或桥接至 Linux PTP 协议栈 ?

    任何示例或进一步的指针(尤其是对于 Linux 使用)都将非常有用。

    再次感谢您的支持!

    此致、

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

    我建议使用  PRG0/1_ IEP1 EDC_LATCH_IN0/。 我需要让 Linux 专家回答剩余的问题。

    连接后、我们如何测试 sfd 脉冲是否正在被 IEP 计时器捕获?
    是否有方法从 Linux 用户空间访问这些时间戳?  [/报价]

    IEP 中默认启用连续捕获模式。 因此、如果 pinmux 与时间同步路由器等一起配置、您应看到 IEP_CAP_STATUS_REG 更新了 HIT 状态。

    您可以从 CAP6 (Latch0)、CAP7 (Latch1) 上升/下降沿的 IEP_CAPR/F6/7_REG0/1 读取时间戳。

    TRM 中的 IEP_CAP_CFG_REG.CAP_EN 说明很模糊、这对于连续锁存模式不是必需的、但可以 通过读取 IEP_CAPR_STATUS_REG、仅在 CPU/PRU 确认后锁存下一个时间戳(然后,HIT 状态将在 IEP_CAP_STATUS_REG 中清除)

    以下主题可能很有用

    (+)【常见问题解答】如何将 PRU IEP 计时器与 Linux 系统时间同步? -处理器论坛 — 处理器- TI E2E 支持论坛

    (+) AM6442:内核间时间同步路由(在 A53 和 R5 之间)-处理器论坛 — 处理器- TI E2E 支持论坛

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

    您好 Pratheesh、

    感谢您的宝贵意见。 我有一些后续问题和说明、主要是为了更好地了解您的建议背后的原因以及如何在 Linux 下继续操作。

    1.为什么专门使用 IEP1?

    您建议使用PRG0/1_IEP1_EDC_LATCH_IN0/1 是否有偏好的技术原因 IEP1 需要多长时间 IEP0
    根据我的理解、IEP0 和 IEP1 在 ICSSG 上的功能相似、我想知道是否存在硬件路由或驱动程序限制、从而使 IEP1 更适合捕获 SFD 脉冲。

    2.器件树和引脚多路复用

    根据您描述的引脚多路复用、我在器件树中添加了以下行以路由 SFD 信号:

    DTS
    CopierModifier
    mypruicssg0iep1_pins_default: mypruicssg0iep1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x01f8, PIN_INPUT, 2) /* (P5) PRG0_PRU1_GPO18.PRG0_IEP1_EDC_LATCH_IN0 */ AM64X_IOPAD(0x01cc, PIN_INPUT, 2) /* (W5) PRG0_PRU1_GPO7.PRG0_IEP1_EDC_LATCH_IN1 */ >; };

    这些是否足以通过启用时间戳捕获IEP1? 或者是否需要除以外的其他配置pinctrl

    3.时间同步路由器的说明

    您提到:

    “如果将 pinmux 与时间同步路由器等一起正确配置…“

    我还不熟悉 时间同步路由器 (尤其是在的上下文中) 和 CAN-FD 等外部信号 物理连接到 SoC 焊球的热敏电阻(例如 W5 和 P5)。
    请您澄清一下:

    • 使用时、时间同步路由器的作用是什么 锁存输入引脚 直接?

    • 连接 SFD 信号时、是否需要进行时间同步路由器配置 用于锁存输入焊球的物理方法

    如果可能、您能否根据我的引脚多路复用配置提供示例或参考?

    4.在 Linux 中验证 SFD 时间戳

    您提到了 IEP_CAP_STATUS_REG 当信号被锁存时、将更新为命中状态、捕获的值将存储在中IEP_CAPR_F6/F7_REGx

    中是否有任何实用程序或 debugfs/sysfs 接口 组成部分 从用户空间读取这些值?
    或者我是否需要:

    • 写入内核模块以映射 IEP 寄存器。

    此致、

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

    您好:

    IEP0/IEP1

    我将离开 Pratheesh 来评论 IEP0/IEP1 问题。

    时间同步路由器:是否需要?

    您有很多问题。 首先我将讨论时间同步路由器、稍后我们可以讨论其他问题。

    我们关心从引脚到 IEP 计时器的信号。 如果引脚和 IEP 计时器之间存在直接连接、并且您没有任何引脚多路复用冲突、则不需要使用时间同步路由器。 但是、如果不存在直接信号连接、您可以对进入时间同步路由器的信号进行引脚多路复用、然后配置时间同步路由器以将信号发送到 IEP 计时器。

    有关更多信息、请访问 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1061474/faq-am64x-what-is-the-time-sync-router-for-how-do-i-use-it

    今晚我没时间了、因此我无法验证该引脚信号是否与 IEP 外设直接连接。

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    I will leave pratheesh to comment on IEP0/IEP1 问题。

    在 PRUETH 固件的上下文中 — IEP0 环绕计数器(每 1ms)、IEP1 是一个自由运行的 64 位计数器、是时间戳和转换的首选选项

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

    您好、Nick、

    非常感谢您对时间同步路由器的解释、这有助于阐明何时需要。
    根据您的解释、除非我遗漏了一些内容、否则我在中可以理解 在我的情况下、这是不需要的 连接后不久 外部信号 (DP83869HM 的 SFD) 直接连接到 SoC 引脚 映射到的对象 PRG0_IEP1_EDC_LATCH_IN0 和 LATCH_IN1 、没有多路复用冲突。

    只是为了清楚地说明:

    我想使用 DP83869HM 的 TX_SFD 和 RX_SFD 的输出 硬件时间戳 、以补偿 PHY 或 MAC 引入的延迟。
    我计划将它们连接到以下 SoC 引脚:

    • TX_SFDPRG0_PRU1_GPO18.PRG0_IEP1_EDC_LATCH_IN0(焊球 P5)

    • RX_SFDPRG0_PRU1_GPO7.PRG0_IEP1_EDC_LATCH_IN1(焊球 W5)

    我的目标是使用这些脉冲将时间戳锁存到中 ICSSG IEP1 模式。

    现在、我的问题是:

    1. 除了正确启用pinctrl-single,pins这两个焊球之外、器件树中是否需要任何其他配置? 例如:

    mypruicssg0iep1_pins_default: mypruicssg0iep1-default-pins { pinctrl-single,pins = < AM64X_IOPAD(0x01f8, PIN_INPUT, 2) /* P5: PRG0_IEP1_EDC_LATCH_IN0 */ AM64X_IOPAD(0x01cc, PIN_INPUT, 2) /* W5: PRG0_IEP1_EDC_LATCH_IN1 */ >; };
    1. 物理连接信号并应用引脚多路复用后、我接下来应该在 Linux 中做什么以确保处理锁存的时间戳?

    2. 是否有任何方法可以IEP_CAPR_F6/F7_REGxIEP_CAP_STATUS_REG从 Linux 用户空间测试或读取 IEP 锁存寄存器的内容(例如,,)?

    3. 我想逐步验证这个外部时间戳路径、因此非常感谢有关测试时间戳捕获的正确下一步的任何建议。

    再次感谢您的支持。
    此致、

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

    你好 Nadhem、

    我不太清楚您要做什么 — 您能提供更多信息吗?

    您是否正在获取 TI 的预构建 PRU 以太网固件并尝试向其提供输入信号?

    您是否使用自定义 PRU 固件编写了您自己的自定义以太网协议?

    你在 做别的什么?

    此致、

    Nick

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

    您好、Nick、

    我正在使用  TI 的预构建 PRU 以太网固件 、为其提供 SFD Tx 和 Rx 作为输入信号。

    此致、

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

    你好 Nadhem、

    让我与开发人员核实一下、看看当前软件是否支持您尝试执行的操作。 如果我在几个工作日内没有回复、请随时 ping 通该问题。

    此致、

    Nick

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

    您好、Nick、

    谢谢、我期待收到您的回答。

    此致、

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

    您好、Nick、

    我想检查 TI 的预构建 PRU 以太网固件当前是否支持将 SFD 信号用于 PTP 时间戳。 这对于我正在处理的硬件时间戳设置很重要。

    您是否碰巧知道这是否受支持、或者是否有任何计划?

    提前感谢、期待您的更新。

    此致、

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

    你好 Nadhem、

    我还在与开发人员交谈。 如果星期三没有再次回复、请 ping 通该线程。

    此致、

    Nick

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

    您好、Nick、

    是否有任何更新?

    此致、

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

    您好、Nick、

    希望您做得好。 只需跟进、因为距离您的上一条消息有一点点时间。 如果开发人员有任何更新、请告诉我。

    此致、

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

    你好 Nadhem、

    对不起这里的延迟,我上星期开始输入一个答复,然后拉其他地方,我可以完成.

    您需要何种抖动性能?  

    我们已经在 PTP 软件中实现了 Mac 级时间戳。 正如 Pratheesh 在上面讨论的、其抖动性能小于 100ns:
    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1533425/am6442-connecting-dp83869hm-sfd pTP-TX-rx-signal-to-am6442-icssg-for-pTP-IEEE-1588-hardware-timing/5896979 

    如果这符合您的需求,我建议使用 Mac 级别的时间戳,而不是定制的。

    预构建的 PRU 固件当前不支持 接收 RX_SFD 脉冲、通过 IEP 计数器为其添加时间戳、然后使用该值执行某种操作。  

    您可以执行一些操作来实现此类操作、但我们没有这类操作的软件支持。

    IEP0 由 PRU 以太网固件使用、但听起来 64 位 IEP1 当前未使用、并且可能已处于“ freerunning“模式。 因此、亲自对此进行编程的一种可能选择是编写 Linux 代码、以从 IEP1 锁存寄存器(以及用于控制 IEP 计数器的任何其他寄存器设置)读取捕获值。 如果您决定编写自己的代码来执行类似的操作、我们所能提供的帮助将受到限制。

    此致、

    Nick

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

    您好、Nick、

    感谢您的澄清。 需要明确的是、我们不希望实现任何自定义代码。 我们使用 TI 的预构建 PRU 以太网固件、并希望使用 DP83869HM 的 SFD 输出进行硬件时间戳处理。 如果不支持这种功能、我们想知道 TI 是否提供任何支持内部硬件时间戳 (IEEE 1588)、与 RGMII 兼容并支持 1G 光纤的以太网 PHY。 我找到了 DP83TG721x-Q1、但它似乎不支持光纤。 您有任何建议吗?

    此致、

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

    你好 Nadhem、

    您要为此用例评估 PRU 以太网是否有具体原因? 或者是否也可以选择 CPSW 以太网?

    您可以在此处找到 Linux CPSW 文档:
    https://software-dl.ti.com/processor-sdk-linux/esd/AM64X/11_01_05_03/exports/docs/linux/Foundational_Components Network/Kernel/Ethernet.html Kernel_Drivers

    PTP 信息位于 TSN 之下、CPSW > PTP。

    此致、

    Nick

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

    您好、Nick、

    感谢您提供信息和 CPSW 文档链接。

    我们使用 PRU 以太网主要是因为它的实时行为。 我执行了一些应力测试、并观察到与 PRU 以太网相比、CPSW 以太网的延迟通常更高。 此外、我们计划在两个 ICSSG 实例之间使用四个以太网端口、这样 PRU 以太网可以更方便地支持该端口。

    出于好奇心、TI 是否在负载或实时条件下对 CPSW 和 PRU 以太网固件进行了任何延迟比较?

    此致

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

    你好 Nadhem、

    我试图得到一些回答,你的问题在过去的几个帖子. 同时、您能否分享一下如何测试 CPSW 与 PRU 以太网的延迟?

    此致、

    Nick