mikrocontroller.net

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


Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ENC28j60
oder
PIC18F67j60
oder
...

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank (Gast)
Datum:

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

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wie kann man den UDP/IP stack von Windows benutzen?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

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

Um welchen µC geht es überhaupt?

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

es geht um diesen uC:
http://www.embeddedartists.com/products/uclinux/oe...

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: H.B. (Gast)
Datum:

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

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian :-) (keep_smiling)
Datum:

Bewertung
0 lesenswert
nicht 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/sock... 
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...

Autor: H.B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Sebastian
werde ich machen!

Autor: Sebastian :-) (keep_smiling)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.