Diese Bibliothek ist ein modularer Netzwerkstapel, der ARP-, IPv4-, UDP-, DNS- und DHCP-Protokolle auf einem Ethernet-Treiber implementiert. Es ist in zwei Teile unterteilt: einen hardwareunabhängigen Kern und einen spezifischen Treiber für STM32F7xx- und STM32F4xx-Karten. Dadurch können Sie problemlos IPv4-Netzwerkzugriff auf Ihr Projekt bereitstellen. Die Bibliothek wird vom EtherScope-Projekt zur Erfassung und Analyse des Netzwerkverkehrs verwendet (siehe https://github.com/stcarrez/etherscope).
Die folgenden Protokolle werden unterstützt:
Der Kernteil weist keine Abhängigkeiten auf, während der STM32-Treiber von der Ethernet-Kiste abhängt, da er die dort definierte MDIO-Schnittstelle implementiert.
Um die Bibliothek mit Alire zu verwenden, führen Sie einfach alr with enet
aus (für den Kernteil). Um den STM32-Treiber zu verwenden, führen Sie alr with enet_stm32
aus.
Weitere Details finden Sie im Wiki.
Wir bieten eine einfache ping_text_io-Demo. Diese Demo ist unabhängig von einem bestimmten Board und Sie können sie erstellen, indem Sie die erforderliche Laufzeit bereitstellen, zum Beispiel:
alr -C demos/ping_text_io/ build -- -XRUNTIME=embedded-stm32f746disco
Wenn Sie die ausführbare Datei flashen, erhält das Board eine IP-Adresse über DHCP und pingt das Standard-Gateway an. Sie können die Ping-Nachrichten sehen, die mit den Standardroutinen von Ada.Text_IO ausgegeben werden.
Es werden vier zusätzliche Demoanwendungen bereitgestellt, um zu veranschaulichen, wie Sie die verschiedenen Netzwerkfunktionen nutzen können. Zum Betrieb ist ein STM32F429-, STM32F746- oder STM32F769 Discovery-Board erforderlich. Diese Beispiele hängen von der Ada_Drivers_Library ab und verwenden Alire nicht zum Erstellen. Stellen Sie stattdessen sicher, dass Sie die GNAT ARM Cross-Toolchain in Ihrem PATH
haben, und führen Sie dann Folgendes aus:
configure --with-board=stm32f746 # or stm32f769 or stm32f429
Führen Sie dann make checkout
aus, um die erforderlichen Abhängigkeiten herunterzuladen. Schließlich erstellt make all
alle vier Demos.
Die Demoanwendungen verwenden den DHCP-Client, um eine IPv4-Adresse sowie das Standard-Gateway und DNS zu erhalten.
Bei einigen Demoanwendungen können Sie zu einer statischen IP-Konfiguration wechseln, indem Sie die Datei demos/utils/demo.adb bearbeiten und die folgenden Zeilen auskommentieren und ändern:
Ifnet.Ip := ( 192 , 168 , 1 , 2 );
Ifnet.Gateway := ( 192 , 168 , 1 , 240 );
Ifnet.Dns := ( 192 , 168 , 1 , 240 );
und deaktivieren Sie die DHCP-Konfiguration, indem Sie die Zeile kommentieren:
-- Dhcp.Initialize (Ifnet'Access);
Die Ping-Anwendung implementiert einen einfachen Ping auf mehreren Hosts und zeigt die Ping-Zähler auf dem STM32F-LCD-Display an. Die Anwendung beantwortet auch Ping-Anfragen.
Um die Ping-Anwendung zu erstellen, können Sie Folgendes ausführen:
make ping
Und um das Ping-Bild zu flashen, können Sie Folgendes verwenden:
make flash-ping
Die Echo-Anwendung zeigt einen einfachen UDP-Server, der das empfangene Paket echot (RFC 862). Es lauscht am UDP-Port 7, wartet in einer Schleife auf UDP-Pakete, gibt sie zurück und erhöht einen Zähler der empfangenen Pakete, der auf dem STM32-LCD-Display angezeigt wird. Die Echo-Anwendung wird im Artikel „Simple UDP Echo Server on STM32F746“ beschrieben
Um die Echo-Anwendung zu erstellen, können Sie Folgendes ausführen:
make echo
Und um das Echobild zu flashen, können Sie Folgendes verwenden:
make flash-echo
Und um den Echo-UDP-Server zu testen, können Sie unter GNU/Linux den Befehl socat verwenden. Zum Beispiel:
echo -n ' Hello! Ada is great! ' | socat - UDP:192.168.1.156:7
Die DNS-Anwendung zeigt einen einfachen DNS-Client-Resolver, der einen DNS abfragt, um eine Liste von Hosts aufzulösen.
Um die DNS-Anwendung zu erstellen, können Sie Folgendes ausführen:
make dns
Und um das DNS-Image zu flashen, können Sie Folgendes verwenden:
make flash-dns
Die Zeitanwendung ruft mithilfe des NTP-Clients das GMT-Datum von einem NTP-Server ab und zeigt die GMT-Zeit an, sobald die NTP-Synchronisierung erfolgt ist. Die Anwendung beantwortet auch Ping-Anfragen.
Um die Time-Anwendung zu erstellen, können Sie Folgendes ausführen:
make time
Und um das Zeitbild zu flashen, können Sie Folgendes verwenden:
make flash-time
Apache-2.0 © Stephane Carrez