Forum: Mikrocontroller und Digitale Elektronik Ethernet Übertragun


von Juergen2k (Gast)


Lesenswert?

Hallo,

habe gerade begonnen mit einem neuen Projekt. Es geht darum Messwerte 
die im µC zwischengespeichert werden über Ethernet an den PC zu 
übertragen. Hardwaretechnisch steht schon alles.
µC Board mit 10Base-T Ethernet Anschluss

Nun meine Frage. Kann ich über Ethernet einfach mit dem TCP Protokoll 
eine Nachricht schicken die dann vom PC empfangen wird, oder muss man 
über den HAndshake eine Verbindungssession aufbauen?

Gruß

von Matthias (Gast)


Lesenswert?

TCP ist verbindungsorientiert, man muss also logischerweise eine 
Verbindung aufbauen.

von A.K. (Gast)


Lesenswert?

Die gegenüber TCP einfachere Alternative, wenn in (im lokalen Netz eher 
selten) mal was verloren gehen darf, ist UDP. Damit wird einfach ein 
Frame zurechtgebaut und gesendet, egal ob er ankommt oder nicht.

von Juergen2k (Gast)


Lesenswert?

JApp dann wäre wohl udp passender.... Zumindets einfacher.. Wobei so 
schwierig wird das mit TCP auch nicht sein oder?

von A.K. (Gast)


Lesenswert?

Tips für Doku: Wikipedia zu TCP, und dann die dortigen Weblinks zu den 
RFCs. Analog UDP. Entscheide selbst.

von Michael König (Gast)


Lesenswert?

Ein UDP-Paket zusammenzubauen ist vergleichsweise primitiv.
TCP dagegen ist schonmal deutlich komplexer und mit der ganzen 
Flußkontrolle ein ziemliches Monster. Möchte ich nicht wirklich selber 
implementieren müssen.

Wenn du so etwas wie Flußkontrolle in UDP haben möchtest, kannst du zu 
den Nutzdaten immer noch einen fortlaufenden Zähler hinzufügen, damit 
der Empfänger merkt, wenn mal ein Paket verlorengehen sollte.

Gerade wenn es nur darum geht gelegentlich mal Werte herauszusenden, 
würde ich definitiv auf UDP setzen.

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

Hatte USB-Igor (Tscheche, der ein USB-HID in einen AVR "geprügelt" 
hat)nicht sogar einen UDP-Stack in einen AVR gesteckt?

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?


von A.K. (Gast)


Lesenswert?

Wenn die gute Igor mal sowas mit CAN machen würde...

von fieser Rahul (auch Oskar genannt) (Gast)


Lesenswert?

>Wenn die gute Igor mal sowas mit CAN machen würde...

Da wird es Probleme mit der Arbitrierung geben...
Kannst es ihm ja mal vorschlagen.

von Juergen2k (Gast)


Lesenswert?

Hallo,
hab mir heut Morgen mal den TCP durchgelesen. Ja ist schon etwas 
aufwendig. Vor allem da ja bei nem Heimnetzwerk wirklich nix verloren 
gehen sollte. :)
Das mit dem Zähler ist ne prima Idee!!! Das werd ich machen. Japp hört 
sich sehr gut an. Bin begeistert.
NAja kämpf grad noch etwas mit der Hardware rum. Will noch nicht so 
hundert pro laufen das Ethernet. Aber nunja -> that's life

von Robert S. (roberts)


Lesenswert?

Hallo,

da ich mir auch schon den Kopf zerbreche, wie ich Daten möglichst 
schnell vom µC bzw. CPLD zum PC übertrage, finde ich UDP momentan auch 
am besten.
USB-480/Firewire400 ist mir einfach zu kompliziert.
Mit Beck-Ipc hab ich schon Erfahrungen gesammelt, da ist UDP auf der 
Beck bzw. PC seite total easy. Um die Geschwindigkeit zu erhöhen, greife 
ich die Idee vom Matthias Weißer (matthias) -> 
Beitrag "USB2.0 High-Speed"
auf. Prinzip: im FPGA wird der Ethernet/TCP Header mit UDP Daten (UDP 
Daten mit Zähler) gemacht, und mit einem Ethernet-Chip auf die Reise 
geschickt.
Ich hab blos null Ahnung, welche Eigenschaften der 10/100 Baustein haben 
soll. Nehme mal an, dass z.B. der Micrel KSZ8841 dafür geeignet ist.
Mit FPGA hab ich bisher noch nichts gemacht, denn den braucht man für 
CheckSum Berechnung. Also da brauche ich noch Unterstützung.
Die Kommunikation zum µC mache ich in meinem Projekt mit RS232, damit
würde ich den Paketverlust auch handle'n.
Falls sich jemand für meine PC-Socket Einbindung (in Pascal) 
interessiert? ich helfe gerne.
Gruß Robert


von Robert S. (roberts)


Lesenswert?

