zynq-7000系列基于zynq-7015的vivado初步设计之linux下控制PL扩展的光以太网(1000BASE-X)

 zynq-7000系列基于zynq-7015的vivado初步设计之linux下控制PL扩展的以太网(1000BASE-X)

                           

                      作者:卢浩  

                                     时间:2017.2.13

                                    转载请注明出处

                                                                 嵌入式爱好者开发群:122879839

打开vivado,基于zynq-zed工程,添加IP->AXI 1G/2.5G ETHERNET SUBSYSTEM。双击IP模块,选择1000BASE-X。如下图:

在zynq模块上把hp0选中,如下图:



千兆光IP的中断用zynq的IRQ_F2P的中断,记得把MM2S S2MM中断与IRQ_F2P连接,另外MGT_CLK的时钟由底板外部差分时钟提供,另外需要添加axi_interconnect IP.然后用自动连接,模块就生成了。

如下图:



由于工程太大,没法截图完整,我把最重要的部分截出来了。

接下来就是综合,配置引脚,最后生成bit文件,这些流程和之前扩展GPIO UART是一样的。

BIT文件生成之后,export hardware,launch sdk,生成FSBL,生成BOOT.bin,生成DTS文件,这些步骤在上篇文章都讲过。

这里需要重点讲一下,在内核配置部分,需要添加axi ethernet驱动的支持。

配置如下:

CONFIG_ETHERNET
CONFIG_NET_VENDOR_XILINX
CONFIG_XILINX_AXI_EMAC
CONFIG_XILINX_PHY (For testing SGMII/1000Base-x Configuration with PCS/PMA Core)

生成的网卡dts描述信息:

axi_ethernet_2: ethernet@41080000 {
axistream-connected = <&axi_ethernet_2_dma>;
axistream-control-connected = <&axi_ethernet_2_dma>;
clock-frequency = <100000000>;
clock-names = "ref_clk";
clocks = <&clkc 0>;
compatible = "xlnx,axi-ethernet-1.00.a";
device_type = "network";
interrupt-parent = <&intc>;
interrupts = <0 54 4>;
phy-handle = <&phy1>;
phy-mode = "sgmii";
reg = <0x41080000 0x40000>;
xlnx = <0x0>;
xlnx,axiliteclkrate = <0x0>;
xlnx,axisclkrate = <0x0>;
xlnx,phy-type = <0x5>;
xlnx,phyaddr = <0x1>;
xlnx,rable = <0x0>;
xlnx,rxcsum = <0x0>;
xlnx,rxmem = <0x1000>;
xlnx,txcsum = <0x0>;
axi_ethernet_2_mdio: mdio {
#address-cells = <1>;
#size-cells = <0>;
phy1: phy@1 {
device_type = "ethernet-phy";
reg = <1>;
};
};
};


在linux下启动,可以看到如下的log:

xilinx_axienet 41080000.ethernet: TX_CSUM 0
xilinx_axienet 41080000.ethernet: RX_CSUM 0
libphy: Xilinx Axi Ethernet MDIO: probed


xilinx_axienet 41080000.ethernet eth3: Link is Down
xilinx_axienet 41080000.ethernet eth3: setting Axi Ethernet mac speed 1000BASEX
xilinx_axienet 41080000.ethernet eth3: Link is Up - 1Gbps/Full - flow control off
xilinx_axienet 41080000.ethernet eth3: setting Axi Ethernet mac speed 1000BASEX
IPv6: ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready

下面我们来测试一下性能,


Client connecting to 172.28.96.61, TCP port 5001
TCP window size:  320 KByte (WARNING: requested 1.00 MByte)
------------------------------------------------------------
[  3] local 172.28.96.19 port 46392 connected with 172.28.96.61 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0- 1.0 sec  69.9 MBytes   586 Mbits/sec
[  3]  1.0- 2.0 sec  66.9 MBytes   561 Mbits/sec
[  3]  2.0- 3.0 sec  66.9 MBytes   561 Mbits/sec
[  3]  3.0- 4.0 sec  66.8 MBytes   560 Mbits/sec
[  3]  4.0- 5.0 sec  66.8 MBytes   560 Mbits/sec
[  3]  5.0- 6.0 sec  66.6 MBytes   559 Mbits/sec
[  3]  6.0- 7.0 sec  66.9 MBytes   561 Mbits/sec
[  3]  7.0- 8.0 sec  66.5 MBytes   558 Mbits/sec
[  3]  8.0- 9.0 sec  66.8 MBytes   560 Mbits/sec
[  3]  9.0-10.0 sec  66.8 MBytes   560 Mbits/sec
[  3]  0.0-10.0 sec   671 MBytes   563 Mbits/sec


千兆网卡在TCP下测试的性能是560Mb/s,速度还行,基本上能满足大部分用户的需求。


          

 
  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值