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...
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...