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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.