Auteur
Del Hatch
** Communiquer via UDP
Le but de ce projet est de démontrer les transferts de données via UDP à l'aide du Zedboard. Cela peut être utilisé sur les cartes MicroZed et autres cartes basées sur Zynq avec des modifications mineures.
** Construisez un système Zynq en utilisant Vivado
En utilisant la figure ci-dessous comme guide, créez un système Zynq. Les modules AXI Interconnect, Processor Reset et GPIO sont facultatifs, mais j'aime les intégrer plus tard pour la commande/le contrôle/le débogage.
Vous pouvez utiliser tous les paramètres par défaut du système, les attributions d'adresses automatiques des périphériques et les paramètres par défaut de la configuration du système, sans avoir à personnaliser quoi que ce soit.
Après avoir construit le système et exporté le matériel (y compris le fichier bit), lancez le SDK.
** SDK et logiciels
Une fois le SDK ouvert, cliquez sur Fichier -> Nouveau -> Projet d'application.
Donnez un nom au projet, puis cliquez sur Suivant.
Sélectionnez « lwIP Echo Server » dans la liste des modèles disponibles et terminez.
À ce stade, vous pouvez compiler, charger et exécuter Echo Server sur le Zedboard. J'utilise PuTTY pour le voir fonctionner.
Lancez PuTTY, saisissez l'adresse IP du Zedboard définie dans le fichier main.c, définissez la valeur du Port sur 7 et sélectionnez "Telnet" comme type de connexion. Dans la fenêtre qui s'ouvre, vous pouvez saisir des lettres et les voir renvoyées dans PuTTY.
** Modification du serveur Echo pour utiliser UDP
Le serveur Echo lwIP par défaut utilise TCP. Pour le convertir pour utiliser UDP à la place, remplacez le main.c fourni par le main.c dans ce référentiel Github. Remplacez également le fichier echo.c.
Téléchargez également le fichier include.h et ajoutez-le à votre projet.
Copiez les fichiers dans le répertoire project.sdk/project/src de votre projet. Ensuite, dans le SDK, mettez en surbrillance la ligne dans le cadre « Explorateur de projet » et appuyez sur F5 pour actualiser.
** Compiler et exécuter
Maintenant, compilez et exécutez le code. Pendant l'exécution du code, dans le programme du terminal connecté, vous verrez ceci :
Les points en bas indiquent que le Zedboard envoie un paquet UDP. Cela se produit toutes les 500 msecondes. Le paquet est constitué d'un seul entier d'une valeur de 0x45.
Pour voir les paquets envoyés, utilisez Wireshark.
Il existe de nombreuses façons de transmettre des paquets UDP au Zedboard. J'ai utilisé le lecteur multimédia VLC et je l'ai configuré pour diffuser un fichier .mpg via UDP. Voici comment procéder :
Lancez VLC et cliquez sur Média -> Stream...
Dans l'onglet Fichier, cliquez sur "+Ajouter" et sélectionnez un fichier multimédia. J'utilise un fichier vidéo .mpg. Cliquez sur le bouton Flux.
Cliquez sur Suivant. Pour la configuration de la destination, déroulez la zone Nouvelle destination. Sélectionnez UDP (hérité). Cliquez sur Ajouter. Tapez l'adresse IP du Zedboard et définissez le port sur 7.
Cliquez sur Suivant. Je désélectionne "Activer le transcodage" mais cela n'a pas d'importance dans ce but.
Cliquez sur Suivant, puis sur Stream.
Dans le programme du terminal, vous verrez de nombreux messages (du Zedboard) vous indiquant la longueur des datagrammes UDP reçus par le Zedboard du programme VLC.
** Améliorations
Ce projet est principalement une démonstration de la façon d'utiliser UDP pour envoyer et recevoir des données à l'aide d'un Zedboard ou d'une autre carte Zynq.
Je vais l'utiliser pour diffuser des médias du Zedboard vers un PC et utiliser VLC pour afficher le flux multimédia.
** Crédit
Lance Simms a publié un projet très bon et compliqué qui utilise UDP ici : http://lancesimms.com/Xilinx/MicroZed_UDP_Server_for_Waveform_Centroiding_Table_Of_Contents.html
Mon projet réduit cette base de code aux principes fondamentaux d'UDP pour fournir une plate-forme facilement étendue pour les projets personnalisés.