EBA4205矿板PS端的以太网通信,亲测有效

发布于 2021-01-27 22:20

在上篇文章中,EBAZ4205矿板的以太网通信解析,已经分析过了矿板的以太网硬件方案,矿板的以太网是挂在 PL 端的。毕竟 EBAZ4205 用的是 ZYNQ 芯片,ARM 那边肯定会需要用到以太网,而今天这篇文章,要解决的问题就是怎么把挂在 PL 端的以太网提供给 PS 端进行使用。

本篇文章中 Vitis 使用的是自带的 LwIP Echo Sever 例程,咱们先看下效果图。

效果已经看到了,那接下来就详细的说下怎么实现的。具体的实现过程也不复杂,可以说都不用自己写代码,只需要调用 ZYNQ 里面已有的 IP 就可以了。

一、在 Vivado 中创建相关工程



先来说 ZYNQ IP 的配置。


ZYNQ IP 里一定记得按照上面的配置进行选择,不然是无法正常测试的。

另外,大家还可以看到 Block Design 中还有两种 IP ,一个是叫 xlconcat,另一个是 ila 。xlconcat 的作用是将 ZYNQ IP 的 8 bit 数据显式的连接成 4 bit ,其原因咱们在上篇文章中已经分析过,EBAZ4205 的 PHY 芯片数据位宽只有 4bit,所以咱们也需要更改。

ila 这个 IP 不是必须的,这个只是我当时用来调试确认某些信号的。大家如果是自己搭建工程的话,不需要添加。

各个 IP 间的连线,大家可以参考前面的 Block Design 视图。

大家看到 ZYNQ IP 上以太网接口的名字中有 GMII,名字中带有 “G” ,意味着是千兆以太网的一个接口,而 EBAZ4205 用的是百兆,他们之间确定能正常通信吗?

刚开始的时候,我也有这个疑问,由于担心 ZYNQ 不能直接使用百兆网 MII 这个接口,一直想着将 MII 转成 GMII,后面看 ZYNQ 的手册,发现可以直接用,所以大家不用有这个顾虑。


二、Vitis 工程创建


在创建好的 Vitis 工程中,我这边是需要对 Lwip 进行设置,将其直接设置为百兆的速率。它的默认配置是进行自动协商,但在我这边进行试验的时候,自动协商不成功,所以我直接将其设置为百兆。

配置步骤如下:




还有一个点,需要在例程中修改,在 main.c 文件添加 
#define LWIP_DHCP 0

当然这一步,也可以直接在对应的头文件中直接改给这个宏定义。

将 LWIP_DHCP  定义为 0 ,这个是在实验中不断调试得出来的结果,它在相应的头文件中是将其设置为了 1 。但是在 LWIP_DHCP  定义为 1 的情况下,这个程序运行不下去。

这个现象只是在我这边出现,具体是否有共性,还不确定。理论上这些例程都是可以直接用的,不存在说需要去改哪些地方。

这些都改好了之后,Ctrl + B 对工程进行编译。连接好硬件,编译好后,进行下载,全速运行。

后续大家就可以在尝试使用网络调试助手或者是 PING 命令进行测试了。

同样的,我也会将这个工程上传到网盘归类,另外也会将用到的网络调试助手传到同一个链接中的【工具】这个文件夹下。大家可以进行下载。


这个分享链接经常失效,若出现失效,大家可以加我私人微信,我单独发链接过来。


以太网可以用了之后,后面其实能做的东西就很多了,比如做一个网络的视频传输,矿板采集视频,传给 PC 端的上位机。或者是进行远程更新,这个其实在很多产品里也有类似的功能。

以太网相关的内容,就更新到这,后面会开始写 u-boot、系统移植相关的内容了。说真的,ZYNQ 涉及到的内容是非常多的,我现在也没有一个详细的计划去写什么内容,后面写完 u-boot 和系统移植相关的,就是想自己用矿板在做什么开发,就写什么文章了。



本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。

相关素材