Forum: Mikrocontroller und Digitale Elektronik Große Datenmengen über TCP in ext. Flash schreiben


von spi (Gast)


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?

von M.K. B. (mkbit)


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.

von Dr. Sommer (Gast)


Lesenswert?

Ist doch viel zu kompliziert... Nimm einfach einen STM32 mit genug 
internem RAM, ein Board welches externes SDRAM hat, oder komprimiere die 
Daten.

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.