Hallo liebes Forum, ich habe ein Board mit STM32F107 und PHY gebastelt und bin nun dabei die Implementierung des LWIP Stacks zu testen. Über mein Laptop sende ich ein ping der kommt auch über Ethernet->PHY->RMII beim Controller an und über RMII wird ein ARP response gesendet. Dieses ARP Frame habe ich auf Bitebene (RMII) analysiert und es ist korrekt. Mein Laptop empfängt nichts, der RX Packets Zähler bleibt bei 0 stehen und es kommt "Destination Host Unreachable". Die ARP Tabelle bleibt auch leer. Speed ist 100MBit und AutoNeg ist bei beiden an. Wie würdet ihr bei der Fehlersuche vorgehen? Was könnte die Ursache sein? Kann der Laptop falsch konfiguriert sein? Gibt es unter Linux Tools die mir beim debugging helfen (abseits von wireshark)?
1. wie lautet die IP und Subnet-Mask vom Board und vom Notebook?
Laptop IP: 192.168.0.1 subnet mask: 255.255.255.0 STM32F107 Board IP: 192.168.0.8 subnet mask: 255.255.255.0 gateway: 192.168.0.1
3. sind die Beiden allein im Netzwerk oder könnte ein DHCP Server dazwischen funken? 4. wenn es nur die Beiden sind, hast Du mal die firewall ausgeschaltet?
>Dieses ARP Frame habe ich auf Bitebene (RMII) >analysiert und es ist korrekt. - MAC-Adresse beim LWIP eingestellt? Wie sieht denn das ARP Paket genau aus? Hast du ein pcap-Trace (Wireshark)?
Es ist eine 1:1 Verbindung. Firewall ist ausgeschaltet. MAC Adresse ist vergeben (00:00:00:00:00:01) und ist in der ARP Antwort als Quell MAC Adresse korrekt enthalten.
Hat zwar nicht unmittelbar mit deinem Problem zu tun, aber wenn ich eine MAC-Adresse benötige benutze ich dieses Tool: https://www.hellion.org.uk/cgi-bin/randmac.pl Damit bekomme ich eine "local administered MAC".
Läuft denn ICMP auch? Also gibt es ein: #define LWIP_ICMP 1 ?
Hey, wenn ARP schon nicht richtig geht, brauchst Du nicht bei ICMP zu suchen. Folgende Reihenfolge hilft bei der Fehlersuche: 1. Paketempfang auf uC sicherstellen 2. Paketsenden von uC zu Host sicherstellen (wireshark + promiscuous mode) 3. ARP request empfangen 4. ARP reply aussenden (Checksumme im wireshark richtig?) 5. IP/ICMP echo request empfangen 6. IP/ICMP echo response schicken (Checksumme(n) im wireshark richitg?) Dann kann es mit UDP oder TCP weitergehen. Solange die ARP replys beim Host noch nicht ankommen, braucht man keine Netzmaske, kein ICMP und auch kein DHCP. Das kommt alles viel später.
Moin Jan, mein Nucleo-F746 ist heute angekommen, so das ich deine Konfiguration mal kurz getestet habe. Am Router per Kabel mit DHCP -> alles Super. Bei der Direktverbindung zum Ubuntu-PC ging das Ping genau ein Mal. Der Grund: da ich nur temporär die IP zuweisen wollte, habe ich auf der Konsole mit "ip addr add" die Adresse angegeben. Nur ist diese dann - vermutlich durch den Network-Manager - nach ein paar Sekunden wieder verschwunden und somit kein weiterer Ping möglich. Egal ob das WLAN aktiv ist oder nicht. Ist deine PC IP dauerhaft eingestellt/noch vorhanden?
Über Wireshark sehe ich das keine Pakete empfangen werden. Meine IP ist statisch festgelegt. Komisch finde ich das ich eine IPv6 Addresse habe. Wie kann das sein? Ich kenn mich damit leider nicht gut genug aus. ifconfig liefert: eth0 Link encap:Ethernet HWaddr 60:02:XX:XX:XX:XX inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: XXXX::XXXX:XXXX:XXXX:XXXX/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:428 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:29513 (29.5 KB) Interrupt:18
Jan schrieb: > Über Wireshark sehe ich das keine Pakete empfangen werden. Dann prüfe erstmal, ob der ARP-Request im Mikrocontroller ankommt. (per printf-UART-Debugging oder per JTAG/SWD-Debugzugriff) > Meine IP ist statisch festgelegt. > Komisch finde ich das ich eine IPv6 Addresse habe. Wie kann das sein? > Ich kenn mich damit leider nicht gut genug aus. Da stehen doch zwei Adressen da: > inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 > inet6 addr: XXXX::XXXX:XXXX:XXXX:XXXX/64 Scope:Link Der Netzwerkstack des Hosts kann beides unterscheiden. Dafür ist schließlich das Versionsfeld bei IP da: https://de.wikipedia.org/wiki/IP-Paket#Version
LHA schrieb: > Dann prüfe erstmal, ob der ARP-Request im Mikrocontroller ankommt. > (per printf-UART-Debugging oder per JTAG/SWD-Debugzugriff) Das kommt an und wird daraufhin beantwortet mit einem ARP Response. Dieser kommt nur nie am Laptop an. Spannungspegel, Augendiagramme, Takte habe ich geprüft und alles ist in Ordnung. Ich werde demnächst wohl erstmal mein PHY allein an eine andere Hardware hängen und testen.
Kannst ja einfach mal versuchen dein Board direkt an den Router zu stecken und per DHCP eine IPv4 zu beziehen.
Das Problem ist gelöst :-D Habe den PHY ausgetauscht, der war wohl kaputt. Tipp: schon beim Linkaufbau empfängt man RX Pakete also unabhängig vom LWIP Stack. Vielen Dank für die Vorschläge.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.