Große Datenmengen über TCP in ext. Flash schreiben

Gast #5690913
Lesenswert?

Hallo,
ich möchte über die Ethernet-Schnittstelle eine bestimmte Datenmenge 
(ca. 300kB) empfangen und in einem externen SPI-Flash wegspeichern, da 
der eingesetzte STM32F4 nicht genug RAM hat.


Mit dem Thema TCP/IP-Stack kenne ich mich aktuell leider noch nicht so 
gut aus. Es geht darum, ob das Vorhaben auf diese Weise überhaupt 
möglich ist.


Die Idee ist folgende:

1) Empfang der Daten mittels TCP/IP-Stack (max. 1460 Byte Datenframe?)
2) Die Daten mittels DMA und SPI mit Page-Write ins externe Flash 
schaufeln

3) Jetzt erst das TCP-Acknowledge senden (lässt sich das so einfach 
verzögern?)
4) Empfang des nächsten Frames -> Punkt 1)



Hat jemand schon so etwas ähnliches gemacht und weiß ob es funktionieren 
würde?
#5690929
Lesenswert?

spi schrieb:
> 1) Empfang der Daten mittels TCP/IP-Stack (max. 1460 Byte Datenframe?)

Das kannst du über die MTU deiner Verbindung regeln.

spi schrieb:
> 3) Jetzt erst das TCP-Acknowledge senden (lässt sich das so einfach
> verzögern?)

Über das TCP Receive Window kannst du steuern, wie viele Daten du vor 
einem ACK empfangen kannst.

Es kann allerdings passieren, dass du die Daten in einer anderen 
Stückelung, als die von dir angegebene Größe bekommst. Außerdem musst du 
auch damit klarkommen, dass du noch andere Pakete empfängst (z.B. 
broadcasts). Die belegen auch Speicher beim Empfang, auch wenn du die 
Daten gar nicht haben wolltest.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren