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.

[参考译文] DP83867CS:DS83867

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/897592/dp83867cs-ds83867

器件型号:DP83867CS

您好、先生、

我负责 TI DP83867以太网 PHY 工作的客户本周启动。

现在,我们可以在 Linux 中看到 eth0,但无法通过 ping 获得任何响应。

 

CLK_OUT 的频率为25MHz。

   由于 RGMII、它应该为125MHz。

   我们是否需要更改寄存器 IO_MUX_CFG (0x170)设置?

2. MDIO 似乎不起作用?

   回读 phy id (通过函数:get_phy_id ())始终为0。

   但从驱动程序中、它应该是0x2000a231。

   我不确定这是根本原因,因此 dp83867 (phy_driver)无法连接到 phydev->mdio.dev.driver。

   事实上,genphy_driver 已在函数:phy_attach_direct()中注册。

 

3.我检查源代码和规格、器件地址为0x1f。

   我应该将此地址分配给.dts 吗?

 

作为我的客户回应、TI 上周帮助其中一位客户在 Amba CV22芯片上启动了 DP83867。

请帮助我们找出根本原因。

 

===

这就是我要更改的内容:

 

内置的 Linux-4.14/drivers/net/phy/dp83867.c 内核

2.在.dts 中定义 mac0。

 

             mac0:以太网@e000e000{

                状态="ok";

                    pinctrl-0 =<&RGMII_PINs>;

                    /*amb、AHB-12MHz-div =<5>;*/

                    amb、TX-clk-invert;

                    /*amb、int-GTX-clk125;*/

                    /*amb、ext-ref-clk;*/

                    PHY-MODE ="RGMII";

                    PHY@0{

                       兼容="Eth以 太网-phy-IEEE802.3-C22";

                          reg =<31>;                            ß 我应该在这里分配31 (0x1f)吗?

                          RST-GPIO =<&GPIO 25 0>;

                          TI、Rx 内部延迟= ;

                          TI、TX 内部延迟= ;

                          TI、FIFO 深度= ;

                          ti、dp83867-rxctrl-strap -quirk;

                          Enet-phy-lane swap;

                    };

             };

 谢谢、Ian。

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

    尊敬的 Ian:

    您能否在引脚 Rx_d0和 Rx_D2 (phy_id 引脚)和 LED_0引脚(RGMII/SGMII 配置)上共享自举配置?  

    您在 Rx_clk 上看到了什么? 是否有一个晶体连接到 phy 或 XI 上的时钟来自外部时钟源?

    --

    此致、

    Vikram  

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

    您好、先生、

    您能否在引脚 Rx_d0和 Rx_D2 (phy_id 引脚)和 LED_0引脚(RGMII/SGMII 配置)上共享自举配置?

    [A]使用以太网 PHY 默认设置[00]。

    您在 Rx_clk 上看到了什么? 是否有一个晶体连接到 phy 或 XI 上的时钟来自外部时钟源?

    [A]从外部时钟源、PHY U53.32引脚 RX_CLK (ENET_CLK_GRX)连接到 CV25 U6.M1引脚 ENET_CLK_RX。

    谢谢、Ian。

     

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

    您好、先生、

    您是否愿意提供建议?

    谢谢、Ian。

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

    尊敬的 Ian:

    可能是上电序列问题。 您可以尝试以下操作:

    1.检查连接到 XI 的时钟在 PHY 的电源稳定之前是否已经稳定了? (建议情况)。

    如果没有、则在时钟稳定(25MHz)且 phy 功率打开后、请尝试使用 resetn 引脚重新设置 phy。

    查看是否正确读取了寄存器值。

    --

    此致、

    Vikram

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

    您好、Vikram、

    MDIO 现在可以工作,但仍然无法通过 ping 获得响应。

    电源 我是否需要更改寄存器0x0170设置? 外部时钟为25MHz。

    DP83867的 CLK_OUT 实际上是25MHz。

    现在、寄存器0x0170的[12:8]位为01100。

    我还转储一些寄存器作为参考。

    寄存器0x0170 = 0xc0d

    寄存器0x006E = 0x0。

    寄存器0x006F = 0x0。

    寄存器0x0032 = 0xD3。

    寄存器0x0010 = 0x5048

    寄存器0x0001 = 0x7949

    我们尝试寄存器0x0170的所有组合。

    除了0xC、所有设置(0x0 ~ 0xB)导致 CLK_OUT 输出125MHz。

    但我仍然无法通过 ping 获得任何响应。

    我还能做什么?

    谢谢、Ian。

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

    您好、Vikram、

    请帮助确认当前的 Linux 驱动程序设置? 也许我可以从外部添加上拉或下拉电阻。

    此外、请确认所有自举均为默认值[00]、RGMII 模式能否正常工作?

    谢谢、Ian。

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

    尊敬的 Ian:

    您无需在寄存器0x0170中写入任何内容即可使 ping 正常工作。 从寄存器0x0001中、我看不到器件通过铜缆与其他器件相连。 请发送以下信息:

    您的测试设置的方框图。

    2.链接伙伴的速度配置

    867处于自动协商模式还是强制速度模式?

    4.您能否尝试写入0x001F = 8000并在其前后共享0x0000、0x0001的寄存器值(在 ping 设置中)。

    --

    此致、

    Vikram

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

    您好、Vikram、

    您 不需要在寄存器0x0170中写入任何内容即可使 ping 正常工作。

    从寄存器0x0001中看不到该器件通过铜缆与其他器件相连。 请发送以下信息:

    ->

    0.1 我修改了驱动程序,不更改寄存器“0x0170”, DP 83867正在初始化日志,如下所示:

    ->

    [4.121484]   dp83867_config_init (218)

    [4.125230]   dp83867_config_init (237) DP83867_CFG4 = 4272

    [4.130696]   dp83867_config_init (243)

    [4.134470]   dp83867_config_init (261) DP83867_strap _STS2 = 0x0

    [4.140365]   dp83867_config_init (264) DP83867_strap _stS1 = 0x0

    [4.146134]   dp83867_config_init (272)

    [4.149859]   dp83867_config_init (276) DP83867_RGMIICTL = 0xd3

    [4.155829]   dp83867_config_init (295)

    [4.159554]   [Rodney_debug]:dp83867_config_init (312) 0x0010寄存器= 0x5048

    [4.166829]   [Rodney_debug]:dp83867_config_init (314) 0x0001寄存器= 0x7949

    [4.174107]   [Rodney_debug]:dp83867_config_init (318)读取 DP83867_IO_MUX_CFG (0x0170)= 0xc0e

    [4.182720]   dp83867_config_init (218)

    [4.186443]   dp83867_config_init (237) DP83867_CFG4 = 4144

    [4.191902]   dp83867_config_init (243)

    [4.195667]   dp83867_config_init (261) DP83867_strap _STS2 = 0x0

    [4.201562]   dp83867_config_init (264) DP83867_strap _STS1 = 0x0

    [4.207331]   dp83867_config_init (272)

    [4.211057]   dp83867_config_init (276) DP83867_RGMIICTL = 0xd3

    [4.217031]   dp83867_config_init (295)

    [4.220758]   [Rodney_debug]:dp83867_config_init (312) 0x0010寄存器= 0x5048

    [4.228036]   [Rodney_debug]:dp83867_config_init (314) 0x0001寄存器= 0x7949

    [4.235315]   [Rodney_debug]:dp83867_config_init (318)读取 DP83867_IO_MUX_CFG (0x0170)= 0xc0e

     

    0.2 修改后、结果为:

    Enet_CLK_GTX->25MHz  

    Enet_TX_EN->低电平(即使没有信号输出、也应该是高电平)

    ENET_TXD0/D1/D2/D3->低电平(即使没有信号输出、它也应为高电平)

     

    Enet_RXDV->低      电平(之前是 125MHz 的时钟信号)

    ENET_CLK_GRX->25MHz

    ENET_RXD0/D1/D2/D3->低电平(即使没有信号输出、它也应为高电平)

     

    CLK_OUT->25MHz

     

     

    测试设置的方框图。

    -> 如下图所示:

     

    2.链接伙伴的速度配置

      我们在自动协商、1G、100M、10M 速度下测试了链路合作伙伴。

     

    867处于自动协商模式还是强制速度模式?

      我们 在来自硬件设置配置和固件驱动程序的默认配置下、在83867上使用了自动协商模式。

     

    4您能否尝试写入0x001F = 8000并在其前后共享0x0000、0x0001的寄存器值(在 ping 设置中)。

    # phytool 读取 eth0/0x0/0x0001

    0x796d

    编号

    # phytool 读取 eth0/0x0/0x0000

    0x1140

    # phytool write eth0/0x0/0x001F 8000

    编号

    # phytool write eth0/0x0/0x001F 8000

    # phytool 读取 eth0/0x0/0x0001

    0x796d

    编号

    # phytool write eth0/0x0/0x001F 8000

    # phytool 读取 eth0/0x0/0x0000

    0x1140

     

    还有一个问题、

            TI-EVM 和客户开发板之间只有一种不同的自举配置、如下图所示。

          如果我们必须修改类似 TI-EVM 的硬件设置,以便默认 FW 驱动程序可以满足相应的硬件设置?

    谢谢、Ian。

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

    尊敬的 Ian:

    写入0x001F=8000后、我看到链接打开。 Reg0x0001[2]=1。 它之前是0。

    写入0x001F=8000后是否看到 ping?  

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

    您好、Vikram、

    写入0x001F=8000后、我们会看到链接。 Reg0x0001[2]=1。 它之前是0。

    写入0x001F=8000后是否看到 ping?

    ->Ping 命令在写入0x001F=0x8000后仍然失败

     

    ->日志如下所示:

    # phytool 读取 eth0/0x0/0x0000

    0x1140

    编号

    # phytool 读取 eth0/0x0/0x0001

    0x796d

    # phytool write eth0/0x0/0x001F 0x8000

    编号

    # phytool 读取 eth0/0x0/0x0000

    0x1140

    编号

    # phytool 读取 eth0/0x0/0x0001

    0x796d

    编号

    # ifconfig

    eth0     Link encap:以太网 HWaddr AA:EA:36:55:D6:2F

             iNet addr:192.168.0.200 Bcast:192.168.0.255 掩码:255.255.255.0

             运行多播 MTU:1500 公制:1的上广播

             RX 数据包:7896错误:0丢弃:0超限:0帧:0

             TX 数据包:6692错误:0丢弃:0超限:0载波:0

             冲突:0 txqueuelen:1000

             RX 字节:565174 (551.9 KiB) TX 字节:371212 (362.5 KiB)

             中断:28

     

    LO       链路环接:本地环回

             iNet addr:127.0.0.1 掩码:255.0.0.0

             正在运行 MTU:65536 公制:1的上环回

             RX 数据包:283错误:0丢弃:0超限:0帧:0

             TX 数据包:283错误:0丢弃:0超限:0载波:0

             冲突:0 txqueuelen:1000

             RX 字节:30640 (29.9 KiB) TX 字节:30640 (29.9 KiB)

     

    # ping 192.168.0.192

    ping 192.168.0.192 (192.168.0.192):56个数据字节

     

    --192.168.0.192 ping 统计信息--

    发送27个数据包、接收0个数据包、100%数据包丢失

    编号

     谢谢、Ian。

     

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

    您好、Vikram、

    关于 TMCH_CTRL (0x25)的另一个问题。

    在技术规格上、默认值应为0x400。

    但我发现如果我没有连接到 eth 电缆,则值为0x0,连接电缆后,值变为0xc1e1。

    这是正常的吗?

    谢谢、Ian。

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

    尊敬的 Ian:

    写入0x001F=8000后链路打开、但 RGMII 仍然不工作。

    让我们读取寄存器0x0032并查看 RGMII 的状态。 在 RGMII 模式下、位7应为1。 如果不是1、则让我们尝试将该位7写为1、并检查 RX_clk 是否开始以125MHz 切换。

    此外、请务必共享原理图、以便我可以查看硬件搭接并查看 LED_0引脚上连接的器件。

    --

    此致、

    Vikram

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

    尊敬的 Ian:

    否、它不会改变、它应该显示为0x0400。 您之前提到 MDIO 读/写有问题。 它是如何解决的? 它看起来只是寄存器读取写入问题。

    --

    此致、

    Vikram