1.问题描述

本人使用的vivado版本时2019.1,此版本中的lwip版本为lwip211V1.0,虽然代码中已经有关于Realtek芯片的识别定义,但是点击自动识别还是显示phy setup error,借鉴了米联官方的改库教程之后终于成功解决自适应速度的问题。


2.未改库之前的自适应程序运行结果:

3.改库的步骤:

首先右键工程对应的BSP工程,点击board support package settings,然后勾选LWIP211_v_1_0,

然后选择Overview->standalone->lwip211,将temac_adapter_options中phy_link_ speed改为Autodetect。


返回对应的BSP工程,找到libsrc下的lwip211_v1_0,在其中找到xmacpsif _physpeed.c文件

将原有的get_Realtek_phy_speed函数全部注释或者删除,更换为米联提供的代码:

然后保存文件,BSP会自动进行编译。改库即可成功。

改库之后可以成功运行:

改库的代码如下:

static u32_t get_Realtek_phy_speed(XEmacPs *xemacpsp, u32_t phy_addr)
{
        u16_t temp;
        u16_t control;
        u16_t status;
        u16_t status_speed;
        u32_t timeout_counter = 0;

xil_printf("Start PHY autonegotiation \r\n");
        XEmacPs_PhyWrite(xemacpsp,phy_addr, IEEE_PAGE_ADDRESS_REGISTER, 2);
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_CONTROL_REG_MAC, &control);
        control |= IEEE_RGMII_TXRX_CLOCK_DELAYED_MASK;
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_CONTROL_REG_MAC, control);

XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_PAGE_ADDRESS_REGISTER, 0);
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_AUTONEGO_ADVERTISE_REG, &control);
        control |= IEEE_ASYMMETRIC_PAUSE_MASK;
        control |= IEEE_PAUSE_MASK;
        control |= ADVERTISE_100;
        control |= ADVERTISE_10;
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_AUTONEGO_ADVERTISE_REG, control);
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_1000_ADVERTISE_REG_OFFSET,
                        &control);
        control |= ADVERTISE_1000;
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_1000_ADVERTISE_REG_OFFSET,
                        control);
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_PAGE_ADDRESS_REGISTER, 0);
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_COPPER_SPECIFIC_CONTROL_REG,
                        &control);
        control |= (7 << 12); /* max number of gigabit attempts */
        control |= (1 << 11); /* enable downshift */
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_COPPER_SPECIFIC_CONTROL_REG,
                        control);
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_CONTROL_REG_OFFSET, &control);
        control |= IEEE_CTRL_AUTONEGOTIATE_ENABLE;
        control |= IEEE_STAT_AUTONEGOTIATE_RESTART;
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_CONTROL_REG_OFFSET, control);
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_CONTROL_REG_OFFSET, &control);
        control |= IEEE_CTRL_RESET_MASK;
        XEmacPs_PhyWrite(xemacpsp, phy_addr, IEEE_CONTROL_REG_OFFSET, control);
        while (1) {
                XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_CONTROL_REG_OFFSET, &control);
                if (control & IEEE_CTRL_RESET_MASK)
                        continue;
                else
                        break;
        }
        XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_STATUS_REG_OFFSET, &status);
        xil_printf("Waiting for PHY to complete autonegotiation.\r\n");
        while ( !(status & IEEE_STAT_AUTONEGOTIATE_COMPLETE) ) {
                sleep(1);
                XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_COPPER_SPECIFIC_STATUS_REG_2, &temp);
                timeout_counter++;
                if (timeout_counter == 30)
                {
                        xil_printf("Auto negotiation error \r\n");
                        return 0;
                }
                XEmacPs_PhyRead(xemacpsp, phy_addr, IEEE_STATUS_REG_OFFSET, &status);
        }
        xil_printf("autonegotiation complete \r\n");
        XEmacPs_PhyRead(xemacpsp, phy_addr,0x1A, &status_speed);
        if ( (status_speed & 0x30) == 0x20)/* 1000Mbps */
                return 1000;
        else if ( (status_speed & 0x30) == 0x10)/* 100Mbps */
                return 100;
        else if ( (status_speed & 0x30) == 0x00)/* 10Mbps */
                return 10;

return XST_FAILURE;
}

