Skip to content

sdk例程:3种以太网使用模式

minichao9901 edited this page Feb 3, 2024 · 8 revisions

模式1:ps_eth0通过mio出去。

这个在前面已经做了大量实验,一直用的这个模式。这里不在论述。需要补充说明一下的是,有2种方法可以正常工作:

  • 方法1,直接替换xemacpsif_physpeed.c,其余都不用改。这个时候可以自协商到1Gbps速度,可以正常工作到1Gbps。
  • 方法2,手动设置lwip的速度为100Mbps,并注释platform_zynq.c的部分内容,可以正常工作到100Mbps。进一步方法,手动设置lwip的速度为1Gbps,对于ps_eth也是可以正常工作的。(作为对比,模式2的ps_eth0通过emio出去,就到不了1Gbps。)

模式2a:ps_eth0通过emio出去

1. 需要使用一个gmii->rgmii的转换ip,才能连接外面的PHY芯片。框图如下所示

在图中,有个不确定的是reset_rtl_0这个信号是否必须?(这是送给PHY的复位信号)(补充说明:经过实验,这个信号可以去掉)
注意zynq的FCLK_CLK0需要设置为200MHz,这是gmii->rgmii的要求。
image

2. sdk的设置技巧。使用lwip echo server的demo例程。需要做如下修改:

  1. 初始情况,什么都不替换,只设置ip地址保持与电脑一个网段。结果如下,会出现phy error。
image
  1. 替换xemacpsif_physpeed.c文件,可以协商成功速度1000Mbps,但是连不上。(后来进一步做做实验发现,如果手动设置为100Mbps,不会出现phy error。因此这一步不是必须的,但是设置100Mbps是必须的。本质还是速度太快,时序跟不上。)
image
  1. 设置lwip的速度为100Mbps(这一步是必须的),会出现反复重启。
image
  1. 注释platform_zynq.c文件,如下部分内容。(这一步是必须的)
image
  1. 成功运行
image
  1. 总结一下,其实只需要做2件事就可以了:a)手动设置速度为100Mbps,b)注释platform_zynq.c部分内容

模式2b:ps_eth1通过emio出去

  1. 只是zynq的选项不同,有了前面的经验,这个实验很快就搞定了。整个攻略和过程与前面的模式2(ps_eth0通过emio出去一模一样),这里就不再重复了。
  2. 必须指出的是,sdk非常聪明。如果选择的eth1,那么调用lwip_echo_server例程,它就宏定义用的就是eth1,不用自己手动做任何修改。
  3. 框图如下
image

模式3:pl_mac+emio出去

单独的文章已经讲过。

总结:

目前看,只有模式0才能到1Gbps速度,其余模式都到不了1Gbps速度。

Clone this wiki locally