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.
您好!
是否在 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 内部延迟的寄存器
到目前为止、我们仍然无法找到使 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 可以关闭。