Forum: Mikrocontroller und Digitale Elektronik Ethernet Speed von CPU oder Ethernet shield abhängig ?


von DAVID B. (bastler-david)


Lesenswert?

Hallo
Ich habe mir mit einen atmega2560 (16MHz) und einen Ethernet shield 
basieren auf dem w5100 Controller eine steuerungs Webseite zusammen 
gezimmert.

Läuft alles ganz gut.
Das problem ist eher die zeit die vom auf rufen (PC lokal oder ober 
Internet egal) benötig wird bis die seite geladen ist mit fast 2 sek 
doch recht lange ist.

Und JA ich habe die Webseite schon mal test halber um 50% verkleinert 
und es wird auch nur noch 50% der zeit benötig.

Daher mal die frage was steuert die "sende Geschwindigkeit" eigentlich ?
Bremst der der 2560 mit seinen 16 MHz welcher die Daten bereit stehlt 
oder der W5100 welcher die daten versenden muss ?

Es werden KEINE bilder oder große Daten übermittel nur text und werte 
welche vor dem versenden schon fest stehen.

Vielen dank.

von Dr. Sommer (Gast)


Lesenswert?

Du kannst doch relativ leicht ausmessen, wie lange es dauert, die ganze 
Website über das Interface zum W5100 zu übertragen. Bei Controllern mit 
integriertem Ethernet Controller ist so etwas deutlich effizienter.
Wenn du beispielsweise das STM32 NUCLEO-F756ZG Board nimmst, ist die 
ganze Logik auf dem MCU. Dessen interner Bus kann die Daten mit 
theoretisch 864 MByte/Sec verschieben - das ist eine ganz andere 
Größenordnung als bei solchen separaten Ethernet ICs. Nebenher hat der 
Controller auch mehr als die 10fache Rechenleistung.

von Frank K. (fchk)


Lesenswert?

Wie ist der W5100 angebunden - über SPI oder über das External Bus 
Interface auf den Ports A, C und G?

Wenn Geschwindigkeit wichtig ist, nimmt man tunlichst das External Bus 
Interface. Damit liegen die internen Register des W5100 direkt im 
Adressraum des Prozessors und können mit einfachen Speicherzugriffen 
gefüllt werden. Schneller geht es einfach nicht. SPI ist ein 
Flaschenhals.

Heutzutage sind 32-Bit Prozessoren mit ARM- und MIPS-Kernen nicht teurer 
als der Mega2560, der für seine Leistung eigentlich zu teuer ist.

Das hier wäre eher was für Dich.

http://www.ti.com/tool/EK-TM4C1294XL

Bekommst Du z.B. hier:
https://www.conrad.de/de/entwicklungsboard-texas-instruments-ek-tm4c1294xl-1270206.html

fchk

von Christian M. (Gast)


Lesenswert?

Der W5100-Shield wird nur über SPI angeschlossen, obwohl er aufgesteckt 
ist.
Ausserdem muss der Shield dauernd angesprochen werden, damit er 
läuft/funktioniert. Ist ein bisschen Murks.
Vielleicht läuft Deine Loop() zu langsam? Hast Delay() drinnen?

Gruss Chregu

von Marco H. (damarco)


Lesenswert?

Das ganze ist ein ARP Problem, dieser kann nur eine Adresse speichern. 
Sobald eine Anfrage von einer anderen IP kommt muss dieses wieder 
aufgelöst werden.

Das kann dauern...

Ich habe damals meine eigene ARP Tabelle erzeugt und das Register vor 
dem Senden gesetzt.

Der SPI Bus kann mit 30MHz und mehr getaktet werden...

von Stefan F. (Gast)


Lesenswert?

Mit einem Atmega644 bei 20Mhz und einem parallel angebundenen CP2201 
Controller konnte ich ein bisschen mehr als 200k Byte pro Sekunde für 
das Erzeugen von HTML Seiten mit dynamischen Anteilen erreichen. Das ist 
zwar nicht berauschend schnell aber es war schnell genug um nicht 
negativ aufzufallen.

