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.

[参考译文] DP83867IS:1 GiBit 上的 RX 错误(AM6548)

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/980452/dp83867is-rx-err-on-1-gibit-am6548

器件型号:DP83867IS
主题中讨论的其他器件:AM6548TMDX654GPEVM

您好!

我们有一个采用 AM6548的定制板、该板上总共有七个 DP83867 PHY。 一个用于 MCU CPSW、两个用于每个 PRUSS 实例。 PHY 的连接和自举大致相等- PHY 地址存在差异、MCU CPSW 在 XI/XO 上具有25MHz 石英、而 PRUSS PHY 在 XI 上具有25MHz 振荡器输入

MCU CPSW 接口在我们的 Linux 5.4中仅使用 RX 上的延迟(phy-mode ="RGMII-rxid")即可完美工作。

PRUSS 以太网接口不工作(相同的延迟设置):

*连接到千兆位交换机(TP-Link TL-SG1005D):链路 LED 亮起和熄灭,Linux 未报告链路启动。 解决方法:通过寄存器 CFG1位12、11强制使用千兆位主模式。

*任何传入数据都在 PHY 中记录为 RXERR 字节。

是否有任何调试寄存器或 PHY 拒绝接收到的数据包的原因?

此致、

Michael

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

    您好、Michael、

    正如您提到的轻微捆扎差异一样、您可以检查工作和非工作设置的寄存器0x6E 和0x6f、以确保二者按预期捆绑。 我希望这些值是相同的、因为您提到的唯一更改是 PHY 地址。  

    此外、您能否为寄存器0x0 - 0x1F 和0x32的工作中和非工作中的 PHY 提供寄存器转储。

    谢谢、

    Nikhil

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

    Nikhil、

    寄存器0x6E 和0x6f 确实相等。

    请找到所请求的寄存器转储。

    我以一个不工作的 PHY 为例、反对一个工作的 PHY。

    我已经标记了转储中的差异、以提高可读性。

    有趣的是、Eth5上不起作用的 phy 报告它甚至没有接收到链接代码字(寄存器0x06)。

    由于寄存器0x11中建议不同的 MDI/X 设置的差异、我已经尝试通过 ETH2上的寄存器0x10位6:5强制手动和 MDI-X、但它不会改变结果。

    此致、

    Michael

    e2e.ti.com/.../e2e_5F00_regdump_5F00_eth5_5F00_eth0.txt

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

    您好、Michael、

    以下是几个后续问题:

    所需的 MAC 接口是什么?

    2.工作用例和非工作用例中使用的电缆长度是多少?

    在 PHY 和处理器之间的连接引脚上、尤其是自举引脚上 、MCU CPSW 与  PRUSS 模块的内部拉电阻值是否存在差异?

    在非工作情况下、寄存器0x9 = 0x1A00、这不是默认值。 是否已执行任何写语句来设置此值? 将该寄存器返回值0x0300是否会使 PHY 返回到工作状态?

    谢谢、

    Nikhil

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

    您好、Nikhil、

    1) 1)所有 PHY 均作为 RGMII 进行连接。

    2) 2)我在测试工作/非工作的 PHY 时使用相同的电缆- 1m 长。

    3) 3)所有以太网引脚上的拉动设置都相同。

    4)是的、我需要在每个 PRU PHY 上将该寄存器写入0x1A00、以建立链路(CFG1、位12、11 -请参阅第一篇文章)。

    应该提到的是、我们使用的是 AM6548 SR2.0以及07.02.00.001中的以下固件文件:

    git.ti.com/.../ti-pruss 

    我想与 TI starterkit TMDX654GPEVM 进行比较、它具有相同的 DP83867 PHY 和 AM6548 SR1.0、并使用以下固件文件:

    git.ti.com/.../ti-pruss 

    PRG2以太网在该板上工作。

    此致、
    Michael

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

    您好、Michael、

    一些后续跟踪特定行项目:

    2.在其它电缆长度(例如10m 或20m)上是否也会出现此问题?

    4.谢谢澄清,我现在了解这项工作。  

    谢谢、

    Nikhil

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

    你(们)好,Nikhil

    我只有一根10米长的电缆可用。 自协商需要更长的时间、但最终是相同的:链路已建立、但数据包已丢弃。

    此致

    Michael

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

    您好、Michael、

    我们能否尝试近端和远端回送测试来帮助确定错误的来源? 有关环回模式的信息、请查看数据表中的第8.4.4节。 让我们尝试模拟回送和反向回送。 请告诉我是否在环回实验中观察到错误。 如果您需要有关设置环回模式的其他信息、请告诉我。

    谢谢、

    Nikhil

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

    你(们)好,Nikhil

    我想在设置和测试两种回送模式方面需要一些帮助。

    反向环回测试:  

    1.将寄存器0x16 (BOSCH)设置为0x0020 (设置位5)

    现在、我的 PC 使用 Wireshark 监视以太网接口上的数据包、并向器件的 IP 地址发送 ping 命令。 但 Wireshark 仅显示了用于询问谁拥有该 IP 地址的 ARP。

    您是如何测试此回送模式的?

    模拟环回测试:  

    1、禁止自协商:将寄存器0x00 (BMCR)设为0x0140 (清零位12)。

    2.禁用自动 MDI/X、强制手动 MDI:将寄存器0x10 (PHYCR)设置为0x5008 (位6:5至0x00)

    3.将寄存器0x00FE (LOOPCR)设置为0xE720。

    4.发出软件重启:设置寄存器0x1F (CTRL)、位14。

    如何测试此回送模式?

    然后、我为以太网接口分配一个 IP 地址、并尝试 ping 我的主机 PC。

    我在目标上有 tcpdump、但我不知道如何使用它

    谢谢、

    Michael

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

    您好、Michael、

    针对每个测试的一些附加说明:

    1、反向回送:写入0x0016 = 0x0020是正确的寄存器设置。 这应该是该测试所需的全部内容。 您是否可以访问 PHY 的 MII 引脚? 如果是、您能否确认在设置环回模式之前可以观察这些引脚上的 MII 数据? 让连接方在正常运行期间发送 PHY 数据并观察 RX_Data 引脚。  

    2.模拟回送:您有正确的步骤1-3。 第4步应设置模拟回路(寄存器0x16 = 0x0008)。 然后、步骤5将发出软复位(0x1F = 0x4000)。 对于此测试、PHY 必须连接到 MAC、并且 MAC 应设置为生成数据包、PHY 将将数据包循环回 MAC、MAC 应对数据包进行计数并显示没有错误。 MDI 对(电缆侧)应使用100欧姆差分阻抗进行端接。 如果端接不可用、则可以使用数字回路(设置寄存器0x16 = 0x0004)。 但是、模拟回路会使用 PHY 的所有模拟块、有助于完全确认 PHY 的 MDI 侧的功能。   

    请告诉我这是否有助于澄清近端回送的设置。

    谢谢、

    Nikhil

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

    您好、Nikhil、

    我将把一个示波器连接到 RGMII 引脚、并尝试按照您所述观察 RX 数据。
    下周再见!

    此致、

    Michael

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

    您好、Michael、

    感谢您的更新! 我将等待您的答复。

    谢谢、

    Nikhil

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

    您好、Nikhil、

    从 PC ping 期间、我监控 PHY 上的 RX_D0。 它具有1.8V 的空闲电平。 ping 每秒发送一次。

    在正常模式下、我可以每秒在示波器上看到数据(无需验证数据本身)。 仍然、ping 报告"主机无法到达"、并且在器件上"RX 数据包"和"RX 数据包丢失"会递增。

    1.反向回送:

    • 将寄存器0x16设置为0x0020后、看不到 RX 数据。 目标上的 RX 计数器不会增加。 PC 上的 RX 计数器增加、无错误或丢包。

    2.数字回送:对目标执行 Ping 操作。

    • 每秒观察 RX_D0上的数据。 TX 数据包计数器增加以及计数器"RX 数据包"和"RX 数据包丢失"。

    2.模拟回送:我仍在构建具有终端的 RJ45连接器。 将在可用时报告结果。

    由于到 目前为止 MII 端可以观察到数据、但被 Linux 拒绝、我们应该添加硬件(CPU/IP)本身还是 Linux 配置作为可疑配置吗?

    此致、
    Michael

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

    Nikhil、

    我能够启动并运行该接口!

    Ping 测试通过、iperf 测试通过(842 MBit/s)。

    感谢您的所有意见和解释。

    我发现 icssg-prueth Linux 驱动程序负责丢弃数据包:

    	new_skb = netdev_alloc_skb_ip_align(ndev, PRUETH_MAX_PKT_SIZE);
    	/* if allocation fails we drop the packet but push the
    	 * descriptor back to the ring with old skb to prevent a stall
    	 */
    	if (!new_skb) {
    		ndev->stats.rx_dropped++;
    		new_skb = skb;
    	} else {

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/net/ethernet/ti/icssg_prueth.c?h=ti-rt-linux-5.4.y#n569 ]

    我将当前的上行分支合并到本地 Linux 中(我有5.4.40、上行为5.4.93)、必须调整器件树中的 PHY 器件名称(例如):

    - pruss0_eth0_phy:ethernet-phy@1{
    + pruss0_eth0_phy:pruss0_phy0@1{

    然后数据最终在所有 6个 PRU 以太网端口上传输。 我无法确定修复该行为的确切承诺,但我想这是因为它准备了 Rx CHAN:
    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/drivers/net/ethernet/ti/icssg_prueth.c?h=ti-rt-linux-5.4.y&id=fed1c848fbc74d1c0688bb4b283c0cc7bb967d6f

    当与千兆交换机连接时、我仍然需要强制使用1000Base-T 主设备。 直接连接到 PC 的以太网端口时、我不需要 Mastermode。

    再次感谢

    Michael

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

    您好、Michael、

    很好、很高兴您现在有一个正常工作的系统! 感谢您确认问题已得到解决、并为我们将来的参考提供了全面的说明。 请随时联系我们、了解未来的任何问题。

    谢谢、

    Nikhil