米联ZYNQ7Z020系列的以太网网口芯片RTL8211FD自适应速度的问题相关推荐

  1. RTL8211D(I)业级网口芯片bsp自适应修改

    XILINX官方默认的lwip bsp驱动暂时不支持RTL8211网口芯片,在使用该网口的时候需要自己手动修改库文件以支持该芯片,不同版本工具之间的修改方式大同小异,这边仅以Vitis 2019.2为 ...

  2. 基于米联客MA703FA开发板的MicroBlaze LWIP千兆以太网例程

    Xilinx FPGA MicroBlaze使用AXI 1G/2.5G Ethernet Subsystem(= Tri Mode Ethernet MAC + AXI Ethernet Buffer ...

  3. 米联客udp_stack以太网协议栈使用教程

    实验室有一块米联客出的Kintex-7的板子,被我用来做毕业设计,其中使用到了千兆以太网的外设,于是打算使用米联客自己教程中所使用的协议栈来开发千兆以太网通信,接着就接触到了米联客的教程udp_sta ...

  4. w ndows相机控制协议,米联客(MSXBO)USB3.0 UVC摄像头实现基于FT602Q芯片方案

    硬件平台:适用XILINX 7系列FPGA(没有USB3.0接口的开发板需要购买FEP USB3.0子卡) 米联客(MSXBO)技术社区: www.uisrc.com 欢迎大家给我提问!! 米联客技术 ...

  5. 米联客资料笔记FPGA篇EDA先锋工作室官方DOC常用TestBench模板Vivado基本使用

    文章目录 背景 一.米联客verilog篇笔记 1.为什么要推出vivado 2.状态机,软核的理解 3.always @的含义与 @() 4.条件运算符 5.阻塞逻辑和非阻塞逻辑混用 二.xilin ...

  6. 米联客 ZYNQ/SOC 精品教程 S02-CH29 基于TCP的QSPI Flash bin文件网络烧写

    软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...

  7. 米联客 ZYNQ/SOC精品教程 S01-CH04 VIVADO创建工程之流水灯

    软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...

  8. 米联客 ZYNQ/SOC 精品教程 S02-CH24 利用AXI VDMA 实现MT9V034摄像头采集

    软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...

  9. 基于zynq的千兆网udp项目_米联客 ZYNQ/SOC 精品教程 S05-CH05 PS 千兆 UDP 加速

    软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...

  10. 米联客 ZYNQ/SOC精品教程 S01-CH07 FPGA多路分频器实验

    软件版本:VIVADO2017.4 操作系统:WIN10 64bit 硬件平台:适用米联客 ZYNQ系列开发板 米联客(MSXBO)论坛:www.osrc.cn答疑解惑专栏开通,欢迎大家给我提问!! ...

最新文章

  1. FPGA黑金开发板mini版新鲜出炉!!!
  2. 设计模式复习-代理模式
  3. 3种骚操作,教你查看 Java 字节码!
  4. mysql实际项目中使用多长时间_存储过程在实际项目中用的多吗?
  5. 深度学习之自编码器(4)变分自编码器
  6. 【记录】利用jar包制作docker镜像
  7. Spring入门学习手册 6:Spring MVC基础中的基础
  8. python类属性用法总结
  9. Atitit  hre框架v5 新特性  HREv5
  10. RedHat 7配置KVM和桥接
  11. 主流服务器虚拟化技术厂商,各大服务器厂商虚拟化技术剖析
  12. 敏捷开发模式下SDL实践
  13. Cadence PSpice 仿真5:运放噪声仿真实战图文教程
  14. ResponseEntity总结
  15. YOLOv5基础知识点——卷积神经网络
  16. P1419 寻找段落
  17. rand()函数产生随机数
  18. JAVA毕设项目公立医院绩效考核系统(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
  19. 计算机毕业设计ssm宠物领养平台16e63系统+程序+源码+lw+远程部署
  20. 压力变送器使用前要怎样校验呢

热门文章

  1. 手机指纹识别测试软件,指纹测算-指纹照相机 扫描识别指纹评分
  2. flutter版本升级
  3. 仿京东的注册页面, 使用jQuery进行表单验证
  4. 周鸿祎说:编程能力比马化腾强,不如雷军。你怎么看?
  5. 为什么顶级程序员都有超强逆商?顶级程序员马化腾在艰难的时候,是如何度过的?
  6. QScrollArea 动态添加控件问题
  7. win10时间线时间轴(Timeline)如何关闭隐藏?
  8. androidmmi可以卸载吗_删除Android自带的系统软件注意事项
  9. ciscotftp服务器(ciscotftp服务器下载)
  10. java手机飞信_手机飞信JAVA通用版 手机飞信2011通用版