Autor
Del Hatch
** Comunicação por UDP
O objetivo deste projeto é demonstrar transferências de dados via UDP usando o Zedboard. Isso pode ser usado no MicroZed e em outras placas baseadas em Zynq com pequenas modificações.
** Construa um sistema Zynq usando Vivado
Usando a figura abaixo como guia, construa um sistema Zynq. Os módulos AXI Interconnect, Processor Reset e GPIO são opcionais, mas gosto de colocá-los para comando/controle/depuração posteriormente.
Você pode usar todos os padrões do sistema, atribuições de endereço automático de periféricos e padrões de configuração do sistema - sem necessidade de personalizar nada.
Depois de construir o sistema e exportar o hardware (incluindo o arquivo bit), inicie o SDK.
** SDK e software
Após a abertura do SDK, clique em Arquivo -> Novo -> Projeto de Aplicativo.
Dê um nome ao projeto e clique em Avançar.
Selecione "lwIP Echo Server" na lista de modelos disponíveis e conclua.
Neste ponto você pode compilar, carregar e executar o Echo Server no Zedboard. Eu uso o PuTTY para ver como funciona.
Inicie o PuTTY, digite o endereço IP do Zedboard definido no arquivo main.c, defina o valor da porta como 7 e selecione "Telnet" como tipo de conexão. Na janela que se abre, você pode digitar letras e vê-las ecoadas de volta ao PuTTY.
** Alterando o Echo Server para usar UDP
O lwIP Echo Server padrão usa TCP. Para convertê-lo para usar UDP, substitua o main.c fornecido pelo main.c neste repositório Github. Além disso, substitua o arquivo echo.c.
Além disso, baixe o arquivo include.h e adicione-o ao seu projeto.
Copie os arquivos para o diretório project.sdk/project/src do seu projeto. Em seguida, no SDK, destaque a linha no quadro "Project Explorer" e pressione F5 para atualizar.
** Compilar e executar
Agora compile e execute o código. À medida que o código é executado, no programa do terminal conectado, você verá isto:
Os pontos na parte inferior indicam que o Zedboard está enviando um pacote UDP. Isso acontece uma vez a cada 500 mSegundos. O pacote consiste em um único número inteiro com valor 0x45.
Para ver os pacotes sendo enviados, use o Wireshark.
Existem muitas maneiras de transmitir pacotes UDP para o Zedboard. Usei o reprodutor de mídia VLC e configurei-o para transmitir um arquivo .mpg por UDP. Veja como fazer isso:
Inicie o VLC e clique em Mídia -> Stream...
Na guia Arquivo, clique em "+Adicionar" e selecione um arquivo de mídia. Eu uso um arquivo de vídeo .mpg. Clique no botão Transmitir.
Clique em Avançar. Para a configuração de destino, abra a caixa Novo destino. Selecione UDP (legado). Clique em Adicionar. Digite o endereço IP do Zedboard e defina a porta como 7.
Clique em Avançar. Desmarquei "Ativar Transcodificação", mas isso não importa para esse propósito.
Clique em Avançar e depois em Stream.
No programa terminal você verá muitas mensagens (do Zedboard) mostrando o comprimento dos datagramas UDP recebidos pelo Zedboard do programa VLC.
** Melhorias
Este projeto é principalmente uma demonstração de como usar UDP para enviar e receber dados usando um Zedboard ou outra placa Zynq.
Vou usá-lo para transmitir mídia do Zedboard para um PC e usar o VLC para visualizar o fluxo de mídia.
** Crédito
Lance Simms postou um projeto muito bom e complicado que usa UDP aqui: http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
Meu projeto reduz essa base de código aos princípios fundamentais do UDP para fornecer uma plataforma facilmente estendida para projetos personalizados.