Hallo,
ich hab mir was vorgenommen: mein Pc mit einem uC per Ethernet verbinden
mittels UDP/IP Protokoll,ich weiss aber nicht wo ich anfangen soll, ich
hab die ganze Zeit lektüre gemacht über ISO/OSI Schichten ,Socket
Programmierung und gegooglt,ein praktichen Anfang hab ich leider nicht
gefunden
WO UND WIE SOLL ICH DENN ANFANGEN...?
Ich wäre für jede Hilfe sehr dankbar
Für Coldfire von Freescale gibt es fertige Demo-Versionen (NicheLite)
oder AVR32 (komplettes Eva-Kit) oder diverse ARMs ...
Da gibt es ne Menge (meist 32-Bit) Eva-Kits mit Ethernet inkl. Demos.
vielleicht mal mit der UDP Beschreibung aus dem Wikipedia und den RFCs
anfangen. Für einfaches UDP ohne Fragmentierung kann man einen Ethernet
Frame mit dem UDP Header füllen, Nutzdaten dahinterpacken und Checksum
berechnen. Ja und das ARP sollte man noch können damit man seinen Gegner
findet.
hallo Frank,
das Problem ist das,ich auch ein Bedienungsprogramm auf mein PC
programmieren will, dass der UDP/IP von windows benutzt, ich habe keine
Ahnung ob das geht und wie?
Hallo JojoS,
glaub mir ich hab genug liktüre gemacht, jetzt will ich mal mit dem
Programmieren anfangen,
womit fangt mal so beim Protokoll programmieren?
Natürich geht das. Wenn es graphisch sein soll, würde ich von C abraten,
da gibt es nämlich bequemeres. Ich für meinen Teil arbeite gern mit
python. Klassen für UDP sind verfügbar und für die Oberfläche nehme ich
wxWidgets. Plattformunabhängig, kostenlos, Programmieraufwand < 0.5 *
C++. Um Die Kommunikation und den Umgang mit UDP zu testen muss ja noch
nicht unbedingt ne Oberfläche vorhanden sein.
'wie programmieren' hängt doch von der Umgebung ab. Auf dem PC ist es
einfach, für alle 'grosse' Systeme wie .Net, Delphi, Java usw. gibt es
UDP Klassen die nur Adresse, Portnr. und Daten brauchen. In C kriegt man
auf allen Systemen die Standard Berkley Sockets, für UDP suche da nach
'sendto' und 'recvfrom'. Beim µC System hängt es natürlich von IP
Implementierung ab, es gibt hier aber auch freie IP Stacks so das du
hier den gleichen Level in C nutzen kannst.
Wenn es einfacher gestrickt sein soll dann erstmal auf dem µC versuchen
beliebige Ethernet Frames zu empfangen und dann die UPD Daten über die
Headerauswertung rausfischen.
google er nach 'beispiel udp sendto' und schon hagelt es Beispiele...
http://www.c-worker.ch/tuts/udp.php enthält z.B. recht gute erklärungen.
Jetzt bist du aber dran mit Hausaufgaben machen.
hast du vielleicht ein kommentiertes UDP/IP module wo ich sehen kann
wie es gemacht wird? wäre sehr nett
alle verfügbare stack sind leider überhaupt nicht kommentirert.
Wenn da wirklich ein ucLinux drauf ist hast du schon einen IP-Stack und
alles was du brauchst. Mit einer Google-Suche nach "Linux UDP" solltest
du alle nötigen Informationen finden.
wie kann ich diesen Linux IP-stack denn benutzen, ich habe in Google
nach Linux-usb gesucht ich habe aber nichts darüber gefunden.
sorry wenn zu viel frage, aber ich bin so zu sagen blind in diesem
Bereich
ok, einen habe ich noch: installiere dir erstmal einen Netzwerkanalyser,
z.B. Wireshark. Dann kannst du erstmal den UDP Sender bauen (unter
Windows oder Linux, ist einfacher) und sehen ob die UDP Pakete ins Netz
gehen.
Hi,
Mein Vorschlag:
also, ich würde dir raten, erst einmal mit der PC-Seite anzufangen.
Unter
http://www.ztt.fh-worms.de/de/others/sem/ss95/sockets/sockets.html
findest du ein ganz nützliches Tutorial. Dann versuchst du ein Programm
zum senden und eins zum empfangen zu schreiben. Als nächstes kannst du
es testen, indem du etwas an dich selber schickst, sprich deine eig. IP
als Empfänger angibst.
Wenn du dich an den Controller wagst, schau erst mal, dass du den zum
Stand "LED-blinkt" bringst. Dann versuch, den Treiber für die MAC/PHY
(Ethernetmodul) zu schreiben - nicht ganz leicht, aber bei deinem
Controller gibt es vielleicht im Internet auch ein Beispiel (application
note und so).
Nun installierst du dir das Programm Wireshark (oder den Vorgänger
Ethereal), dass es im Internet kostenlos gibt und verbindest den
Controller mit dem PC. Mit dem Programm kannst du aufzeichnen, welche
Packete über deine Netzwerkkarte laufen (und später auch die Protokolle
sehr gut analysieren). Allerdings zeigt dir das Programm auch das auf,
was du schickst, wenn du noch kein Protokoll verwendest.
So kannst du den Treiber erstmal unabhängig testen, d.h. was vom
Controller schicken (irgend nen Buffer) und schauen, ob was ankommt,
bzw. mit UDP was vom PC schicken und schauen, ob die Länge passt und
so... Treiber wird die erste, eig. größte Hürde ;-) aber mit application
note und so geht das schon...
TCP/IP-Stack für den uController gibt es einige - sind da ja auch einige
Diskussionsbeiträge hier im Forum. Persönlich verwende ich uIP. Schau
dir mal die ganzen Beiträge an und mach dir ne Liste mit +/- und
entscheid dich dann für ne Lösung.
Dann inplementierst du das, versuchst erstmal nur "ping" zum laufen zum
bringen. Na ja - ab hier unterscheiden sich die Wege :-)
Wichtig ist nur - nicht frustrieren lassen ;-) TCP/IP ist mächtig, aber
das macht der Stack zum größten Teil für dich... der Hardwaretreiber für
das Ethernet-Modul ist halt erstmal n Knackpunkt...
Hab grad gesehen, das Tutorial ist für TCP, aber soo gravierend
unterscheiden die sich nicht. Wichtig ist, dass du nen anderen socket
anforderst, also kein stream, wie im Tutorial gefodert:
/* Socket anlegen. */
sock = socket (AF_INET, SOCK_STREAM, 0);
sondern ein Datagramm: sock = socket (AF_INET, SOCK_DGRAM, 0); ... dann
binden, empfangen ... da gibt's aber dutzende Tutorials im Internet -
auch zu UDP).
Ach ja - und wenn du den uController testen willst: halte das Netz erst
mal klein, d..h. am Besten nur PC und Controller und nicht gleich ans
Internet ;-)