OpenEdv-开源电子网

标题: zynq 7020以太网初始化找不到phy [打印本页]

作者: ziqiao    时间: 2021-7-14 16:03
标题: zynq 7020以太网初始化找不到phy
本帖最后由 ziqiao 于 2021-7-14 16:08 编辑

正点原子zynq 7020的核心版,PHY芯片是Realtek RTL8211E,用了一段时间,代码未改动,出现以太网连不上的问题,定位发现detect_phy发现不了PHY口;
硬件未改动,代码未改动,偶然又能发现phy,又连的上了,目前偶现。有点怀疑PHY芯片的问题,不知道这里有没人遇到过,求解答。

总共三块核心板,目前有两块出现了这个问题,一块正常;代码都一样,让我有点怀疑核心板硬件质量;

lwip网口日志WARNING: Not a Marvell or TI or Realtek Ethernet PHY. Please verify the initialization sequence

代码位置
xemacpsif_hw.c 文件 110行
void init_emacps(xemacpsif_s *xemacps, struct netif *netif)
{
        XEmacPs *xemacpsp;
        s32_t status = XST_SUCCESS;
        u32_t i;
        u32_t phyfoundforemac0 = FALSE;
        u32_t phyfoundforemac1 = FALSE;

        xemacpsp = &xemacps->emacps;

        detect_phy(xemacpsp);
        for (i = 31; i > 0; i--) {
                if (xemacpsp->Config.BaseAddress == XPAR_XEMACPS_0_BASEADDR) {
                        if (phymapemac0 == TRUE) {
                                link_speed = phy_setup_emacps(xemacpsp, i);
                                phyfoundforemac0 = TRUE;
                                phyaddrforemac = i;
                        }
                } else {
                        if (phymapemac1 == TRUE) {
                                link_speed = phy_setup_emacps(xemacpsp, i);
                                phyfoundforemac1 = TRUE;
                                phyaddrforemac = i;
                        }
                }
        }

}
void detect_phy(XEmacPs *xemacpsp)
{
        u16_t phy_reg;
        u32_t phy_addr;
        u32_t emacnum;

        if (xemacpsp->Config.BaseAddress == XPAR_XEMACPS_0_BASEADDR)
                emacnum = 0;
        else
                emacnum = 1;
        for (phy_addr = 31; phy_addr > 0; phy_addr--) {
                XEmacPs_PhyRead(xemacpsp, phy_addr, PHY_DETECT_REG,
                                                        &phy_reg);

                if ((phy_reg != 0xFFFF) &&
                        ((phy_reg & PHY_DETECT_MASK) == PHY_DETECT_MASK)) {
                        /* Found a valid PHY address */
                        LWIP_DEBUGF(NETIF_DEBUG, ("XEmacPs detect_phy: PHY detected at address %d.\r\n",
                                                                                                                                        phy_addr));
                        if (emacnum == 0)
                                phymapemac0[phy_addr] = TRUE;
                        else
                                phymapemac1[phy_addr] = TRUE;

                        XEmacPs_PhyRead(xemacpsp, phy_addr, PHY_IDENTIFIER_1_REG,
                                                        &phy_reg);
                        if ((phy_reg != PHY_MARVELL_IDENTIFIER) &&
                                (phy_reg != PHY_TI_IDENTIFIER) &&
                                (phy_reg != PHY_REALTEK_IDENTIFIER)) {
                                xil_printf("WARNING: Not a Marvell or TI or Realtek Ethernet PHY. Please verify the initialization sequence\r\n");
                        }
                }
        }
}



作者: ziqiao    时间: 2021-7-14 16:03
更新一下最终的结论。
联系客服返回维修的结论是Phy芯片RTL8211有问题,更换之后目前问题没复现。
作者: ziqiao    时间: 2021-7-14 18:52
本来想代码里面通过一个GPIO复位phy芯片,但是发现核心板直接把复位信号接到复位开关上了。die!


作者: QinQZ    时间: 2021-7-14 19:44
那个日志貌似检测出来的不是RTL8211E芯片,你用的Vivado什么版本?
作者: 鑫梦    时间: 2021-7-14 20:23
你看下串口打印的信息和正点提供的以太网例程如lwip的echo server实验文档中的串口打印信息有没有区别,正点文档中的串口打印信息没有那个Warning,而那个Warning表明当前的sdk中的phy驱动不支持核心板上的PHY芯片。你首先确认下使用的核心板是不是正点的,或者确认下核心板上的以太网PHY芯片是不是Realtek RTL8211E,正点使用的Realtek RTL8211E PHY芯片属于Realtek ,理应是不会出现那个Warning的,如果确认核心板上的以太网PHY芯片是Realtek RTL8211E的话,看下使用的Vivado版本是不是2018.3版本的,其他版本的Vivado对应的SDK可能不支持Realtek RTL8211E PHY芯片,如果这两项都排除的话,可以联系客服返修了
作者: ziqiao    时间: 2021-7-15 10:16
鑫梦 发表于 2021-7-14 20:23
你看下串口打印的信息和正点提供的以太网例程如lwip的echo server实验文档中的串口打印信息有没有区别,正 ...

Vivado是2018.3,板子就是正点的,我试了连给的例程都跑不通。偶现了,一般板子一段时间不用,放几天就会出现,重启几次有可能好了
作者: ziqiao    时间: 2021-7-15 10:26
QinQZ 发表于 2021-7-14 19:44
那个日志貌似检测出来的不是RTL8211E芯片,你用的Vivado什么版本?

Vivado是2018.3,问题就是这个,偶然连phy芯片都监测不到。问题出现后我试着把给的例程烧进去都不通。后面重启了几次又莫名其妙好了
作者: QinQZ    时间: 2021-7-15 10:45
淘宝上联系下技术支持吧




欢迎光临 OpenEdv-开源电子网 (http://47.111.11.73/) Powered by Discuz! X3.4