PC mit uC per Ethernet verbinden; wo soll ich denn anfangen.

Gast #629629
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
Gast #629634
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.
Gast #629647
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.
Gast #629659
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?
Gast #629662
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?
Gast #629670
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.
Gast #629684
'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.
Gast #629692
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.
Gast #629694
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
Gast #629710
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.
#629715
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...
#629730
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 ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.