In LabView UDP Pakete vom FPGA auslesen

OP #4910498
Lesenswert?

Hi Zusammen,

Das ARTY FPGA dev Board habe ich mit dem Ethernet Code von Hamsterworks 
'programmiert' : 
http://hamsterworks.co.nz/mediawiki/index.php/ArtyEthernet

Den Code habe ich soweit angepasst, dass Daten von einem Sensor über 
Ethernet an den PC gesendet werden.
Über Wireshark habe ich auch keine Probleme die UDP Pakete mit den 
Sensordaten zu empfangen, jedoch über LabView bekomme ich keine Daten.

Zu UDP LabView gibt es ja viele Beispiel VIs, habe einige getestet und 
auch mein eigenes aufgebaut, aber es kommt nichts an.

Es hat wohl irgendetwas mit DHCP? zu tun, davon verstehe  ich aber recht 
wenig. Habe sämtliche Foren zu diesem Problem durchsucht und auch viele 
Problem"lösungen" angewandt, aber half alles nichts.

Im VHDL-Code des Arty kann ich zB. den Port, die MAC und IP für source 
und destination einstellen. Kann diese dann auch in Wireshark sehen. Den 
Port habe ich natürlich angepasst, wird auf 8012 geschickt.

Hier ist der Code zum ArtyEthernet: 
https://github.com/hamsternz/ArtyEtherentTX

Vielleicht hilft das: Ich konnte das Board auch nicht anpingen über cmd. 
Es ist mit einem LAN kabel am PC angeschlossen.
Angehängte Dateien:
Gast #4910578
Lesenswert?

Moin,

wenn der Ping nicht ankommt: vielleicht kann dein Stack kein ICMP?
An DHCP sollte es nicht liegen (du hast ja offenbar ne statische IP 
vorgesehen), aber ARP sollte dein Stack schon unterstützen. Gibt hier 
einige Threads zu.
Wichtig ist auch, dass die Pakete regelmässig "reinknattern", sonst 
schmeisst der hostseitige Stack einiges weg, dabei sollte aber 
wenigstens ab und an eins ankommen, das wird's also kaum sein.
Jetz ist mir aber grade aufgefallen: Deine deadbeef-MAC ist eine 
Ethernet-Gruppenadresse! Nimm mal eine andere (erstes Byte mal auf 0x00 
setzen).
#4910617
Lesenswert?

Irgendwie erschliesst sich mir Dein Setup nicht ganz. Du hast dieses
"Arty FPGA" Board mit einem Ethernet Kabel in Deinem Netzwerk ?
Das Board hat eine fixe IP-Adresse, die in Dein Netzwerk passt ?
Das Board sendet auf welchem UDP Port ? 8011 und 8012 sehe ich im Dump.

Wenn Du die Daten auf dem PC im Whireshark siehst, ist das schon mal 
gut.
Was Du jetzt brauchst ist ein UDP Receiverscript/Programm, welches auf 
dem
entsprechenden UDP-Port lauscht. Ob Labview das kann weiss ich nicht.

Ich sende so meine Wetterdaten von den Sensoren über mein Heimnetzwerk
an ein Display und an zwei PC's.

G D
OP #4910642
Lesenswert?

Der Aufbau ist ganz einfach , Artyboard---Ethernet Kabel---PC , mehr 
nicht.
Die fixe IP-Adresse habe ich ganz einfach im Code des FPGAs frei 
eingetragen, kann aber geändert werden. Das Board sendet auf Port 8012.

Ja ... LabView , wenn man da iwie lauschen könnte .. ;( . Irgendwas 
passt dem Nicht ... ich habe auch das "UDP Send and Receive" in LabView 
getestet(unabhängig vom Board),das läuft.

Hatte den Port auch schon mal geändert, falls der eine besetzt sein 
sollte .. aber nix.
Angehängte Dateien:
Gast #4911437
Lesenswert?

Waldemar M. schrieb:
> ja das geht,
>
> Ich glaube meine Ethernet Implementierung von Hamsterworks unterstützt
> Protokolle wie ARP, IP, ICMP,  DHCP gar nicht... schickt nur stumpf UDP
>
> Muss wohl nach einem besseren IP core suchen :S

Hab mal kurz in den Link geschaut, in der Tat ist das eine "nackte" 
UDP-Engine. Für ARP/ICMP würde ich zu einer SW-Implementation raten, 
aber damit machst du natürlich das Soft-CPU-Fass auf und verlierst je 
nach Architektur Performance (vllt weniger relevant bei deiner 
Anwendung).
Du könntest aber auch ARP als simple state machine dazustricken. Musst 
nur ein paar Stolperfallen beachten und bösartige ARP-Requests 
maskieren.
Mit den ARP-Manipulationstricks von mfro oben sollten deine Pakete aber 
ansich auch so in deinem Labview-UDP-Server ankommen. Merkwürdig...
Gast #4911447
Lesenswert?

Strubi schrieb:
> Für ARP/ICMP würde ich zu einer SW-Implementation raten
Ich prinzipiell auch.
Möglicherweise lässt sich das hamster-Ding aber auch einfach in Hardware 
um ARP-reply und Ping(ICMP)-reply erweitern.
WIMRE schickt man da die empfangenen Pakte leicht modifiziert zurück.

Duke
OP #4913663
Lesenswert?

Nach langem hin und her Hab ichs doch hinbekommen, In LabView Daten zu 
empfangen.
Habe den gleichen Code ARYT EthernetTX von Hamsterworks genommen und den 
Ethernet-Frame nicht gekürtzt, darin lag mein Fehler, dass ich den zu 
klein gemacht habe und dann der Trailer/FCS abgeschnitten wurde??

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren