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.
vielen Dank! ich meine eigentlich wie kann ich mit c ein UDP/IP Stack programmieren? was uC angeht es gibt wie ihr gepostet habt viele Varianten.
troll? socket und udp liefern bei google doch tausende tutorials für dummies. wo liegt also das problem?
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.
Zum Protokoll: Man fängt mit der Definition an! Also was soll es können und wie codiert man es in bits und bytes (nach Lust und Laune).
und wie kann man den UDP/IP stack von Windows benutzen?
IP-Stacks gibt es schon wie Sand am Meer: uIP, lwIP, Ethernut, BSD, ... Um welchen µC geht es überhaupt?
Hallo Andreas, es geht um diesen uC: http://www.embeddedartists.com/products/uclinux/oem_lpc2468.php
'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
und noch kompletter: http://www.pronix.de/pronix-300.html Grundlage sind jetzt noch: 1. gcc starten können 2. google bedienen können
Danke an JojoS und Andreas, und wenn ihr noch weitere nützliche Links wisst, wäre super!
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 ;-)
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.