Moin zusammen,
vielleicht ist jemand schlauer als ich (ganz bestimmt!).
Ich habe ein Task in RTOS der zyklisch Daten sendet, aus den Speicher
ueber TCP. Sieht mehr oder weniger so aus (abgekuerzt):
1 | while(1)
|
2 | {
|
3 |
|
4 | netconn_write(server_conn, (const unsigned char*)data_2, 136000, NETCONN_NOCOPY);
|
5 |
|
6 | /** Delay ist ~ 100 ms. **/
|
7 |
|
8 | vTaskDelay(xDelay);
|
9 | }
|
Laeuft alles so gut, und TCP kann die Daten wieder aufbauen bei
verlorene Pakete.
Nun, wenn ich eine kleine for-Schleife hinzufuege, bevor ich die Daten
wegschicke, bricht alles ab und wird sehr langsam, als in, 10-fach
langsamer:
1 | while(1)
|
2 | {
|
3 | for(i = 0; i < 10; i++){
|
4 | data[340 * i] = HAL_GetTick();
|
5 | data[340 * i + 1] = seqNumber;
|
6 | seqNumber++;
|
7 | }
|
8 |
|
9 | netconn_write(server_conn, (const unsigned char*)data_2, 136000, NETCONN_NOCOPY);
|
10 |
|
11 | vTaskDelay(xDelay);
|
12 | }
|
Das wuerde mich wunder wenn die Schleife sehr gross waere, allerdings
bei 10 finde ich das sehr komisch.
Irgendwelchen Optimierungen die da vielleicht ins Spiel kommen? Momentan
ist die Optimierung auf Debug. Ich werde ein bisschen weiter testen.
Cheers,
Albert