简介
本教程采用官方的lwip库sdk案例实现TCP服务器,并采用iperf.exe测速工具对以太网TCP传输进行测速,实测速度最高可达920MBits/秒。
软件版本
Vivado2020.2+Vitis2020.2。
Vivado工程创建
基于《征服者zynq7020裸机开发教程1--USB Device接口测试(zynq模拟U盘)》的Vivado工程进行微小修改。
1.打开《征服者zynq7020裸机开发教程1--USB Device接口测试(zynq模拟U盘)》的Vivado工程,双击BD文件;
2.双击打开zynq处理器IP核的配置界面;
3.勾选以太网控制器Ethenet0相关的选项--然后点击“OK”;
4.此时zynq处理器的IP配置就完成了,右键空白处--点击"Validate Design";
5.在source界面中右键BD文件--点击"Generate Output Products";
6.点击"Generate";
7.点击"OK";
8.再次右键BD文件--点击"Create HDL Wraper...";
9.点击"OK";
10.至此,Vivado工程的建立就完成了,接下来进行Vitis SDK代码设计。
Vitis SDK程序设计
1.在Vivado工程中点击"File"--"Export"--"Export Hardware";
2.点击"Next";
3.选择"Presynthesis"--点击"Next",因为是纯PS程序开发,不需要用到FPGA的bit文件;
4.使用默认名称即可,点击"Next";
5.由于是沿用的USB Device案例的工程,此时工程目录下已经存在之前的.xsa文件,这里选择覆盖即可(放心覆盖,这里不会影响USB功能);
6.点击"Finish";
7.双击打开Vitis2020.2,点击"Browse.."--浏览到zfz7020_ps.vitis文件夹--点击"Launch";
8.同样的,由于沿用了USB Device案例,打开Vitis以后不需要再重新建立平台工程,只需要更新下已存在的平台工程即可(因为.xsa文件改变了)
9.接下来设置下BSP,添加lwip库;
10.勾选lwip211库;
11.接下来需要配置lwip211库的部分设置,否则测速的速率达不到900M以上;
a.点击“lwip211”进入设置界面;
b.本例程使用RAW API,即函数调用不依赖操作系统,传输效率也比SOCKET API高,将use_axieth_on_zynq和use_emaclite_on_zynq设为0;
c.修改lwip_memory_options设置,将mem_size,memp_n_pbuf,mem_n_tcp_pcb,memp_n_tcp_seg这4个参数值设大,这样会提高TCP传输效率,如下图所示;
d.修改pbuf_options设置,将pbuf_pool_size设大,增加可用的pbuf数量,这样同样会提高TCP传输效率;
e.修改tcp_options设置,将tcp_snd_buf,tcp_wnd参数设大,这样同样会提高TCP传输效率;
f.修改temac_adapter_options设置,将n_rx_descriptors和n_tx_descriptors参数设大。这样可以提高zynq内部emac dma的数据迁移效率,同样能提高TCP传输效率;
g.其他参数保持默认,点击“OK”保存并退出;
h.修改BSP以后,需要重新编译一下平台工程,点击"zfz7020_ps(Out-of-data)"--"Ctrl+B",括号里的提示也可以看出,平台工程不是最新的需要重新编译了,编译后"(Out-of-data)"就消失了;
12.接下来产生官方LWIP的SDK例程;
a.空白处右键--点击“New”--“Aplication Project...”;
b.点击"Next";
c.点击"Next";
d.输入Application Project的名字,这里我定义为lwip_tcp_server,然后点击“Next”;
e.点击"Next";
f.选择"lwIP TCP Perf Server"--点击"Finish";
g.此时,在Vitis工程中新生成了一个"lwip_tcp_server"的工程;
h."Ctrl+B"编译工程;
12.下载程序进行测速实验;
a.测速需要用到iperf.exe这个软件点此下载,下载解压后将该软件拷贝到电脑的C:\Windows目录下;
b.采用千兆网线将开发板和电脑的网口连接起来
c.点击电脑左下角windos图标“开始”-->设置,点击“更改适配器选项”;
d.右键“以太网”-->点击“属性”-->双击“Internet 协议版本4(TCP/IPv4)”;
e.选中“使用下面的IP地址”,填入IP:192.168.1.100,再点击下“子网掩码的空白处,自动填充255.255.255.0”,点击“确定”;
f.给开发板上电,打开串口助手,选择开发板的串口号(不固定,除了com1的那个就是),设置如下图;
g.右键下图所示位置,将程序debug到开发板中;
h.点击绿色三角形的运行按钮开始运行程序;
i.回到串口助手界面,等待直到串口助手显示如下信息;
j.打开电脑的 CMD(按 win+r 键后输入 cmd),输入“iperf -c 192.168.1.10 -i 5 -t 30 -w 2M”,如下图所示;
k.回车后,打印连接信息,并启动测试,如下图所示;
文章评论