Smart ZYNQ板 工程二十七 基于PS的 USB slave功能测试(即ZYNQ模拟U盘的功能测试)

本工程将记录在SDK环境下调用官方demo来实现USB的slave(device)功能测试

ZYNQ的USB可以同时充当USB HOST,和USB DEVICE(SLAVE)的角色功能非常强大,板子上同时保留了USB HOST的接口,和USB DEVICE的接口,USB功能大多数情况都是在linux下使用的,在arm裸机下使用的资料非常的少,好在官方为我们保留了一个USB DEVICE的SDK Demo,我们可以通过这个demo去熟悉整个usb项目的创建流程,具体操作如下。

工程创建

完整的工程创建图文教程前面已经详细图文描写了,可以参考前面的工程,这里仅仅增加关键步骤。 详细过程可以参考Smart ZYNQ板 工程七 用ZYNQ的PS点亮连接到PL端的LED灯EMIO 方式

器件名称选择 xc7z010clg400-1 或 xc7z020clg400-1(xa7z020) 以实际板子上的芯片为准

在BLOCK DESIGN 中搜索并添加一个ZYNQ模块

在右侧的窗口里 ,点击加号,在选择框里搜索ZYNQ,并找到ZYNQ7 PROCESSING SYSTEM ,双击并打开

软件自动生成了一个 zynq的block 如下图所示,接下来要做一些相应的设置,双击下图中的ZYNQ核

在ZYNQ 设置界面,设置 DDR MT41K256M16RE-125的型号 和位宽16bit

使能zynq的USB0功能

另外 由于我们的USB PHY的信号是接在mio的46脚上 所以这里同样需要使能 MIO的USB RST信号(系统同时会默认勾选I2C复位 ,可以关闭)

点击“Run Block Automation”如下图所示。在弹出的选项中保持默认,点击“OK”,即可完成对ZYNQ7 Processing System的配置

对GPIO make external,并且连接AXI的时钟(AXI默认开启的,这里用不到AXI,也可以去设置里关闭AXI功能,就不需要连接了)

之后 点选Create HDL Wrapper

在弹出的对话框里保持默认

软件自动为我们生成HDL文件

这个工程用到的资源都是PS端的原生资源,所以这里不需要额外做管脚约束

接下来生成bit文件

按下绿色箭头对工程进行编译

按下Generate Bitstream 完成综合以及生成bit文件

SDK程序编写

1)File→Export→Export hardware…,在弹出的对话框中勾选“include bitstream”,点击“OK”确认,如下图所示。

2)File→Lauch SDK,在弹出的对话框中,保存默认,点击“OK”,如下图所示。

系统将自动打开SDK开发环境

3)新建一个工程 file→new→Application Project,来新建一个“Application Project”,如下图所示。

4)在新建工程名中输入自己的工程名称,点击NEXT

选择空工程,点击完成FINISH

之后SDK会为我们创建一个空的工程,这里我们只需要用到bsp就够,如下图所示,展开BSP目录,点击system.mss文件,在右侧选择导入usbps的 demo并导入

勾选工程,然后点击ok

之后系统会自动导入usb的demo,,如下图所示

下载到板子上进行验证

先用USB线将板子的JTAG口和电脑连接

选中我们的硬件工程 ,并点击右键→Program FPGA,在弹出的对话框中选择默认,点击“program”,完成FPGA PL部分的Program工作

2)选中我们生成的USB工程 展开绿色箭头(RUN)右边的图标,选择Run As→1 Launch on Hardware(System Debugger)

用另一根TYPE C数据线连将我们板子上的USB SLAVE口和电脑连接,此时我们可以看到电脑出现了一个1MB的U盘,并提示是否格式化这个U盘(这里选择格式化)

之后电脑就出现了一个由DDR RAM虚拟出来的1MB大小的U盘了(可以像正常U盘一样复制粘贴文件),注意这个U盘断电数据会丢失请不要放重要文件。

通过修改 storage.h可以调整这个U盘的大小(请不要接近或者超过板子上DDR容量的大小)

比如说我们将值改成0xFF00000 就可以得到一个255MB的虚拟U盘

备注 我们也可以用下面方法让每次下载程序的时候都自动加载配置FPGA和自动初始化系统,省去了单独下载bit文件的操作

之后点 APPLY 然后 再选择Run As→1 Launch on Hardware(System Debugger就可

ZYNQ的 USB 功能远不止这些, 官方SDK 只是提供了一个演示demo,如果要做slave方面的裸机相关应用可以深入研究这个demo , Host功能将在后续petalinux的章节做演示

完整工程如下

“Smart ZYNQ板 工程二十七 基于PS的 USB slave功能测试(即ZYNQ模拟U盘的功能测试)”的2个回复

    1. 硬件上决定 只能作为 HOST 或者SLAVE 去工作,不能设置成OTG方式

      现在程序上只有裸机的SLAVE程序, 后面会试着增加裸机的HOST程序
      对了 linux 下的host工程是有的 也可以看一下

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注