作者
德爾·哈奇
** 透過 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 原則,為自訂專案提供一個易於擴展的平台。