版权声明:本文为CSDN博主「MmikerR」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/MmikerR/article/details/106497732
<strong>1 概述</strong>
libusb是一个免费的跨平台USB库,本文在windows平台下使用libusb库开发上位机程序与ZYNQ的USB接口进行数据收发测试。libusb可以支持WinUSB驱动,因此为ZYNQ的USB接口设备安装WinUSB驱动。
libusb网址:https://libusb.info/
windows下开发指南:https://github.com/libusb/libusb/wiki/Windows
<strong>2 libusb库</strong>
在https://libusb.info/可以下载libusb库,目前的最新版本是1.0.23。解压后的目录如下:
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
使用VS作为上位机驱动的开发环境,因此需要使用MS32或者MS64文件夹下的dll和lib文件。以及include里的头文件。
<strong>3 ZYNQ裸机程序设计</strong>
PS端的USB接口作为Endpoint Device。设计了3个Endpoint,分别为:
Endpoint 0:control endpoint
Endpoint 1:BULK endpoint
Endpoint 2:interrupt endpoint
分别对应控制传输、块传输和中断传输。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
USB的PID设为0x0007,PID设为0x0001。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
设计USB设备的字符串描述。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
<strong>4 上位机测试程序设计</strong>
PC机作为HOST,调用libusb的API函数设计上位机程序,分别测试电脑与开发板USB接口之间的BULK和interrupt模式传输速率。实现如下功能:
<li>PC->ZYNQ BULK模式发送数据</li>
<li>PC->ZYNQ->PC BULK模式数据回环</li>
<li>PC->ZYNQ interrupt模式发送数据</li>
<li>PC->ZYNQ->PC interrupt模式数据回环</li>
<strong>5 USB驱动安装</strong>
安装libusb驱动。使用Zadig软件生产使用WinUSB内核的USB驱动,选择Create New Device。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
选择advance mode
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
选择提取驱动文件。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
输入设备名称ZYNQ USB DEVICE,VID 0x0007,PID0x0001。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
选择驱动文件提取的存放目录,然后点击Extract Files
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
完成后,打开驱动文件所在目录,可以找到生成的驱动文件。
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
对于Win10系统,首先要禁用数字签名。将开发板USB口与电脑连接,将程序通过SDK下载到开发板中,此时电脑设备管理器提示发现新的USB设备。选择设备,安装上述目录下已经生成的USB驱动程序。
<strong>6 USB传输速率测试</strong>
<strong>6.1 BULK模式</strong>
<strong>6.1.1 PC向ZYNQ单向发送</strong>
8字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
64字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
256字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
1024字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
2048字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
4096字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
<strong>6.1.2 PC与ZYNQ间数据回环</strong>
实际速率需要将图中的速率乘以2倍
8字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
64字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
256字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
1024字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
2048字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
4096字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
<strong>6.2 interrupt模式</strong>
<strong>6.2.1 PC向ZYNQ单向发送数据</strong>
8字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
64字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
256字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
1024字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
2048字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
4096字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
<strong>6.2.2 PC与ZYNQ间数据回环</strong>
实际速率需要将图中的速率乘以2倍
8字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
64字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
256字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
1024字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
2048字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>
4096字节包
<center><img src="http://xilinx.eetrend.com/files/2021-12/%E5%8D%9A%E5%AE%A2/100556402-23…; alt=""></center>