赞
踩
作者:卢浩
时间: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,速度还行,基本上能满足大部分用户的需求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。