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.

[参考译文] TDA4AL-Q1:[QNX]如何在 TDA4 CPSW2G-MAIN 接口上配置无物理层(MAC 到 MAC)模式和 RGMII 模式?

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1315828/tda4al-q1-qnx-how-to-configuration-phy-less-mac-to-mac-mode-on-tda4-cpsw2g-main-interface-with-rgmii-mode

器件型号:TDA4AL-Q1

您好!

  是否在 QNX 中支持无 PHY 模式?

  环境如下:

       TDA4AL SoC 中。

       QNX OS 7.1 (TI SDK)

       CPSW2G-MAIN 接口

       启动命令:

           io-pkt-v6-hc -o cpsw2g-main mac-to-mac=1、speed=100

       当我们尝试启动 an0 (具有无物理层 RGMII 模式的网络接口)时没有错误

      我们还在 Linux 环境上进行了测试。

      我们可以通过在 dtsi (fixed-link、speed=100、mode=rgmi-rxld)中设置 CPSW2G 模式来使其正常工作

      但在 QNX 中、我们不知道如何为 RGMII-rxld 配置应用类似的设置。

      请在 QNX SDK 7.1 + TDA4 AL 板中分享有关调整 RX 延迟的信息。

      谢谢你。

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

    您好!

    如果它在 QNX 中支持无 phy-less 模式?

    尽管该驱动程序定义了"mac 到 mac"参数、但  TI 尚未验证该驱动器在无 PHY 模式下的功能。 因此答案是"否"

     io-pkt-v6-hc -o cpsw2g-main mac-to-mac=1、speed=100[/quot]

    此注释有一个拼写错误。 希望您使用的是"-d"而不是"-o"。 此外、传递到 cpsw2g-main 的参数对于无 Phy 模式看起来是正确的。 但是、如上所述、 它还 未经验证、因为 TI-EVM 无法测试这一点。  

     请分享 QNX SDK 7.1 + TDA4 AL 板中有关调整 RX 延迟的信息。

    您能否向我们详细介绍一下此处提到的 RX 延迟是多少?

    谢谢。

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

    感谢您的反馈。  

    抱歉有关 io_pkt_v6_hc -o 的错字,这是我的错字。 正确的是-d、以用作您的注释  

    下面我将详细介绍定制电路板

    1.我们测试了 TDA4 (cpsw2g-main)-(RGMII)-交换机-另一个 MAC

        这适用于 Linux 和 QNX

    2.开关已移除。  
    TDA4 (cpsw2g-main)-(RGMII)-另一个 MAC

        这在 Linux 上有效、但在 QNX 上失败。  

      由于它在 Linux 上可用、我希望硬件在此配置上不会出现问题。  
      
        检查 Linux 配置、它被定义为"rgmII-rxid"+固定链路。 并且速度设置为100m/全双工。  

         我正在尝试用 Linux 复制相同的配置、并将其移植到 QNX

      但我不知道如何在 QNX 上设置它、从而使其与"RGMII-RAID" PHY 模式、固定链路  

    我在0x00104034的 J721S2 TRM 中找到一个启用 RGMII 内部延迟的寄存器

    • 默认情况下禁用 RGMII 内部延迟、我将其更改为启用
    • 如果有任何寄存器只能启用 RX 延迟、而不能启用 TX 延迟?

    到目前为止、我们仍然无法找到使 QNX RGMII Phy 减少工作的方法。  
    希望为我们提供一些分析/跟踪和修复的提示

    谢谢

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

    Eric、您好!

    感谢您提供更多详细信息。 如前所述、QNX 驱动程序尚未针对 Mac 到 Mac (无 PHY)模式进行完全验证、因此 QNX DEVNP 驱动程序很可能  缺少一些实现/更新。

    请注意、Linux 和 QNX 驱动程序并不相同、其实现方式因各自的网络堆栈而完全不同。 因此、将 Linux 设置与 QNX 进行比较是没有用处的。  如果可能、我们建议您将 Linux 驱动程序用于您的生产用例。

    如果您愿意在末端调试 QNX 驱动程序、请注意、完整的驱动程序源代码是 Processor SDK QNX 版本的一部分。

    我在0x00104034的 J721S2 TRM 中找到一个启用 RGMII 内部延迟的寄存器

    • 默认情况下禁用 RGMII 内部延迟、我将其更改为启用
    • 如果有任何寄存器只能启用 RX 延迟、而不能启用 TX 延迟?
    [/报价]

    该寄存器已由驱动程序处理。  有关此寄存器的设置方法,请参见 enetlld_if_utils.c 行1799中的 EnetIfBoard_cpsw2gMacModeConfig ()函数。

    如 TRM 中所述、这个寄存器有一个位4用于"RGMII 内部发送延迟"。 没有"RX delay"的设置。

    建议根据您的需要修改此函数 、以查看它是否有用。 此外、您也可以使用 QNX 提供的"IO"实用程序或使用作为 TI PSDK QNX 的一部分提供的"k3conf"工具来手动将所需值写入此寄存器。

    另一个建议是从正在工作的 Linux 驱动程序中转储寄存器、并与 QNX 转储进行比较、然后将其与 QNX 匹配以查看它是否起作用。

    谢谢。

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

    您好!

    感谢您的反馈

    1.我们不能在生产中使用 Linux、QNX 是因客户需求的关系。 因此我们必须让 Physless 工作。  

    2.正如你所描述的,enetlld_if_utils.c  行1799中的 enetIfBoard_cpsw2gMacModeConfig()函数完全是我昨天修改过的。 很遗憾、它对我的案例没有帮助。  

    3.我试图转储 Linux 寄存器并与 QNX 寄存器进行比较。 请列出与 RGMII 和 CPSW 相关的寄存器进行比较吗?  

    谢谢!

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

    您好!

    -1-明白。  

    -2-好的。 您是否检查  QNX 中的寄存器值0x00104034 (CTRL_MMR_CPSW2_ENET1_CTRL)与 Linux 相比是否相同?

    -3-请参阅 TRM 的 CPSW 章节,以查看 CPSW-MAIN 实例的列表。 此实例的基地址位于0x0C200000。 其他相关寄存器为0x00108094 (CTRL_MMR_CPSW2_CLKSEL)。  

    谢谢。

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

    您好!

    在下面的第2季度和第3季度回复:

    --- 2 --我已经检查了在 Linux 和 QNX 之间的寄存器值是相同的,它们都是0x02。

    (QNX 中的原始值为0x12、在 devup 驱动程序上更新后、该值更改为0x02、但在本例中没有帮助)

    ---- CPSW-MAIN 寄存器有很多寄存器在它的区域(0x0C200000 ~ 0x0C3FFFFF),这 将花费大量的 时间来做这件事,你能帮助限制寄存器的范围关键或我们必须注意这种情况吗?  

    BTW、我会尝试在 Linux 和 QNX 上转储所有这些文件、如果可能、进行比较、谢谢。

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

    好的、感谢让我们看 Q2。 ,

    对于 Q3、我们没有 可以共享的手动列表。 我们甚至会看一下 TRM。 但建议查看以下头文件、这些文件由 QNX DEVNP 驱动程序的低级 API 间接使用。 这些示例可在 SDK 路径中找到:
    ./psdkqa/pdk/packages/ti/csl src 452/ip_xge/v4/cslr_xge_cpsw.h
    ./psdkqa/pdk/packages/ti/csl src 45ip/xge/v4/cslr_xge_cpsw_ss_s.h   

    这是我们可以建议的最好的。

    谢谢。

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

    还不错,非常感谢你的建议。

    最后、我们发现根本原因在于 TI devnp 驱动程序。

    根据 J721S2的 API 指南,它描述了 Mac 到 Mac 的工作流程在驱动程序,我比较它与 devnp 驱动程序。

    驱动程序缺少以下步骤:

    因此、我将其添加到 enetlld_if_utils.c 中、然后我获得了最目标 MAC 响应我的 ARP 请求。 (在此之前、我从未得到 ARP 响应)

    然后、我尝试从目标 MAC 微调和 TX/RX 延迟... 很好!

    这可能是 TI 关于 devnp 驱动程序的问题、希望它对其他公司有所帮助。

    感谢您的帮助、TT 可以关闭。

x 出现错误。请重试或与管理员联系。