Gast
#5176565
Zur Illustration was passiert (Längen beziehen sich nur auf die Nutzdaten):
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
Über einen lwIP TCP socket werden relativ kleine Pakete (~45B payload) mit 200Hz gesendet. Unregelmäßig, ca. alle 2 Minuten, werden einige "übersprungen" und ein Block nachfolgender Daten gesendet - bis nach dem Timeout der Retransmit der "übersprungenen" Daten kommt. Das macht das System für eine Echtzeitanwendung unbrauchbar. Rahmenbedingungen: STM32F4 @ 180MHz mit FreeRTOS generiert von STM32CubeMX, Speichermanagement-Schema "heap_4". Benutzt wird die Socket-API von einem einzelnen Task. Die MSS wie in der "Grafik" oben sichbar is 536 B. Die lwIP-Buffer sind sehr großzügig dimensioniert, ich konnte nach etwas spielen mit ihnen keinen Unterschied feststellen; sehr wohl aber wenn mehrere Verbindungen Daten senden, das Verhalten tritt dann deutlich häufiger auf. Wäre für alle Hinweise dankbar, manchmal sieht man einfach den Wald vor lauter Bäumen nicht mehr... Als nächsten Test würde ich das ganze nocheinmal mit einer anderen lwIP-API ausprobieren.