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.

[参考译文] DP83825I:DP83825I:从模式通信时出现问题

Guru**** 2482105 points
Other Parts Discussed in Thread: DP83825I

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1428326/dp83825i-dp83825i-issue-at-slave-mode-communication

器件型号:DP83825I

工具与软件:

我们 正在 RMII 从配置中使用 TI DP83825I 以太网 PHY、其配备的 Ambarella CV25 SOC 运行 Linux 内核5.4。

通过以下设备树绑定配置、我们能够使以太网在 RMII 主模式下工作。 应根据电路板正确配置 pinctrls、电源和复位 GPIO。

DTSI:
mac0:以太网@e000e000{
      兼容="ambarella、eth";
      #address-cells =<1>;
      #size-cells =<0>;
      REG =<0xe000e000 0x2000>;
      interrupts =<0 58 0x4>;
      pinctrl-names ="默认值";
      pinctrl-0 =<&RMII_PINS>;
      PHY 模式="RMII";
      AMB、RCT-regmap =<&RCT_SYSCON>;
      AMB、SCR-regmap =<&scratchpad_SYSCON>;
      AMB、TX-Ring-Size =<32>;
      AMB、Rx-Ring-Size =<64>;
      AMB、IPC-TX;
      AMB、IPC-Rx;
      Amb、增强;
      AMB、AHB-12MHz-div =<5>;
      时钟名称="ptp_ref";
      Clocks=(&O);
};


DTS:
mac0:以太网@e000e000{
      状态="正常";
      pinctrl-0 =<&RMII_PINS &enet_2nd_ref_clk_pins_a>;
      PHY 模式="RMII";
      amb、tx-clk-invert;
      PHY@0{
        REG =<0>;
        PWR-GPIO =<&GPIO 94 0x1>;
        RST-GPIO =<&GPIO 35 0x0>;
        txen-skave-ps =<0>;
        rxdv-skyte-ps =<0>;
        rxd0-skyte-ps =<0>;
        rxd1-skyte-ps =<0>;
        rxd2-skyte-ps =<0>;
        rxd3-skyte-ps =<0>;
        txd0-skave-ps =<0>;
        txd1-skave-ps =<0>;
        txd2-skave-ps =<0>;
        txd3-skave-ps =<0>;
      };
};

我们无法使以太网在 RMII 从模式下工作、"eth0"接口使用 IP 地址但 ping 无效。

我们已在硬件配置中将 DP83825I 的"RX_D1"设置为"1"。 我们已确保为 TI DP83825I PHY 提供50 MHz 时钟以支持从操作。 此外、还为 MAC 提供了相同的50 MHz 时钟。

在从模式下配置时、我们将获得 ifconfig、ethtool 和 IP 命令的以下输出。

# ifconfig
eth0   Link encap:以太网 HWaddr 2E:35:4D:41:BF  
     iNet addr:192.168.1.250 Bcast:192.168.1.255  掩码:255.255.255.0
     上广播多播 MTU:1500 公制:1
     RX 数据包:0错误:0丢弃:0溢出:0帧:0
     TX 数据包:0错误:0丢弃:0溢出:0载波:0
     冲突:0 txqueuelen:1000
     RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
     中断:28

LO    Link encap:局部环回  
     iNet 地址:127.0.0.1 掩码:255.0.0.0
     运行 MTU:65536 公制:1的上环回
     RX 数据包:0错误:0丢弃:0溢出:0帧:0
     TX 数据包:0错误:0丢弃:0溢出:0载波:0
     冲突:0 txqueuelen:1000
     RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

# ethtool eth0
eth0的设置:
    支持的端口:[ TP MII ]
    支持的链接模式: 未报告
    支持的暂停帧使用:仅对称接收
    支持自动协商:否
    通告的链路模式: 未报告
    广播的暂停帧使用:否
    广播的自动协商:否
    速度:10MB/s
    双工:半双工
    端口:MII
    PHYAD:0
    收发器:内部
    自动协商:关闭
    当前消息级别:0x00000001 (1)
                DRV
    检测到链路:否
# IP A
1:低: MTU 65536 qdisc noqueue qlen 1000
  链接/回送00:00:00:00:00:00 BRD 00:00:00:00:00:00
  INET 127.0.0.1/8 范围主机
    VALID_LFT FOREVER PREFPTED_LFT FOREVER
2:eth0: MTU 1500 qdisc pfifo_fast qlen 1000
  Link/ether 2e:35:35:4D:41:bf brd ff:ff:ff:ff:ff:ff
  INET 192.168.1.250/24 BRD 192.168.1.255范围全局 noprefixroute eth0
    VALID_LFT FOREVER PREFPTED_LFT FOREVER