Ich will noch einige Details ergänzen.
Momentan sieht mein Prototyp-System so aus:


      2GByte NAND-Flash
            |
       ------------                ------------
       |   CPLD   |       8        |  PC      |
CMOS --| Xilinx   | -----/------>  | LPT-EPP  |
Sensor | XC2C256  |                |          |
       ------------                |          |
            |                      |          |
       ---------------             |          |
       |   µC        |             |          |
       | TI          | <-------->  | RS232    |
       | msp430f2013 |             |          |
       ---------------             ------------

Das soll auch erst mal so bleiben, bis halt alles getestet ist. Nur will 
ich, um die Datenrate zu erhöhen, die EPP Verbindung gegen Ethernet 
ersetzen. Statt dem CPLD müsste da ein FPGA mit Ethernet-Chip hin, das 
wäre dann ein zukunftsicheres Design. Und der Umstieg von 100MBit nach 
Giga-Bit sollte dann eher simpel sein.
Wunsch Datenraten:
100Base-T   5..8MByte
1000Base-T  30..60MByte

Mit EPP schaffe ich 1.2 MByte (gemessen).
Da ich absolut keinen Zeitdruck habe, weil priv. Projekt, wäre es super 
wenn mir jemand Tipps über div. Ethernet-Chips, auch Giga-Bit, geben 
könnte.
Danke, Gruß Robert















von Holger (Gast)


Lesenswert?

www.dacomwest.de  da suchen nach : NON-PCI ETHERNET CHIPS
www.sparkfun.com

von guro (Gast)


Lesenswert?

es gibt auch tcp-stacks speziell für microcontroller.
z.b. der hier: http://sourceforge.net/projects/opentcp/
auf 'nem freescale-S12 braucht der etwa 4k ROM.
der ram-bedarf ist etwa 1500 bytes (sende/empfangsbuffer und ein paar 
variablen) maximal. natürlich geht's auch mit viel weniger ram, weil man 
bei der tcp-verbindungsaufnahme die paketgrösse aushandeln kann 
(theoretisch bis runter zu 1 byte nutzdaten pro paket).

ach ja...
noch ein kleineres tcp findet ihr hier: http://www.sics.se/~adam/uip/
der tut's sogar auf 8-bittern. was kleineres gibt's nicht ;)

von Holger (Gast)


Lesenswert?

@Robert
Interessantes Projekt.
Ich hätte gerne Infos
zu dem EPP Mode. Hat man da einen seperaten
IRQ Händler, oder wird da gepollt ?
Wen das Master-LPT<->LPT bidir. mit IRQ-ACK, so wie LAPLINK EPP ect.
Also kein Zeichen overflow kommt.
Berichte mal ????
Gruss Holger


von Robert S. (roberts)


Lesenswert?

@Holger
schau mal auf http://www.geekhideout.com/iodll.shtml
diese IO DLL nehme ich momentan.
Weitere Infos zu Register und Anschluss:
http://www.beyondlogic.org/epp/epp.htm#1
Wie das mit IRQ geht, weiß ich nicht, eher mit ECP.
Ich nutze den EPP mode (im Bios muss der LPT auf EPP stehen).
Bei der DLL von www.geekhideout.com kann man auch 32Bit Zugriffe machen,
EPP unterstützt das voll und dann schaffst Du ca. 1.3MByte/s in oder 
out.
Wichtig: bei EPP gibts das /WAIT Signal für die HW-Flusskontrolle.
Wenn Du DataStrobe negierst (TTL Inverter) und auf /WAIT lötest, dann 
und nur dann ergibt das maximale Datenrate.

@guro
TCP/IP ist Softwaremäßig einfach zu langsam, da habe ich auch genügent 
Lösungen. Der Gag vom seiner (matthias) Idee ist, dass man gar keinen 
TCP-Stack hat, sondern den ganzen UDP TCP-Header vorgefertigt im FPGA 
hat, CheckSum aktualisiert und dann "blind" sendet. Vielleicht hat ja 
jemand schon sowas in dieser Art gemacht ?
Danke erst mal, ich schaue mich jetzt mal nach "NON-PCI ETHERNET CHIPS" 
um und werde am PC div. Tests machen.
Gruß Robert

von Holger (Gast)


Lesenswert?

@Robert

Vielen Dank für die LPT EPP Tips.
http://ulrichradig.de/
Holger Klabunde ist auch noch ne gute Info Adresse.
Holger Buss

Ich habe den Webserver von Ulrich Radig nachgebaut.
Der hat auch Einsteiger FPGA-XILINX Aps. zum nachbau.
Wichtig ist erst mal das man ne laufende selbsgebaute HW hast.

Mit dem PC SENDEN-EMPFANGEN habe ich mit bei Tuxgrapics den
PC C-Source geholt.

Ich habe noch nicht den auto-answer modus versucht.
Das soll wie ein Kettenbrief abgehen.

Datenschleuder Modus ??? .

http://www.fischl.de/thomas/elektronik/cpld/index.html

Guss Holger.

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.