-
Data: 2022-10-05 17:23:44
Temat: Re: lwIP - odbieranie danych przez TCP
Od: Atlantis <m...@w...pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]Ok, kompletnie nie mam pojęcia co może być powodem takiego zachowania
projektu. Wyczerpałem już chyba wszystkie pomysły. Na chwilę obecną
udało mi się sprawdzić następujące kwestie:
- Dodałem prosty kod do pomiaru ilości bajtów odbieranych w ciągu
sekundy. Dzięki temu mogłem ustalić, że zaraz po połączeniu z serwerem
nadającym stream mam transfer około 20 kB/s (co mniej-więcej pasuje do
bitrate'u 192 kbps), jednak zaraz potem spada on do 1-2 kB i zaczyna się
"czkawka". Bufor musi się przez dłuższą chwilę napełniać, żeby odtworzyć
krótki fragment audio.
- Zakomentowałem wszystkie operacje zapisu odebranych danych do pamięci
SPI RAM (w razie gdyby faktycznie to ona powodowała problemy). Po prostu
od razu zwalniam bufor z odebranymi danymi i zgłaszam gotowość do
odbierania kolejnych. I faktycznie - w tej sytuacji miałem ciągły
transfer w okolicach 20 kB/s.
- Już pomyślałem, że winę faktycznie ponosi pamięć SPI, przygotowałem
więc bufor cykliczny w zwykłej pamięci RAM. Implementacja nie jest może
idealna, ale sprawdziła się już w innym projekcie (na PIC24). Bufor jest
co prawda mały - testowałem wariant 4kB i 8kB - ale na wcześniejszych
wersjach hardware'u tych kilka kB w zupełności wystarczało do płynnego
odtwarzania. Niestety, po wgraniu tej wersji wrócił problem - prędkość
dość szybko spada do 1-2 kB.
- Żeby było ciekawiej zarówno 128kB bufor w pamięci SPI, jak i 8kB bufor
w zwykłym RAM-ie bez najmniejszego problemu sprawdzają się, gdy karmię
je danymi z karty SD. Wtedy odtwarzanie działa całkowicie normalnie.
Podejrzewam, że winę musi ponosić mój własny bład, którego jednak za nic
nie jestem w stanie namierzyć. Jeśli ktoś ma czas i ochotę żeby rzucić
okiem, to aktualna wersja jest dotępna na GitHubie:
https://github.com/marekw1986/InternetRadioSTM32/blo
b/main/code/Core/Src/vs1003.c
Kluczowe miejsca:
Callback obsługujący odbieranie przychodzących danych:
https://github.com/marekw1986/InternetRadioSTM32/blo
b/abb4f47bfd4c06ca0d56f6b03b287c5d4a4d9f3f/code/Core
/Src/vs1003.c#L869
Miejsce w maszynie stanów, gdzie ładowane są dane do bufora, ale bez
odtwarzania. Tutaj też realizowany jest opóźniony odbiór tych danych,
których nie dało się odebrać w callbacku z uwagi na brak miejsca w buforze:
https://github.com/marekw1986/InternetRadioSTM32/blo
b/abb4f47bfd4c06ca0d56f6b03b287c5d4a4d9f3f/code/Core
/Src/vs1003.c#L477
To samo co powyżej, tylko podczas normalnego odtwarzania:
https://github.com/marekw1986/InternetRadioSTM32/blo
b/abb4f47bfd4c06ca0d56f6b03b287c5d4a4d9f3f/code/Core
/Src/vs1003.c#L509
Miejsce w którym do bufora cyklicznego ładowane są dane z systemu plików
(karta SD lub pendrive):
https://github.com/marekw1986/InternetRadioSTM32/blo
b/abb4f47bfd4c06ca0d56f6b03b287c5d4a4d9f3f/code/Core
/Src/vs1003.c#L541
Następne wpisy z tego wątku
- 05.10.22 18:37 a...@m...uni.wroc.pl
- 06.10.22 09:47 Atlantis
- 06.10.22 17:18 J.F
- 07.10.22 20:40 Atlantis
- 09.10.22 08:25 Marek
- 09.10.22 10:19 Atlantis
- 09.10.22 14:45 Marek
- 10.10.22 10:36 J.F
Najnowsze wątki z tej grupy
- jak wykryć zapalenie żarówki?
- Cyna dylemat
- Mierniki poziomu glukozy (CGM, FGM)
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Kontrola nad prądem - sprawdź jak działa [apka - przyp. JMJ] eLicznik
- NETIA i hasło logowania
- Modulacja FM
- Najgorszy język programowania
- Kol. sukces po polsku: firma Szumisie sp. z o.o.
- Chińska Telefonia 6G - Chcą Nas Sterować Elektrycznie - Jak Kukiełki w Teatrze Lalek!!!
- RS-485 ale automatycznie dwukierunkowy
- Leżakujące SSD gubią po roku dane
- kolorowy e-paper
- Sterownik kotła CO praca PWM
- Jakie baterie A23 i LR44?
Najnowsze wątki
- 2025-12-18 Warszawa => Inżynier Systemów i Sieci <=
- 2025-12-18 Warszawa => DevOps Engineer <=
- 2025-12-18 Trybunał "Sprawiedliwości" UE orzekł o wyższości traktatu nad Konstytucją?[Konstytucja już nie jest najważniejsza?]
- 2025-12-18 Ostrów Wielkopolski => Specjalista ds. Marketingu Online (PPC) <=
- 2025-12-17 jak wykryć zapalenie żarówki?
- 2025-12-17 Jest akt oskarżenia przeciw kulsonowi gazującemu posłankę.
- 2025-12-17 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-12-17 Warszawa => Project Manager <=
- 2025-12-16 Złomnik się SPRZEDAŁ Kanałowi ZERO
- 2025-12-16 Czy tuskie ENA będą mieć w [4 literach] W BRUKSELI? [Ziobro]
- 2025-12-16 Warszawa => Junior Rekruter <=
- 2025-12-15 I lewacka ideologia poszła się JEBAĆ
- 2025-12-15 Zgłoszenie uprowadzenia dziecka w Koszalinie. Policja zatrzymała podejrzanych, 10-miesięczny chłopiec odnaleziony
- 2025-12-15 Warszawa => Fullstack PHP Developer <=
- 2025-12-15 Prezydent i Marszałek Sejmu




Chińskie auta: Od niskiej jakości do globalnego lidera. Co pokazuje raport EFL?