作者
德尔·哈奇
** 通过 UDP 进行通信
该项目的目的是演示使用 Zedboard 通过 UDP 进行数据传输。只需稍加修改即可在 MicroZed 和其他基于 Zynq 的板上使用。
** 使用 Vivado 构建 Zynq 系统
使用下图作为指导,构建 Zynq 系统。 AXI 互连、处理器重置和 GPIO 模块是可选的,但我喜欢稍后将它们放入命令/控制/调试中。
您可以使用所有系统默认值、外围设备自动地址分配和系统配置默认值——无需自定义任何内容。
构建系统并导出硬件(包括位文件)后,启动 SDK。
** SDK和软件
SDK打开后,点击文件->新建->应用程序项目。
为项目命名,然后单击“下一步”。
从可用模板列表中选择“lwIP Echo Server”,然后完成。
此时您可以在 Zedboard 上编译、加载并运行 Echo Server。我使用 PuTTY 来查看它的工作情况。
启动 PuTTY,输入 main.c 文件中定义的 Zedboard 的 IP 地址,将端口值设置为 7,然后选择“Telnet”作为连接类型。在打开的窗口中,您可以键入字母并看到它们回显到 PuTTY。
** 更改 Echo 服务器以使用 UDP
默认的 lwIP Echo Server 使用 TCP。要将其转换为使用 UDP,请将提供的 main.c 替换为此 Github 存储库中的 main.c。另外,替换 echo.c 文件。
另外,下载includes.h 文件并将其添加到您的项目中。
将文件复制到项目的project.sdk/project/src 目录中。然后在 SDK 中,突出显示“Project Explorer”框架中的行,然后按 F5 刷新。
** 编译并运行
现在编译并运行代码。当代码运行时,在连接的终端程序中,您将看到以下内容:
底部的点表示 Zedboard 正在发送 UDP 数据包。这种情况每 500 毫秒发生一次。该数据包由一个值为 0x45 的整数组成。
要查看正在发送的数据包,请使用 Wireshark。
有多种方法可以将 UDP 数据包传输到 Zedboard。我使用了 VLC 媒体播放器并将其设置为通过 UDP 传输 .mpg 文件。具体做法如下:
启动 VLC 并单击媒体 -> 流...
在“文件”选项卡上,单击“+添加”并选择一个媒体文件。我使用 .mpg 视频文件。单击流按钮。
单击“下一步”。对于目标设置,下拉新目标框。选择 UDP(旧版)。单击添加。输入 Zedboard 的 IP 地址并将端口设置为 7。
单击“下一步”。我取消选择“激活转码”,但这对于此目的来说并不重要。
单击“下一步”,然后单击“流”。
在终端程序中,您将看到许多消息(来自 Zedboard),显示 Zedboard 从 VLC 程序接收到的 UDP 数据报的长度。
** 改进
该项目主要演示如何使用 Zedboard 或其他 Zynq 板使用 UDP 发送和接收数据。
我将使用它将媒体从 Zedboard 流式传输到 PC,并使用 VLC 查看媒体流。
** 信用
Lance Simms 在这里发布了一个非常好的、复杂的使用 UDP 的项目:http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
我的项目将该代码库简化为基本的 UDP 原则,为自定义项目提供一个易于扩展的平台。