zynq linux ip配置,ZYNQ+linux网口调试笔记(2)PS-GEM1

这篇博客详细记录了在ZYNQ平台上配置和调试PS-GEM1网口的过程。作者首先介绍了开发环境和目标,然后讨论了ZYNQ网口硬件资源和预备知识。在验证硬件和hdf文件无误后,作者按照Xilinx的资料进行Petalinux网口驱动开发,包括配置Petalinux、内核、FSBL以及rootfs。在功能验证阶段,作者遇到了问题并逐一排查解决,最终使GEM1网口正常工作。文章还提到了在调试过程中遇到的错误和网口调试方法,并列出了一些参考文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 开发环境

Windows SDK 2017.4

Ubuntu Petalinux 2017.4

硬件平台:米联客ZYNQ开发板MIZ7035

2. 开发目标

在ZYNQ上使用gigE Vision协议的网络接口相机。

第一步:调通PS侧网口GEM0(Xilinx BSP默认配好)。

第二步:调通PS侧网口GEM1(本文阐述)。

第三步:调通PL侧网口。

第四步:在PL侧网口上验证Jumbo Frame特性,并在应用层适配gigE Vision协议。

3. 预备知识

(1) 熟悉ZYNQ网口硬件资源

阅读《xapp1082 - PS and PL Ethernet Performance and Jumbo Frame Support with PL Ethernet.pdf》,在Introduction一节可知,ZYNQ芯片支持三个网口:

PS-GEM0:PS侧内置MAC,通过RGMII接口连接到外部PHY芯片。不支持Jumbo Frame。见下图紫线。

PS-GEM1:PS侧内置MAC,通过EMIO接口连接PL侧的PHY(1000BASE-X或SGMII)。不支持Jumbo Frame。见下图蓝线。

PL侧软核MAC,连接PL侧的PHY(1000BASE-X或SGMII)。支持Jumbo Frame。见下图红线。

其中PS-GEM0是独立的,而PS-GEM1与PL侧软MAC共用一个MAC和输出接口,因此二者不能同时使用。

60386d0fd521

image.png

(2) 验证网口硬件和hdf文件

我们先从裸机程序入手,来验证硬件和hdf文件的正确性。

利用Xilinx提供的LwIP例程,我们将板子作为TCP echo server,然后在PC上发TCP包给网口GEM1,发现可以收到回应。这说明硬件和hdf文件没问题。

(3) 熟悉petalinux网口驱动开发过程

根据《xapp1082》可知,GEM1的PHY支持1000Base-X和SGMII两种配置,这两种配置对应两种不同的PHY引脚接口(连接到MAC)。而我们的hdf文件使用的是1000Base-X的配置。

关于网口的Linux驱动,我们在官网找到一份资料:Xilinx Wiki - Zynq PL Ethernet。资料很长,我们只看与我们相关的“2.3.1 PS-EMIO BSP installation for 1000Base-X”这一章节就可以了。

将其解压到我们的工作目录下,得到xapp1082_2017_4/,其内容如下:

60386d0fd521

image.png

先读一下README.TXT和Readme_workaround.txt.txt:

从README.TXT里可知:Supported Device(s): Zynq-7000 SOC (45T-FFG900, ZC706 board)

从Readme_workaround.txt.txt可知,我们需要在FSBL代码si5324.c里,添加如下两个宏(后文会照做):

#define XPAR_GIGE_PCS_PMA_SGMII_CORE_PRESENT 0

ZYNQ平台上进行PL-PS协同设计时,需要考虑如何将PL中的网口PS中的网口进行连接。一种常用的方式是使用AXI Ethernet IP核,将PL中的网口接到AXI总线上,然后通过AXI总线与PS中的网口进行连接。 在Linux中使用PL中的网口时,需要进行如下调试步骤: 1. 确认AXI Ethernet IP核已经正确配置,并且在硬件中已经成功实现了网口的功能。 2. 在Linux内核中,需要加载相应的驱动程序。以常见的AXI Ethernet驱动程序axienet为例,可以使用以下命令加载驱动程序: ``` modprobe axienet ``` 3. 确认网口的设备节点已经正确创建。可以使用以下命令查看网口设备节点: ``` ls /sys/class/net ``` 如果成功创建了网口设备节点,应该能够看到类似于eth0、eth1等设备节点。 4. 使用ifconfig命令配置网口IP地址等参数。例如,可以使用以下命令将eth0网口IP地址设置为192.168.1.100: ``` ifconfig eth0 192.168.1.100 ``` 5. 确认网口是否能够正常工作。可以使用ping命令测试与其他主机的连通性: ``` ping <目标IP地址> ``` 如果能够ping通目标主机,则说明网口已经正确工作。 6. 如果出现网络连接问题,可以使用tcpdump命令进行网络抓包分析,以便确定问题的原因: ``` tcpdump -i eth0 ``` 这将在eth0网口上抓取所有的网络数据包,并将它们输出到屏幕上。可以使用Ctrl+C停止抓包,并分析输出的数据包内容以确定问题的原因。 以上就是在ZYNQ平台上使用PL中的网口进行Linux开发时常见的调试步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值