Witam serdecznie forumowiczów!
Borykam się z problemem dość wolnej transmisji pomiędzy komputerem z systemem Linux a mikrokontrolerem Cortex-M3 gdzie zaimplementowane jest oprogramowanie pisane przeze mnie od zera.
Poniżej przedstawiam ramki z Wireshark, gdzie 2 z zawartością:
Ramka 280
Ramka 281
Potwierdzenie ACK z komputera często dochodzi po 40ms i tak plik ważący 1MB, przesyła się w nieskończoność...
Wcześniej miałem ten sam problem(ze strony elektroniki), ale przypadkowo zmniejszenie wysyłanych danych do ok 500B poprawiło sytuację(ok 2MB/s), lecz znów transfer spadł do ok 12,5KB/s (mierzone programem wget).
Podejrzewam, że "moje" ramki coś nie pasują komputerom(to samo na systemie Windows na innym komputerze).
Początkowo transmisja jest w setkach KB/s, po chwili stabilizuje się na 12,5KB/s przy wielkości pakietu ok 0,5KB i 25,6KB/s przy wielkości pakietu ok 1KB.
Na podglądzie widać że to nie problem z moją interpretacją TCP/IP, wysyłaniem i odbieraniem pakietów, lecz może coś pomijam i komputery trochę się fochają :(
Gdzie poszukiwać błąd? Co może być nie tak? Nie ma żadnych retransmisji, wszystko wygląda OK.