Autor
Del Hatch
** Comunicando a través de UDP
El propósito de este proyecto es demostrar las transferencias de datos sobre UDP usando Zedboard. Esto se puede utilizar en MicroZed y otras placas basadas en Zynq con modificaciones menores.
** Construya un sistema Zynq usando Vivado
Usando la siguiente figura como guía, cree un sistema Zynq. Los módulos AXI Interconnect, Processor Reset y GPIO son opcionales, pero me gusta incluirlos para comando/control/depuración más adelante.
Puede utilizar todos los valores predeterminados del sistema, las asignaciones automáticas de direcciones de periféricos y los valores predeterminados de configuración del sistema; no es necesario personalizar nada.
Después de construir el sistema y exportar el hardware (incluido el archivo de bits), inicie el SDK.
** SDK y software
Después de que se abra el SDK, haga clic en Archivo -> Nuevo -> Proyecto de aplicación.
Asigne un nombre al proyecto y luego haga clic en Siguiente.
Seleccione "lwIP Echo Server" de la lista de Plantillas disponibles y Finalice.
En este punto, puede compilar, cargar y ejecutar Echo Server en Zedboard. Utilizo PuTTY para verlo funcionar.
Inicie PuTTY, escriba la dirección IP del Zedboard definida en el archivo main.c, establezca el valor del Puerto en 7 y seleccione "Telnet" como tipo de conexión. En la ventana que se abre, puede escribir letras y ver cómo se repiten en PuTTY.
** Cambiar el servidor Echo para usar UDP
El servidor lwIP Echo predeterminado utiliza TCP. Para convertirlo para usar UDP, reemplace el main.c proporcionado con main.c en este repositorio de Github. Además, reemplace el archivo echo.c.
Además, descargue el archivo include.h y agréguelo a su proyecto.
Copie los archivos en el directorio project.sdk/project/src de su proyecto. Luego, en el SDK, resalte la línea en el marco "Explorador de proyectos" y presione F5 para actualizar.
** Compilar y ejecutar
Ahora compila y ejecuta el código. A medida que se ejecuta el código, en el programa del terminal conectado, verá esto:
Los puntos en la parte inferior indican que Zedboard está enviando un paquete UDP. Esto sucede una vez cada 500 msegundos. El paquete consta de un único número entero con un valor de 0x45.
Para ver los paquetes que se envían, utilice Wireshark.
Hay muchas formas de transmitir paquetes UDP al Zedboard. Utilicé el reproductor multimedia VLC y lo configuré para transmitir un archivo .mpg a través de UDP. He aquí cómo hacerlo:
Inicie VLC y haga clic en Medios -> Transmitir...
En la pestaña Archivo, haga clic en "+Agregar" y seleccione un archivo multimedia. Yo uso un archivo de video .mpg. Haga clic en el botón Transmitir.
Haga clic en Siguiente. Para la Configuración de destino, despliegue el cuadro Nuevo destino. Seleccione UDP (heredado). Haga clic en Agregar. Escriba la dirección IP del Zedboard y configure el Puerto en 7.
Haga clic en Siguiente. Anulo la selección de "Activar transcodificación" pero no importa para este propósito.
Haga clic en Siguiente y luego en Transmitir.
En el programa de terminal verá muchos mensajes (del Zedboard) que le muestran la longitud de los datagramas UDP recibidos por el Zedboard del programa VLC.
** Mejoras
Este proyecto es principalmente una demostración de cómo usar UDP para enviar y recibir datos usando un Zedboard u otra placa Zynq.
Lo usaré para transmitir medios desde Zedboard a una PC y usaré VLC para ver la transmisión de medios.
** Crédito
Lance Simms publicó un proyecto muy bueno y complicado que usa UDP aquí: http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
Mi proyecto reduce esa base de código a los principios fundamentales de UDP para proporcionar una plataforma fácilmente ampliable para proyectos personalizados.