Forum: Mikrocontroller und Digitale Elektronik PC mit uC per Ethernet verbinden; wo soll ich denn anfangen.


von H.B. (Gast)


Lesenswert?

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

von tt (Gast)


Lesenswert?

ENC28j60
oder
PIC18F67j60
oder
...

von Bastler (Gast)


Lesenswert?

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.

von H.B. (Gast)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

troll? socket und udp liefern bei google doch tausende tutorials für 
dummies. wo liegt also das problem?

von JojoS (Gast)


Lesenswert?

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.

von H.B. (Gast)


Lesenswert?

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?

von H.B. (Gast)


Lesenswert?

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?

von Frank (Gast)


Lesenswert?

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.

von Frank (Gast)


Lesenswert?

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).

von H.B. (Gast)


Lesenswert?

und wie kann man den UDP/IP stack von Windows benutzen?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

IP-Stacks gibt es schon wie Sand am Meer: uIP, lwIP, Ethernut, BSD, ...

Um welchen µC geht es überhaupt?

von H.B. (Gast)


Lesenswert?


von JojoS (Gast)


Lesenswert?

'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.

von JojoS (Gast)


Lesenswert?

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.

von H.B. (Gast)


Lesenswert?

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.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von H.B. (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?


von JojoS (Gast)


Lesenswert?

und noch kompletter:
http://www.pronix.de/pronix-300.html

Grundlage sind jetzt noch:
1. gcc starten können
2. google bedienen können

von H.B. (Gast)


Lesenswert?

Danke an JojoS und Andreas,
und wenn ihr noch weitere nützliche Links wisst, wäre super!

von JojoS (Gast)


Lesenswert?

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.

von Sebastian :. (keep_smiling)


Lesenswert?

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...

von H.B. (Gast)


Lesenswert?

Danke Sebastian
werde ich machen!

von Sebastian :. (keep_smiling)


Lesenswert?

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
Noch kein Account? Hier anmelden.