logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Rozwiązano] [PIC32MX795F512L][DP83848][VS1003] Utrata łączności sieciowej w projekcie audio

Atlantis86 05 Lut 2024 10:40 315 1
  • #1 20945810
    Atlantis86
    Poziom 19  
    Posty: 706
    Pomógł: 7
    Ocena: 23
    Od jakiegoś czasu pracuję nad projektem odtwarzacza audio, z funkcją "radia internetowego" (odtwarzanie streamów HTTP). Całość jest zrealizowana w oparciu o mikrokontroler PIC32MX795F512L i dekoder VS1003, a za łączność z siecią odpowiada wbudowany w MCU układ MAC, z zewnętrznym PHY DP83848. Firmware napisany w oparciu o biblioteki Harmony3 od Microchipa oraz FreeRTOS.

    O ile sama aplikacja działa poprawnie, to raz na jakiś czas mam do czynienia z dziwnym objawem, którego przyczyny nie byłem w stanie ustalić. Mianowicie raz na jakiś czas. Urządzenie traci połączenie z siecią - przestają przychodzić odpowiedzi na pingi, prosty serwer HTTP obsługujący webUI przestaje odpowiadać, a kod odpowiedzialny za odtwarzanie streama przestaje otrzymywać dane z gniazda sieciowego.
    Co dziwniejsze, po wystąpieniu tej awarii dioda ACT na gniazdku ethernetowym świeci się cały czas, a połączenie z siecią traci nie tylko moja płytka, ale także wszystkie urządzenia podłączone do tego samego switcha. Przy czym mam absolutną pewność, że wina leży właśnie po stronie płytki, bo robiłem testy na kilku różnych switchach, podpinałem także układ bezpośrednio do routera, i zawsze właśnie ta płytka jest wspólnym czynnikiem. Co bardziej interesujące, wygląda na to, że reset/power cycle nie zawsze jest w stanie usunąć problem. Niekiedy problem powraca dosłownie moment po ponownym podłączeniu zasilania i trzeba odczekać z ponownym podłączeniem chwilę dłużej, aby sytuacja powróciła do normy.

    Problem występuje nieregularnie - czasami Ethernet potrafi zawiesić się w ten sposób kilka razy jednego dnia, czasem urządzenie działa przez kilka dni bez jakichkolwiek problemów.

    Może i można by zrzucić winę na fakt, że układ jest zmontowany na samodzielnie trawionej, dwustronnej płytce, jednak poza tymi zawieszeniami Ethernet zdaje się działać zupełnie poprawnie - żadnych zgubionych pakietów itp. Jakiś czas temu opracowałem też dwie nowe wersje układu: jedną na PIC32MX2048, druga na STM32F407 i tak jak na razie nie zauważyłem podobnego problemu.

    Ktoś z was ma może jakiś pomysł co do możliwej przyczyny i jak można by to debugować? Bo obecnie kończą mi się pomysły...
  • #2 21617897
    Atlantis86
    Poziom 19  
    Posty: 706
    Pomógł: 7
    Ocena: 23
    Po upływie ponad roku mogę stwierdzić, że o ile nie udało mi się nigdy rozwiązać problemu, udało mi się go obejść. Wygląda na to, że źródłem (albo przynajmniej ważnym czynnikiem) tego problemu był stary switch FastEthernet TP-Linka, do którego było podłączone urządzenie. Jakiś czas temu zrobiłem modernizację domowej sieci. Wszystkie stare switche wyleciały o zostały zastąpione nowymi, zarządzalnymi, gigabitowymi (również od TP-Linka).
    Od tamtego momentu problem nie wystąpił ani razu. W jednym projekcie miewam problem z okresową utratą łączności, ale podejrzewam, że tym razem przyczyna może leżeć na warstwie aplikacji.
REKLAMA