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


von Bernd S. (mms)


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/_emac_8h-source.html

Bei den Atmel Beispielen sieht man diese Definition:
1
/// Number of buffer for RX, be carreful: MUST be 2^n
2
#define RX_BUFFERS  16
3
/// Number of buffer for TX, be carreful: MUST be 2^n
4
#define TX_BUFFERS   8
5
6
/// Buffer Size
7
#define EMAC_RX_UNITSIZE            128     /// Fixed size for RX buffer
8
#define EMAC_TX_UNITSIZE            1518    /// Size for ETH frame length


Gruß
Bernd

von Christian (Gast)


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.

von Marcus F. (gizzmo)


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

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.