Was mir aufgefallen war ist, dass die Übertragung nach jedem Ethernet 
paket für rund 200ms stoppte, allerdings nur bei Windows Clients. Unter 
Linux war diese "Denkpause" viel kürzer. Dahinter steckt der sogenannte 
NAGLE Algorithmus, der sich nicht gut mit dem von mir verwendeten µIP 
Stack verträgt. Für Nagle braucht man einige zig Kilobyte Pufferspeicher 
um eine ausreichend große Windows-Size zu unterstützen.

Selbst geschriebene Client Programme können durch Setzen der Option 
TCP_NODELAY diesen Nagle Algorithmus deaktivieren. Aber alle mir 
bekannten Web Browser tun das nicht. Es gab früher mal die Möglichkeit, 
eine entsprechende Option in der Windows Registry zu setzen, aber die 
gibt es (soweit ich herausgefunden habe) inzwischen nicht mehr.

Vielleicht ist das auch bei Dir der Knackpunkt. Wenn das so ist, kannst 
du (mit der vorhandenen Hardware) nichts machen.

von Yellow cable (Gast)


Lesenswert?

Marco H. schrieb:
> Das ganze ist ein ARP Problem, dieser kann nur eine Adresse speichern.
> Sobald eine Anfrage von einer anderen IP kommt muss dieses wieder
> aufgelöst werden.
>
> Das kann dauern...

Wie viele µs dauert das denn beim w5100?

von Michael U. (amiga)


Lesenswert?

Hallo,

Stefanus F. schrieb:
> Selbst geschriebene Client Programme können durch Setzen der Option
> TCP_NODELAY diesen Nagle Algorithmus deaktivieren. Aber alle mir
> bekannten Web Browser tun das nicht. Es gab früher mal die Möglichkeit,
> eine entsprechende Option in der Windows Registry zu setzen, aber die
> gibt es (soweit ich herausgefunden habe) inzwischen nicht mehr.

Unter Win7 ist es möglich, laut Internet auch unter Win10.
Interessanterweise ignoriert unter Win7 der IE es ohnehin, Seite wird 
zügig aufgebaut, FF beachtet die Einstellung und ich habe es bei mir 
abgeschaletet.

Gruß aus Berlin
Michael

von FloMann (Gast)


Lesenswert?

Morgen,

Da ich Shield lese, Projekt auf Arduino Basis?
Wenn ja dann könnte dies eventuell für dich interessant sein.
https://www.pjrc.com/arduino-ethernet-library-2-0-0/
...auch so vll. nicht ganz uninteressant wegen vergleiche der Wiznet 
Chips.

Lokales Netzwerk?
Desweiteren mach doch erstmal ein paar Captures von laufenden
Übertragungen mit z.B. Wireshark.
Da sieht man dann, liegt es an z.B. langen ARP zeiten oder einem 
verzögerten ACK seitens PC.

Ein W5500 hat den vorteil des deutlich effizienteren Transfer
über SPI. Damit ließe sich auch noch eine Steigerrung erreichen
welche noch einfach umzusetzen wäre.

Ich nutze aktuell selbst ein W5500 an einem kleinen 8-Bitter(EFM8LB1),
Geschwindigkeitsrekorde aus heutiger sicht sind damit nicht drin.
Für unsere Anwendungen Maschinen/Geräte Messdaten innerhalb kleinere
Lokalen Netzwerke zu unserer Software zu übertragen reichts noch dicke.
Mini Webserver zur Visualisierung von Messdaten im Browser ist auch in
Arbeit. Was helfen kann den Wiznet Fifo auf >=4K stellen damit hatte ich
mit Browser(FF/Chrome auf Win7) auch keine verzögerten ACK's mehr.

von Marco H. (damarco)


Lesenswert?

ARP kann schon mal 2sec dauern...

Das war mein Problem bei einem Projekt. Sobald der W5500 etwas an einen 
anderen Client senden musste dauerte das rechte lange. Die ARP Tabelle 
kann nur eine Adresse speichern, sobald eine andere IP ins Spiel kommt 
versucht der W5xxx diese neu aufzulösen.

Abhilfe schafft man sich in dem man seine eigene Tabelle erzeugt und in 
den W5xxx schreibt.

Beitrag "einfache und performante W5500 LIB"

: Bearbeitet durch User
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.