Cette bibliothèque est une pile réseau modulaire qui implémente les protocoles ARP, IPv4, UDP, DNS et DHCP au-dessus d'un pilote Ethernet. Il est divisé en deux parties : un noyau indépendant du matériel et un pilote spécifique pour les cartes STM32F7xx et STM32F4xx. Cela vous permet de fournir facilement un accès réseau IPv4 à votre projet. La bibliothèque est utilisée par le projet EtherScope pour capturer et analyser le trafic réseau (voir https://github.com/stcarrez/etherscope).
Les protocoles suivants sont pris en charge :
La partie centrale n'a aucune dépendance, tandis que le pilote STM32 dépend de la caisse Ethernet, car il implémente l'interface MDIO qui y est définie.
Pour utiliser la bibliothèque avec Alire, exécutez simplement alr with enet
(pour la partie principale). Pour utiliser le pilote STM32, exécutez alr with enet_stm32
.
Voir plus de détails sur le Wiki.
Nous fournissons une simple démo ping_text_io. Cette démo est indépendante de toute carte particulière et vous pouvez la construire en fournissant le runtime requis, par exemple :
alr -C demos/ping_text_io/ build -- -XRUNTIME=embedded-stm32f746disco
Lorsque vous flashez l'exécutable, la carte recevra une adresse IP via DHCP et pingera la passerelle par défaut. Vous pouvez voir les messages ping émis à l'aide des routines standard Ada.Text_IO.
Quatre applications de démonstration supplémentaires sont fournies pour illustrer comment vous pouvez utiliser les différentes fonctionnalités réseau. Ils nécessitent une carte Discovery STM32F429, STM32F746 ou STM32F769 pour fonctionner. Ces exemples dépendent d'Ada_Drivers_Library et n'utilisent pas Alire pour la construction. Au lieu de cela, assurez-vous d'avoir la chaîne d'outils croisées GNAT ARM dans votre PATH
, puis exécutez :
configure --with-board=stm32f746 # or stm32f769 or stm32f429
Ensuite, exécutez make checkout
pour télécharger les dépendances nécessaires. Enfin, make all
construira les quatre démos.
Les applications de démonstration utilisent le client DHCP pour obtenir une adresse IPv4 et obtenir la passerelle et le DNS par défaut.
Pour certaines applications de démonstration, vous pouvez passer à une configuration IP statique en éditant le fichier demos/utils/demo.adb et en dé-commentant et en modifiant les lignes suivantes :
Ifnet.Ip := ( 192 , 168 , 1 , 2 );
Ifnet.Gateway := ( 192 , 168 , 1 , 240 );
Ifnet.Dns := ( 192 , 168 , 1 , 240 );
et désactivez la configuration DHCP en commentant la ligne :
-- Dhcp.Initialize (Ifnet'Access);
L'application ping implémente un simple ping sur plusieurs hôtes et affiche les compteurs ping sur l'écran LCD du STM32F. L'application répondra également aux requêtes ping.
Pour créer l'application Ping, vous pouvez exécuter :
make ping
Et pour flasher l'image ping, vous pouvez utiliser :
make flash-ping
L'application d'écho montre un simple serveur UDP qui fait écho au paquet reçu (RFC 862). Il écoute sur le port UDP 7, boucle pour attendre les paquets UDP, les renvoie et incrémente un compteur de paquets reçus qui s'affiche sur l'écran LCD du STM32. L'application echo est décrite dans l'article : Simple UDP Echo Server sur STM32F746
Pour créer l'application Echo, vous pouvez exécuter :
make echo
Et pour flasher l'image d'écho, vous pouvez utiliser :
make flash-echo
Et pour tester le serveur echo UDP, vous pouvez utiliser la commande socat sur GNU/Linux. Par exemple:
echo -n ' Hello! Ada is great! ' | socat - UDP:192.168.1.156:7
L'application DNS affiche un simple résolveur de client DNS qui interroge un DNS pour résoudre une liste d'hôtes.
Pour créer l'application DNS, vous pouvez exécuter :
make dns
Et pour flasher l’image DNS, vous pouvez utiliser :
make flash-dns
L'application de temps utilise le client NTP pour récupérer la date GMT à partir d'un serveur NTP et affiche l'heure GMT dès que la synchronisation NTP est obtenue. L'application répondra également aux requêtes ping.
Pour créer l'application Time, vous pouvez exécuter :
make time
Et pour flasher l’image temporelle, vous pouvez utiliser :
make flash-time
Apache-2.0 © Stéphane Carrez