Автор
Дель Хэтч
** Общение через UDP
Целью этого проекта является демонстрация передачи данных по UDP с использованием Zedboard. Его можно использовать на MicroZed и других платах на базе Zynq с небольшими изменениями.
** Создайте систему Zynq с помощью Vivado.
Используя рисунок ниже в качестве руководства, создайте систему Zynq. Модули AXI Interconnect, Processor Reset и GPIO не являются обязательными, но я предпочитаю использовать их для управления/управления/отладки позже.
Вы можете использовать все системные настройки по умолчанию, автоматические назначения периферийных адресов и настройки конфигурации системы по умолчанию — не нужно ничего настраивать.
После сборки системы и экспорта оборудования (включая битовый файл) запустите SDK.
** SDK и программное обеспечение
После открытия SDK нажмите «Файл» -> «Создать» -> «Проект приложения».
Дайте проекту имя и нажмите «Далее».
Выберите «lwIP Echo Server» из списка доступных шаблонов и нажмите «Готово».
На этом этапе вы можете скомпилировать, загрузить и запустить Echo Server на Zedboard. Я использую PuTTY, чтобы увидеть, как это работает.
Запустите PuTTY, введите IP-адрес Zedboard, определенный в файле main.c, установите значение порта 7 и выберите «Telnet» в качестве типа соединения. В открывшемся окне вы можете вводить буквы и видеть, как они возвращаются в PuTTY.
** Изменение эхо-сервера для использования UDP.
Сервер эха lwIP по умолчанию использует TCP. Чтобы преобразовать его для использования UDP, замените предоставленный файл main.c на файл main.c в этом репозитории Github. Также замените файл echo.c.
Также скачайте файл include.h и добавьте его в свой проект.
Скопируйте файлы в каталог project.sdk/project/src вашего проекта. Затем в SDK выделите строку в рамке «Проводник проекта» и нажмите F5, чтобы обновить.
** Скомпилируйте и запустите
Теперь скомпилируйте и запустите код. По мере выполнения кода в подключенной терминальной программе вы увидите следующее:
Точки внизу указывают, что Zedboard отправляет пакет UDP. Это происходит раз в 500 мс. Пакет состоит из одного целого числа со значением 0x45.
Чтобы увидеть отправляемые пакеты, используйте Wireshark.
Существует множество способов передачи UDP-пакетов на Zedboard. Я использовал медиаплеер VLC и настроил его для потоковой передачи файла .mpg через UDP. Вот как это сделать:
Запустите VLC и нажмите Медиа -> Поток...
На вкладке «Файл» нажмите «+Добавить» и выберите медиафайл. Я использую видеофайл .mpg. Нажмите кнопку «Поток».
Нажмите Далее. Для настройки пункта назначения раскройте поле «Новый пункт назначения». Выберите UDP (устаревший). Нажмите Добавить. Введите IP-адрес Zedboard и установите порт на 7.
Нажмите Далее. Я отменяю выбор «Активировать транскодирование», но для этой цели это не имеет значения.
Нажмите «Далее», а затем «Поток».
В терминальной программе вы увидите множество сообщений (от Zedboard), показывающих длину датаграмм UDP, полученных Zedboard из программы VLC.
** Улучшения
Этот проект в основном представляет собой демонстрацию того, как использовать UDP для отправки и получения данных с помощью Zedboard или другой платы Zynq.
Я буду использовать его для потоковой передачи мультимедиа с Zedboard на ПК и использовать VLC для просмотра медиапотока.
** Кредит
Лэнс Симмс опубликовал здесь очень хороший и сложный проект, использующий UDP: http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
Мой проект сводит эту кодовую базу к фундаментальным принципам UDP, чтобы предоставить легко расширяемую платформу для пользовательских проектов.