OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9209|回复: 7

[XILINX] zynq 7020以太网初始化找不到phy

[复制链接]

1

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-30
在线时间
6 小时
发表于 2021-7-14 16:03:07 | 显示全部楼层 |阅读模式
8金钱
本帖最后由 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");
                        }
                }
        }
}


最佳答案

查看完整内容[请看2#楼]

更新一下最终的结论。 联系客服返回维修的结论是Phy芯片RTL8211有问题,更换之后目前问题没复现。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-30
在线时间
6 小时
 楼主| 发表于 2021-7-14 16:03:08 | 显示全部楼层
更新一下最终的结论。
联系客服返回维修的结论是Phy芯片RTL8211有问题,更换之后目前问题没复现。
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-30
在线时间
6 小时
 楼主| 发表于 2021-7-14 18:52:11 | 显示全部楼层
本来想代码里面通过一个GPIO复位phy芯片,但是发现核心板直接把复位信号接到复位开关上了。die!

回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2021-7-14 19:44:38 | 显示全部楼层
那个日志貌似检测出来的不是RTL8211E芯片,你用的Vivado什么版本?
回复

使用道具 举报

0

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2018-10-22
在线时间
35 小时
发表于 2021-7-14 20:23:48 | 显示全部楼层
你看下串口打印的信息和正点提供的以太网例程如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芯片,如果这两项都排除的话,可以联系客服返修了
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-30
在线时间
6 小时
 楼主| 发表于 2021-7-15 10:16:16 | 显示全部楼层
鑫梦 发表于 2021-7-14 20:23
你看下串口打印的信息和正点提供的以太网例程如lwip的echo server实验文档中的串口打印信息有没有区别,正 ...

Vivado是2018.3,板子就是正点的,我试了连给的例程都跑不通。偶现了,一般板子一段时间不用,放几天就会出现,重启几次有可能好了
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2020-4-30
在线时间
6 小时
 楼主| 发表于 2021-7-15 10:26:18 | 显示全部楼层
QinQZ 发表于 2021-7-14 19:44
那个日志貌似检测出来的不是RTL8211E芯片,你用的Vivado什么版本?

Vivado是2018.3,问题就是这个,偶然连phy芯片都监测不到。问题出现后我试着把给的例程烧进去都不通。后面重启了几次又莫名其妙好了
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2021-7-15 10:45:54 | 显示全部楼层
淘宝上联系下技术支持吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 20:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表