芯路恒电子技术论坛

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

【Lwip】【vivado2018.3】LwIP 2.0.2库移植及PHY驱动适配优化

[复制链接]

该用户从未签到

24

主题

30

帖子

238

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
238
发表于 2024-10-28 14:57:36 | 显示全部楼层 |阅读模式

开发环境:

  • vivado 2018.3
  • lwip-2.0.2 源码
  • ACZ702 v2.0开发板

本文主要介绍如何下载LwIP网络协议栈并将其移植到项目中。在使用Xilinx平台时,开发者可能会遇到PHY芯片适配问题,因为Xilinx官方提供的PHY驱动可能与实际使用的芯片不兼容。虽然可以在BSP文件夹中修改PHY相关代码来解决这个问题,但每次更新Vivado工程时,BSP都会被重新生成,之前的修改也会被覆盖。为了避免重复工作,本文将介绍一种更好的解决方案。

注意: 帖子只是简单介绍,更加详细的操作流程,请在下方下载pdf文档!

1、前提

从官方下载lwip-2.0.2 源码:Index of /releases/lwip/

image.png

2、移植

LwIP2.0.2移植可以参考xilinx官方LwIP_Echo例程中的bsp/lwip文件夹下的makefile文件,进行删减文件和分析哪些文件是必须使用的。

(1)删除与整理文件夹

为了优化工程结构并减少不必要的代码,我们需要对下载的 LwIP 源码进行精简。LwIP 源码包含了大量文件,但在实际应用中我们只需要其中一部分。具体步骤如下:

①进入下载好的 LwIP 源码目录

②仅保留 src 文件夹,删除其他非必需文件夹

image.png

③src 文件夹包含了我们所需的核心代码:

  • 协议栈核心代码
  • 网络接口驱动
  • 必要的头文件

同时,为了进一步简化目录结构,我们将src文件夹中的所有文件移动到其父目录下,然后删除空的src文件夹。这样的扁平化结构更加清晰易用。

image.png

LwIP 源码中的 apps 文件夹包含了 HTTP、SNMP、MQTT 等应用层协议的实现。由于当前项目仅需要基础的网络功能,无需使用这些上层协议,因此可以直接删除 apps 文件夹,使项目结构更加精简。

image.png

(2)将LwIP添加到sdk工程

现在以ACZ702开发板进行演示(其他ZYNQ开发板操作类似)创建一个空工程,在sdk中创建Lwip_Lib文件夹,将上面整理好的源码移动进去,再将contrib文件夹也移入其中;

继续修改:

① 修改sys.h

找到sys.h头文件,在54行添加上:

typedef u32_t sys_prot_t;

image.png

② 删除slipif.c文件

slipif.c 是用于实现 SLIP (Serial Line Internet Protocol, 串行线路网际协议) 接口的代码,我们在ZYNQ平台上用的是RGMII/以太网,所以不需要该文件,删除它。

image.png

③ 修改 sys_arch_raw.c

打开sys_arch_raw.c文件在开头添加下面代码:

// 在sys_arch_raw.c开头添加
#include "xil_exception.h"  // 包含Xilinx的异常处理头文件

image.png

(3)contrib文件夹

conrtib文件夹中主要包含了底层驱动代码。对于Zynq平台来说,Xilinx已经提供了完整的MAC驱动实现,我们只需要关注PHY部分的适配。(Zynq PS端的GEM控制器)

(4)src文件夹

将提供的config_linkspeed.h、echo.c、main.c、platform_config.h、platform_zynq.c、platform.h文件移动到工程中的src文件夹下,自动编译后下载到开发板即可。

其中,config_linkspeed.h文件主要是配置固定速率还是自协商,以及自协商的速率。如下图所示,将CONFIG_LINKSPEED设置为0为自动协商模式,设置1000为固定千兆模式,设置100为固定百兆模式,设置10为固定十兆模式。

image.png

上文主要简单介绍了,如何下载lwip源码,以及移植;更加详细的在vivado2018.3中的操作,请下载下面文档阅读,以及下载移植好的程序!

3、PHY适配

可以参考下面这些帖子

【Zynq】【Lwip】解决频繁打印link up/down、绿灯不亮、自协商结束后插入网线无反应的问题 https://www.corecourse.cn/forum.php?mod=viewthread&tid=29789

【Zynq】【Lwip】解决使用官方lwip模板时自动协商失败的问题 https://www.corecourse.cn/forum.php?mod=viewthread&tid=29166 (出处: 芯路恒电子技术论坛)

文档与工程下载

基于ZYNQ平台的LwIP 2.0.2库移植及PHY驱动适配优化.pdf

2.43 MB, 下载次数: 722

LwIP_Echo.zip

14.74 MB, 下载次数: 555

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 14:36 , Processed in 0.117504 second(s), 34 queries .

Powered by Discuz! X3.4

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

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