环回 ping 在从模式下正常工作:
# ping 127.0.0.1
Ping 127.0.0.1 (127.0.0.1):56个数据字节
64字节、从 127.0.0.1开始:Seq=0 TTL=64时间=0.132ms
从 127.0.0.1开始的64个字节:SEQ=1 TTL=64时间=0.049ms


您能否说明为了实现 RMII 从模式运行、需要对软件进行哪些 DTSI/DTS 更改?

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

    尊敬的 Dhruvish:

    Kernel v5.4上的 DP8382x.c 驱动器不支持通过 DTS 配置 RMII 主/从。

    RX_D1 ="1"时的器件配置(strap)足以设置 RMII 从模式、我怀疑启动时存在时钟或配置(strap)问题。

    您能否帮助确认:

    1) 1)在 PHY 和 MAC 输入时钟上看到50m

    2) 2) PHY 寄存器0x17[7]='1'

    对于 RMII 主模式下的工作案例、是否 更改了硬件 以实现正确的时钟配置? (为 PHY 提供25m 输入、为 MAC 发送50m 恢复时钟)

    谢谢!

    Evan

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

    尊敬的 Evan:  
    感谢快速响应。  

    是的、我们是能够在 PHY 和 MAC 上看到的50MHz 时钟。  
    2.我们无法使用 MDIO 读取任何电阻。  我们获得的每个电阻器的值均为0x0000。  

    3.我们的设备在主模式下工作正常。 我们从主机提供25MHz 时钟、50MHz 恢复时钟发送给 MAC。

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

    尊敬的 Dhruvish:

    1)感谢确认。

    2)我不清楚 MDIO 读取如何失败、因为系统可以绑定 PHY 驱动程序并使用 DTS 配置器件。 您能否分享用于寄存器访问的方法? 在引导期间、是否看到 DP83822驱动程序绑定? (dmesg | grep "MDIO")

    3) 3)在本例中、我怀疑 RMII 从模式的配置(strap)生效存在问题。 我们需要读取 PHY 寄存器0x17以确认通过 strap 配置来设置哪种模式。

    谢谢!

    Evan

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

    尊敬的 Evan:  
    请找到我对第2点和第3点的答复。  

    • 使用命令 dmesg | grep "MDIO"什么都不会出现
    • MDIO r eth0 0x0001:在 MDIO 中读取所有获得0x0000的值
    • MDIO r eth0 0x17:在 MDIO 中读取所有获得0x0000的值
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Dhruvish:

    在本例中、PHY 驱动程序未绑定、因此我不希望任何 DTS 配置生效。

    要对此进行调试、请帮助确认:

    • PHY 地址绑定到"0"
    • 在 启动期间、MDC/MDIO 信号会在处理器侧出现

    谢谢!

    Evan

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

    尊敬的 Evan:  
    我们测量的 PHY 地址被 strap 配置为"0"。

    我们无法捕获 MDC/MDIO 引脚上的任何信号。  

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

    尊敬的 Dhruvish:

    XI 上的50M 输入时钟是否正确为 PHY 供电?

    如果 PHY 正常工作、我预计在启动期间线路上会有一些 MDC/MDIO 事务。

    要确认这一点、请执行以下操作:

    • 在 PHY 侧共享 XI 的示波器范围
    • 确认 RX_D1 ="1" strap 配置生效
    • RBIAS 电阻器上的探头电压、大约~1V?

    谢谢!

    Evan

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

    尊敬的 Evan:

    • RXD1 ="0"、我们得到。 我们在硬件中添加了上拉电阻、但在启动 SOC 本身过程中使其停机。
    • 在启动期间、我们将在 MDIO 线路上看到一些事务。
    • 我们得到 RBIAS 电阻器上的电压= 0V。 但我们也在主器件中获得0V 电压。 主模式运转良好。
    • 请检查以下 phy 侧 XI 的示波器范围。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Amol:

    感谢您确认测试结果。

    如果 SoC 下拉 RXD1 strap 配置、则驱动器绑定和寄存器访问将失败、因为该器件默认进入 RMII 主模式、预计 XI 上的时钟为25M

    除非提供了相对于 RMII 主模式(25M)或从模式(50M)的兼容 XI、否则 PHY 无法运行。

    是否可以在 SoC 之前先为 PHY 供电、以确保 RX_D1在 SoC 将引脚驱动为低电平之前捆绑为高电平?

    谢谢!

    Evan

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

    尊敬的 Evan:

    我们尝试 在启动期间将 RXD1引脚设置为"1"。 我们也会探测信号并获得"1"、但经过一段时间后、它会变为"0"、因为同一个引脚将在以太网通信中用作 RXD1。 直到我们需要将该引脚保持在高电平以使其像捆扎一样?

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

    尊敬的 Amol:

    在电源轨斜升后、PHY 需要大约~250ms 来锁存 strap 配置值。

    要确认设置正确、请执行以下操作:

    • 使用的是3.3V 还是1.8V VDDIO?
    • 上电时引脚处的电压是多少(在 MAC 驱动为低电平之前)?
    • PHY 电源轨斜升后、MAC 驱动引脚为低电平之前需要多长时间?

    谢谢!

    Evan

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

    尊敬的 Evan:  


    我们已使用3.3V 作为 VDDIO。  

    在 MAC 将其驱动为低电平之前、我们在引脚上获得3.3V 的电压。  
    3. PHY 加电电源轨40ms 后、在 MAC 将其驱动为低电平之前、这将获得3.3V 电压。  
    根据您的建议、我们将尝试增加250ms 的延迟、并对其进行测试。  

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

    尊敬的 Dhruvish:

    感谢您的确认。

    期待看到 MAC 将引脚驱动为低电平的延迟增加的结果。

    谢谢!

    Evan

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

    尊敬的 Evan:

    我们绕过 SOC 引脚并监测搭接引脚  RXD1。 我们观察到 Phy 在40mS 后自行变为低电平。 您能进一步指导吗?

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

    尊敬的 Amol:

    我可能会被误认为在 PHY 开始驱动输出引脚之前的时序、但如果未连接 SoC、则应正确设置该自举。

    在这种情况下、您是否能够通过 MDC/MDIO 访问 PHY 寄存器?

    关键测试计划是:

    1) 1)验证 SoC 在启动时未将引脚驱动为低电平、以便器件正确配置(strap)至 RMII 从模式。  

    2) 2)读回 PHY 寄存器转储以确认 PHY 具有正确的通信配置

    谢谢!

    Evan

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

    尊敬的 Evan:

    请参阅以下对测试计划的回应  

    1) 1)我们已隔离从 SOC 到该 RXD1引脚的路径、并验证了 SOC 不会将该引脚驱动为低电平。 PHY 本身正在使它成为低电平。

    2) 2)我们尝试使用 MDC/MDIO 访问 PHY 寄存器、但未获得正确的数据。 我们尝试读取的每个寄存器都将获取0x00。

    您能否分享您对以下问题的看法?

    1)是否有使用 MDC/MDIO 读取 phy 寄存器的特殊命令? 我们有命令、但仍需交叉验证、请同时共享命令。

    2)您是否检查了您的终端的从模式通信? 这是否起作用?

    3) 3)请参阅下面随附的图。 我们移除了 R81来隔离 SOC 引脚。 在这种~下、RXD1引脚上只有上拉电阻、因此默认情况下该引脚应为高电平、但仅在35 μ s 40ms 内变为高电平、之后它变为低电平。

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

    您好!  
    我们使用以下附加的驱动程序。 请也选中此项。 是否需要对其进行任何升级或更改。  

     e2e.ti.com/.../0677.dp83822.c

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

    Hi Dhruvish、Amol、

    用于读取/写入工作板寄存器的命令(主模式)应正常工作。

    这里无需更改驱动程序即可进行调试-寄存器访问应独立于驱动程序工作。

    以下是两项有助于找出根本原因的附加检查:

    1) 1)请在启动期间探测 RX_D1上的电压。 该值应大于0.7xVDDIO、以便自举设置为高电平。 PHY 将引脚驱动为低电平之前的40ms 时间不是问题、在此期间设置了自举。

    2) 2)正在使用的 PHY 地址是什么? MAC 可能正在驱动 PHY 地址配置引脚(RX_D0、CRS_DV),您能否在寄存器读取期间通过其他 PHY 地址进行迭代以确认这是否是原因?

    谢谢!

    Evan

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

    尊敬的 Evan:

    我们  在上述驱动程序代码中没有看到 RCSR 位和 SOR1模式设置。 根据数据表、一些位负责此次更改的主模式和从模式设置(RCSR 位和  SOR1模式)。

    下面是数据表中的屏幕截图:

    如果不需要这些更改、您能帮助确认吗?  

     

    下面是 TI 的驱动程序代码链接、我们可以在其中看到此更改可用:

    github.com/.../dp83822.c

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

    尊敬的 Jenish:

    当器件通过 strap 配置进入 RMII 从模式时、这些位将在启动时更改为适合从模式的值。 由于 RMII 从模式下的50M 输入时钟是寄存器访问的先决条件、因此我们需要验证是否正在设置 strap 配置。

    这种情况下不需要更改驱动程序、因为 RMII 从/主模式在 启动时自举后不会发生变化。

    谢谢!

    Evan