芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 197|回复: 0

【Zynq】【Lwip】解决频繁打印link up/down、绿灯不亮、自协商结束后插入网线无反应的问题

[复制链接]

该用户从未签到

23

主题

29

帖子

218

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
218
发表于 6 天前 | 显示全部楼层 |阅读模式

如果在使用官方lwip模板时出现自动协商失败,请先查看该帖子:https://www.corecourse.cn/forum.php?mod=viewthread&tid=29166

也可以用本帖提供的源文件直接替换,也可解决自动协商失败问题


xilinx官方提供的 LWIP_ECHO 的demo(vivado2018.3版本),在使用的过程中还发现一些小问题,在此提供解决方法

1、以太网设置固定速率的时候,会频繁打印link up/link down

2、开发板网口与电脑端连接时,会出现绿灯不亮

3、网线先不插,等待自协商结束后,再插上会无反应

这里针对上面3个bug,在这里提供一些解决方法:

(1)报错现象与分析

问题1:固定速率问题

现象如下图所示,设置固定速率为1000M后,插上网线就会不断提示link up/link down

image.png

分析:

① 笔者观察到在以太网物理层链路建立过程中,每次网线重新插入后,PHY状态寄存器的bit2(通常表示链路状态)初始会持续一段时间为0,然后才稳定为1。

于是修改xadapter.c文件中的eth_link_detect函数,舍弃开始读取到的0,如果读者使用该方法还是出现link up/link down;可以加大舍弃次数,直到不出现!!

image.png

image.png

② 经过修改后,如下图所示,插上网线后会提示一次Ethernet Link !

image.png

如下图所示,拔出网线会提示一次Ethernet Link down,不再重复打印

image.png

问题2:绿灯不亮问题

现象如下图所示,开发板网口与电脑端连接时,会出现绿灯不亮

image.png

分析:

① 这里主要是EEE寄存器和Reg16寄存器配置不对

② 先关闭LED1、LED2的 EEE 指示,再配置Reg 16寄存器;(代码位于xemacpsif_physpeed.c文件,phy_setup_emacps函数中)

image.png

③ 设置Reg16寄存器

image.png

问题3:网线先不插,自协商结束后,插入会无反应

现象如下图所示,网线先不插,等待自协商结束后,再插上会无反应;

image.png

分析:

①笔者在调试中发现xemacps_control.c文件中,XEmacPs_SetOperatingSpeed函数里面有速率相关的断言;这里将其屏蔽即可。

②自协商失败后,再插入网线,也会尝试连接

image.png

(2)快速解决方法

① 将帖子下方提供的三个C文件下载下来

image.png

② 打开工程下的bsp文件夹,找到对应的文件目录,进行替换即可

image.png

image.png

文件下载:

xadapter.c

12.17 KB, 下载次数: 9

xemacps_control.c

39.82 KB, 下载次数: 9

xemacpsif_physpeed.c

35.29 KB, 下载次数: 11

回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-10-23 02:48 , Processed in 0.113845 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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