Esta biblioteca es una pila de red modular que implementa los protocolos ARP, IPv4, UDP, DNS y DHCP sobre un controlador Ethernet. Se divide en dos partes: un núcleo independiente del hardware y un controlador específico para las placas STM32F7xx y STM32F4xx. Esto le permite proporcionar acceso a la red IPv4 a su proyecto con facilidad. El proyecto EtherScope utiliza la biblioteca para capturar y analizar el tráfico de red (consulte https://github.com/stcarrez/etherscope).
Se admiten los siguientes protocolos:
La parte principal no tiene dependencias, mientras que el controlador STM32 depende de la caja Ethernet, ya que implementa la interfaz MDIO definida allí.
Para usar la biblioteca con Alire simplemente ejecute alr with enet
(para la parte principal). Para utilizar el controlador STM32, ejecute alr with enet_stm32
.
Ver más detalles en la Wiki.
Ofrecemos una demostración sencilla de ping_text_io. Esta demostración es independiente de cualquier placa en particular y puede crearla proporcionando el tiempo de ejecución requerido, por ejemplo:
alr -C demos/ping_text_io/ build -- -XRUNTIME=embedded-stm32f746disco
Cuando actualice el ejecutable, la placa recibirá una dirección IP a través de DHCP y hará ping a la puerta de enlace predeterminada. Puede ver los mensajes de ping emitidos utilizando las rutinas estándar Ada.Text_IO.
Se proporcionan cuatro aplicaciones de demostración adicionales para ilustrar cómo puede utilizar las diferentes funciones de red. Requieren una placa Discovery STM32F429, STM32F746 o STM32F769 para funcionar. Estos ejemplos dependen de Ada_Drivers_Library y no utilizan Alire para la compilación. En su lugar, asegúrese de tener la cadena de herramientas cruzada GNAT ARM en su PATH
, luego ejecute:
configure --with-board=stm32f746 # or stm32f769 or stm32f429
Luego, ejecute make checkout
para descargar las dependencias necesarias. Finalmente, make all
creará las cuatro demostraciones.
Las aplicaciones de demostración utilizan el cliente DHCP para obtener una dirección IPv4 y obtener la puerta de enlace y el DNS predeterminados.
Para algunas aplicaciones de demostración, puede cambiar a una configuración de IP estática editando el archivo demos/utils/demo.adb y descomentando y modificando las siguientes líneas:
Ifnet.Ip := ( 192 , 168 , 1 , 2 );
Ifnet.Gateway := ( 192 , 168 , 1 , 240 );
Ifnet.Dns := ( 192 , 168 , 1 , 240 );
y deshabilite la configuración de DHCP comentando la línea:
-- Dhcp.Initialize (Ifnet'Access);
La aplicación de ping implementa un ping simple en varios hosts y muestra los contadores de ping en la pantalla LCD STM32F. La aplicación también responderá a solicitudes de ping.
Para construir la aplicación Ping puede ejecutar:
make ping
Y para mostrar la imagen del ping, puedes usar:
make flash-ping
La aplicación de eco muestra un servidor UDP simple que hace eco del paquete recibido (RFC 862). Escucha en el puerto UDP 7, realiza un bucle para esperar paquetes UDP, los devuelve e incrementa un contador de paquetes recibidos que se muestra en la pantalla LCD STM32. La aplicación de eco se describe en el artículo: Servidor de eco UDP simple en STM32F746
Para crear la aplicación Echo, puede ejecutar:
make echo
Y para mostrar la imagen del eco, puedes usar:
make flash-echo
Y para probar el servidor echo UDP, puede usar el comando socat en GNU/Linux. Por ejemplo:
echo -n ' Hello! Ada is great! ' | socat - UDP:192.168.1.156:7
La aplicación dns muestra un solucionador de cliente DNS simple que consulta un DNS para resolver una lista de hosts.
Para construir la aplicación dns puede ejecutar:
make dns
Y para flashear la imagen dns, puedes usar:
make flash-dns
La aplicación de hora utiliza el cliente NTP para recuperar la fecha GMT de un servidor NTP y muestra la hora GMT tan pronto como se obtiene la sincronización NTP. La aplicación también responderá a solicitudes de ping.
Para crear la aplicación Time, puede ejecutar:
make time
Y para mostrar la imagen de la hora, puedes usar:
make flash-time
Apache-2.0 © Stéphane Carrez