www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ethernet Rx Packet Size Buffer 128


Autor: Bernd Schuster (mms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann mich jmd aufklären, warum die Buffergröße für den Ethernet Receive 
Buffer häufig auf 128 begrenzt wird (z.B: bei den Atmel-Beispielen)? Ich 
dachte eine Standardgröße eines Ethernet-Packets liegt bei 1518.

z.B.
http://www.makingthings.com/ref/firmware/html/_ema...

Bei den Atmel Beispielen sieht man diese Definition:
/// Number of buffer for RX, be carreful: MUST be 2^n
#define RX_BUFFERS  16
/// Number of buffer for TX, be carreful: MUST be 2^n
#define TX_BUFFERS   8

/// Buffer Size
#define EMAC_RX_UNITSIZE            128     /// Fixed size for RX buffer
#define EMAC_TX_UNITSIZE            1518    /// Size for ETH frame length



Gruß
Bernd

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviel RAM hast Du in Deinem Prozessor?
Bei einem AVR mit 2k Ram passen zwar 1518Bytes hinein; Du willst aber 
sicherlich auch noch anderes mit dem Ram machen.

Autor: Marcus Fehde (gizzmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke das Argument mit dem verfügbaren RAM ist maßgebend für die 
Beschränkung. Die Asymmetrie zwischen RX und TX würde ich darauf 
zurückführen, dass kurze Kommandos empfangen werden sollen und 
wesentlich größere Mengen an Daten zurück geschickt werden sollen.

Sofern sich die 128 Bytes tatsächlich auf den Empfangsbuffer auf 
MAC-Ebene beziehen ergibt sich folgende maximale Payload:

   128 Bytes Buffer
-   14 Bytes MAC Header (src+dst address, frame type)
-    4 Bytes CRC
-------------------
   110 Bytes

Angenommen Du schickst die Daten per UDP/IP ergibt sich weiterhin:

  110 Bytes
-   8 Bytes UDP Header (src+dst port, length, checksum)
-  20 Bytes IP Header (src+dst IP, length, ...)
----------------------
   82 Bytes UDP Payload

Deine Kommandos können also bis zu 82 Bytes Daten umfassen. Dieses 
entspricht der Maximum Transfer Unit zwischen Host und µC.

HTH,
Marcus

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.