Skocz do zawartości

Watchdog


agamor

Pomocna odpowiedź

Dzein Dobry,

Czy ktos z Panstwa przerabial "watchdog"? Przerobilam zaledwie kurs na Fortbot, i nie wiem jak sie do tego zabrac. Znalazlam na stronie github gotowe rozpisanie https://github.com/alamm001/VHDL, ale wolalabym sama wiedziec o co chodzi dokladnie. Radza Panstwo kupic jakos ksiazke?, czy moze ktos udziela kursow przez internet? Od czego zaczac?

dziekuje,
pozdrawiam

Link do komentarza
Share on other sites

"Czy ktos z Panstwa przerabiał "watchdog"?"

A na co chcesz go przerabiać? Chcesz ten mechanizm do czegoś wykorzystać, czy potrzebujesz opracowania do pracy domowej? Masz już jakieś pojęcie o specyfice środowiska pracy procesorów wbudowanych i sprzętowych i/lub programowych mechanizmach nadzoru ich pracy, czy jest to zupełnie obce dla Ciebie słowo i w ogóle nie masz pojęcia o co chodzi?

EDIT: I w jakim sensie rozumiesz ten mechanizm w kontekście układów programowalnych?

Link do komentarza
Share on other sites

Dzien Dobry,

chce przeanalizowac taki uklad zabezpieczajacy system mikroprocesorowy, gdy jest w "stanie zawieszenia". Tak jestem poczatkujaca i ciezko mi jest to wszystko zrozumiec. Tak jak napisalam przerobilam kurs na fortbot, wiem ze jest to nie wiele.

Nie chce zgapiac gotowych programow, dlatego wystapilam z zapytaniem od czego zaczac.

pozdrawiam

Link do komentarza
Share on other sites

Przepraszam, że tak drążę, ale akurat watchdog jest blokiem zupełnie pomijanym przez początkujących i stąd moje pytania. Skoro (na razie) nie piszesz dużych programów, nie projektujesz (na razie) urządzeń pracujących w trudnych warunkach i nie oczekujesz (na razie) od swoich projektów wyjątkowej odporności na zakłócenia promieniowane i przewodzone, to dlaczego akurat watchdog? Przecież jest tyle innych bloków (timery, UARTy, ADC) bardziej przydatnych w codziennych zmaganiach z procesorem i jego aplikacjami. No i dlatego bardziej mi to pasuje na odrabianie pracy domowej. Wybacz jeśli się mylę.

Pomijając fakt, że temat założyłaś w dziale "Układy programowalne" - w powszechnym rozumieniu to nie są procesory a raczej PLD czy FPGA, gdzie za pomocą w pewnym sensie "programu" (rozumianego jako plik tekstowy w pewnym języku kompilowany na obraz binarny) konfigurujesz bramki, przerzutniki i połączienia między nimi do utworzenia pewnej struktury logicznej. Watchdog bardziej pasuje do ogólnego działu "Mikrokontrolery".

Moja propozycja jest taka: zacznij od danych katalogowych któregoś z małych procesorków, np tego:

https://www.microchip.com/wwwproducts/en/ATmega328

To popularna kostka i jej strona główna, czyli źródło wiedzy podstawowej. Masz tam odnośnik do tzw. datasheets. Wciągnij ten dokument (w pełnej formie a nie skróconej: "ATmega328/P AVR MCU with picoPower Technology Data Sheet"), znajdź rozdział o watchodogu (15.8), przeczytaj i spróbuj zrozumieć. Dopiero wtedy przemyśl to czego nie łapiesz i zacznij zadawać szczegółowe pytania.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Cześć agamor,

Myślę, że budowę i działanie "watchdog timera" można wytłumaczyć dość prosto:

Po pierwsze dlaczego się stosuje taki układ. Jak zapewne wiesz program działający na dowolnym procesorze (np. mikro-kontrolerze) może się "zawiesić" i przestać odpowiadać na przesyłane dane (np. przez porty wejścia-wyjścia lub linie GPIO). Zapewne widziałaś nieraz aplikację systemu Windows, która przestała odpowiadać(lub sam system operacyjny). Co przeważnie robisz w takiej sytuacji (uwaga uproszczenie) - naciskasz przycisk "Reset" na obudowie komputera i procesor startuje od początku pamięci programu.

Tak w dużym skrócie działa "watchdog-timer": sprawdza, czy aplikacja działająca na CPU "żyje" (odpowiada na wysyłane instrukcje) a jeśli nie "wciska" reset procesora. Programy działające na CPU mogą się "zawiesić" z różnych przyczyn:

- zakłócenia zasilania

- zakłócenia elektromagnetyczne

- niespodziewane wartości sygnałów na liniach I/O

- błędy w programie (wejście w nieskończoną pętlę)

Podobnie jest z układami cyfrowymi realizowanymi na układach programowalnych (CPLD, FPGA). Dlatego gdy musimy mieć pewność, że układ będzie zawsze działał poprawnie i reagował na sygnały wejściowe stosujemy układ zwany "watchdog-timer".

W skrócie działa on podobnie jak "zwykły użytkownik programu" obserwujący czy program odpowiada, a jeśli tak nie jest to wysyła sygnał "Reset" dla procesora.

Jak to jest zrealizowane praktycznie: mamy zwykły timer, który odlicza czas np 1-ną sekundę, gdy dojdzie do końca zadanego czasu wystawia sygnał "reset" dla kontrolowanego układu (CPU czy FPGA) i ten startuje od początku (odpowiednio ustawiając wartości sygnałów dla FPGA, czy startując od początku pamięci programu dla CPU).

No tak ale jak ten "watchdog-timer" kontroluje, czy nadzorowany układ odpowiada poprawnie? Po prostu komponent "watchdog" ma wejście "reset" (tym razem samego timera) i gdy wystawimy odpowiedni sygnał na tym wejściu timer zaczyna liczyć "od zera" i nie zrestartuje nam nadzorowanego układu.

Czyli w kontrolowanym układzie (czy to opartym na CPU czy na układzie programowalnym), musimy co jakiś czas zrestartować "watchdog-timer" (czas ten musi być krótszy niż granica liczanie timera np. ta jedna sekunda). Czyli jeżeli z nadzorowanego układu przyjdzie sygnał resetowania "wtchdog-timera" częściej niż raz na sekundę to ten komponent nie "zresetuje" nam mikro-kontrolera czy układu cyfrowego na FPGA. Wystarczy, że w programie jest umieszczona instrukcja resetowania "wtchdoga" częściej wywoływana niż jego czas zlicznia.

W układzie FPGA "watchdog-timer" to komponent (zwykły timer odliczający czas np. z tickiem 0,1 s z wrtością graniczną np 3 s). Z wejściem reset (z nadzorowanego układu) i wyjściem reset - resetującym ten układ.

Wystarczy teraz w kodzie programu, czy też jednym z procesów układu cyfrowego zerować 'watchdoga' odpowiednio często, aby nie doliczył do ustawionej wartości graniczznej tego timera. Gdy "program" działa to 'watchdog' jest odpowiednio często zresetowany, jesli nie to 'watchdog' zresetuje nadzorowany układ. Proste prawda 😃

Warto zrobić też to co proponował Marek i spojrzeć w notę katalogową prostego procesora i zobaczyć jak w nim jest zrealizowany omawiany moduł 'watchdoga' :->

Pozdrawiam

Link do komentarza
Share on other sites

Wspomnę tylko że rozwiązań typu watchdog jest wiele - warto poczytać o windowed-watchdog, czyli układzie, który zarówno brak sygnału, jak i zbyt szybko nadchodzący sygnał traktuje jako błąd i resetuje np. procesor.

Co więcej watchdog często jest, ale wcale nie musi być licznikiem. Równie dobrze, a czasem nawet lepiej może to być prosty układ analogowy - powiedzmy w uproszczeniu obwód RC, czyli kondensator ładowany przez rezystor. Jaka jest tego zaleta? Np. taka, że działa nawet jeśli sygnał zegarowy przestaje.

Poza tym niektóre układy watchdog wykonują pewne dodatkowe czynności - nie tylko resetują procesor, ale np. zatrzymują silniki czy inne układy wykonawcze, których działanie mogłoby być niebezpieczne lub kosztowne.

Czasem również zadziałanie watchdoga wcale nie wznawia pracy urządzenia - po wykryciu awarii, system zatrzymywany jest w bezpiecznym stanie aż do reakcji użytkownika/operatora.

  • Lubię! 1
Link do komentarza
Share on other sites

Dzein Dobry,

Czy ktos z Panstwa przerabial "watchdog"? Przerobilam zaledwie kurs na Fortbot, i nie wiem jak sie do tego zabrac. Radza Panstwo kupic jakos ksiazke?, czy moze ktos udziela kursow przez internet? Od czego zaczac?

dziekuje,
pozdrawiam

Cześć,

odnośnie książek polsko-języcznych to najlepsze pozycje ma w swojej ofercie "Wydawnictwo BTC" (ta sam firma co sklep internetowy Kamami.pl i firma szkoleniowa). Tu jest link do nich:

https://wydawnictwo.btc.pl/

Ja mam ich nastepujące pozycje:

https://wydawnictwo.btc.pl/elektronika/42800-uklady-fpga-w-przykladach.html?search_query=Uklady+FPGA&results=6

https://wydawnictwo.btc.pl/elektronika/284-uklady-programowalne-pierwsze-kroki.html?search_query=Uklady+FPGA&results=6

https://wydawnictwo.btc.pl/elektronika/177718-uklady-programowalne-dla-poczatkujacych.html

https://wydawnictwo.btc.pl/elektronika/137064-picoblaze-mikroprocesor-w-fpga.html?search_query=pico&results=2

https://wydawnictwo.btc.pl/informatyka/102935-wprowadzenie-do-jezyka-verilog.html

Ksiązka o Verilogu dotarła do mnie dzisiaj (ale już widzę, że jest bardzo wartościowa) 😉

Moją ulubioną pozycją jest ta dotycząca Soft-Procesora Picoblze (dla układów Xilinxa).

Z drugiej strony w sieci jest bardzo dużo darmowych wartościowych książek w j. angielskim (zarówno teoretycznych jak i praktycznych dot. VHDL i Verilog'u).

No i na GitHub'ie jest mnóstwo gotowych projektów z których można się uczyć.

Pozdrawiam

Link do komentarza
Share on other sites

Na chłopski rozum:

Watchdog to dosłownie z angielskiego pies na łańcuchu czyli pies, który ma pilnować obiektu lub naszego domu. Tym samym już nazwa sugeruje, że jest to coś co pilnuje lub nadzoruje i to w jakimś celu. I tak samo w przypadku elektroniki (to jest po prostu analogia) - jest to po prostu układ, który będzie nadzorował w ogólności inny układ elektroniczny, aby nie doszło do czegoś czego my nie chcemy (w przypadku psa nie chcemy aby złodziej się włamał do domu i chcemy aby go przepędzić owym psem, a tu w przypadku elektroniki nie chcemy aby np: tak jak koledzy wspomnieli zawiesił się program i chcemy to przerwać możliwie jak najszybciej, bo po co nam coś co będzie wiecznie przywieszone. Inny przykład: nadzór napięcia - nie chcemy aby przekroczyło ono ustalonego napięcia i chcemy je natychmiast obniżyć no to też watchdoga zastosujemy). I tyle! Krótko i na temat!

[ Dodano: 04-07-2018, 14:01 ]

A poza tym nie ma co dziewczyny zasypywać książkami czy kursami (bo zapewne tylko chce krótko i na temat przyzwoicie bez pieprzenia zrozumieć co to jest watchdog), bo jak zrozumie istotę działania watchdoga to i bez tego pociągnie sama dalej temat jak efekt domina!

Wystarczy, że najpierw niech sobie w C czy Javie napisze licznik modulo n, który w końcu zawiera takiego watchdoga (a jest nim po prsotu warunek sprawdzający to czy osiągneliśmy graniczną wartość - jeśli tak to wartość licznika jest zerowana, jeśli nie to podtrzymywana). I niech te wartości wyświetli najprostszym printf czy System.out.println(), dodając tylko stosowne opóźnienia (żeby za szybko ten licznik nie pracował). Jak to zrozumie to niech zasymuluje jakiś przebieg napięcia w tych samych językach (np: z pliku TXT lub losując wartości randem) i niech doda warunek po prostu, który sprawdzać będzie wartości napięcia i w wyniku którego np: dodamy jakiś offset aby obniżyć owe napięcie. A jak to zrozumie to dalej może kolejne analogie wymyślać na spokojnie.

Jak to przerobi to dalej niech te pomysły przeniesie na VHDL, Verilog, SystemVerilog, SystemC itd i zobaczy, że w elektronice to ma jednak sens. A to jak opisać takie układy to znajdzie na spokojnie na YouTubie jak ten oto licznik:

A jak już z tym da radę to konfiguracja watchdoga np: w STM-ie to już bajka (kwestia konfiguracji tylko rejestrów i wcześniejszego poznania trybów w jakich on działa).

I tyle! 😃

Link do komentarza
Share on other sites

Jak to przerobi to dalej niech te pomysły przeniesie na VHDL, Verilog, SystemVerilog, SystemC itd i zobaczy, że w elektronice to ma jednak sens. A to jak opisać takie układy to znajdzie na spokojnie na YouTubie jak ten oto licznik:

Cześć jakub,

mam pytanie niejako "przy okazji" twojego ostatniego postu: jak to właściwie jest z tym SystemVerilog'iem. W świeżo nabytej książce o Verilogu wyczytałem, że toczyła się dyskusja (chyba w 2005 roku) na temat stworzenia własnego standardu SystemVerilog (i wydzielenia go z Verilogu), ale to nie doszło do skutku. To moje pierwsze pytanie?

Drugie to fakt, że podobno środowiska do syntezy Xilinx'a i Intela nie wspierają tego standardu. Jak to właściwie jest, czy "SystemVerilog" to osobny standard i czy jest w pełni wspierany w popularnych środowiskach do syntezy i symulacji układów FPGA?

Pozdrawiam

Link do komentarza
Share on other sites

dziekuje wszystkim za wpisy, metoda dzialania jest dla mnie juz zrozumiala.

Teraz chcialabym napisac program, jest duzo przykladow w internecie tak jak napisaliscie, lecz nie do konca je rozumem.

dziekuje,
pozdrawiam

Link do komentarza
Share on other sites

Przykro nam, że wciąż "nie do końca" je rozumiesz. A możesz opisać jakiej konkretnie pomocy się spodziewasz?

Jaki to program chciałbyś napisać? Na jaką platformę? PC? Arduino? Malina? Mały ARM? I co miałby robić? Bo to głównie od wyboru procesora zależy jaki watchdog dostaniesz do dyspozycji (no chyba, że robisz w FPGA lub samodzielną rzeźbę w TTL). A swoją drogą watchdog to takie coś, z czym żaden program raczej nie chce mieć do czynienia. Chodzi sobie z boku takie coś i tylko czeka na zwis lub błąd. Czy Twój program miałby specjalnie robić jakieś głupie rzeczy żeby sprawdzić czy watchdog czuwa? Jak chciałabyś dowiedzieć się, że właśnie nastąpiło odpalenie watchdoga i restart? A co miałby ten program robić wtedy gdy działa poprawnie? Napisz coś więcej.

A może po prostu pokaż przykład którego nie rozumiesz. Wskaż palcem co jest w nim trudnego, bo może wcale nie chodzi o watchdog tylko ogólnie o pisanie nietrywialnych programów lub o programowanie peryferiów przy użyciu jakichś bibliotek albo zrozumienie samej platformy? Będzie prościej dyskutować na konkretnym przypadku niż zaczynać wszystko od zera.

Link do komentarza
Share on other sites

Dzien dobry,

mi rowniez jest przykro, ze od poczatku ciagnie Pan ze mnie lacha tak jak teraz, moze dlatego ze jestem dziewczyna, a moze dlatego ze jestem poczatkujaca.

Nie spodziewam sie od Pana pomocy, chcialam poprostu wskazowki gdzie moge zaczac, jakich iformacji szukac.

Plytka, ktora posiadam to Nexys 4 z procesorem Artix 7. Napisalam na forum ulkadow programowalnych, poniewaz chce napisac program w VHDL, czyli tak jak Pan napisal poprzednio laczenie np. bramkami, mutipleksery.

Mysle ze to bedzie program gdzie odliczanie czasu moze byc przedstawione na wyswietlaczu

(7 segdisp), okreslony przycisk restart.

dziekuje za informacjie a scczegolnosci FlyingDutch, skozyskam na pewno z literatury.

dziekuje,

pozdrawiam

Link do komentarza
Share on other sites

agamor, musisz się nauczyć nieco precyzyjniej zadawać pytania - wtedy będzie łatwiej na nie odpowiadać. Markiem się nie przejmuj, jest pewnie przemęczony ciągłym odpowiadaniem na forum. Co prawda sam sobie taki obowiązek wybrał, ale czasem chyba odpowiada nawet jak nie wie co.

W każdym razie, musisz zacząć od podstaw. Więc po pierwsze Nexys 4 nie ma procesora. Artix 7 jest układem programowalym typu FPGA, ale nie jest procesorem. Można go skonfigurować, tak żeby nim był - np. używając rdzenia MicroBlaze. Jeśli o to chodzi - po prostu napisz.

Zgaduję, że to co chcesz zrobić to jakaś forma zadania na laborki. W zadaniu powinno być napisane jaki interfejs ma mieć taki watchdog. Jeśli nie - musisz coś sama wymyślić. Najprościej przyjąć że masz sygnał zegarowy oraz jedno wejście i jedno wyjście. Wtedy "watchdog" będzie zwykłym licznikiem. Wejście resetuje licznik do ustalonej wartości, czyli opóźnienia jego zadziałania. Przy każdym takcie zegara zmniejszasz wartość tego licznika, a gdy doliczysz do zera - generujesz sygnał reset.

BTW - co to znaczy łachać?

Link do komentarza
Share on other sites

Dzien dobry,

mi rowniez jest przykro, ze od poczatku ciagnie Pan ze mnie lacha tak jak teraz, moze dlatego ze jestem dziewczyna, a moze dlatego ze jestem poczatkujaca.

pozdrawiam

Agamor,

ogarnij się - Marek jest jednym z najlepszych fachowców na tym forum, źle zinterpretowałaś jego pytania. Marek taki po prostu jest - bardzo dokładny i precyzyjny (wynika to z jego głębokiej wiedzy) i wszystkim zadaje takie szczegółowe pytania bo chce udzielić jak najdokładniejszej odpowiedzi. Jestem pewien, że nie chciał Ci dokuczyć z powodu tego, że jesteś dziewczyną. Jeśli nie wierzysz wyszukaj sobie posty Marka - nie warto go sobie zrażać bo możesz potrzebować jeszcze jego pomocy.

Każdy z chęcią Ci pomoże, ale czasami trzeba bardziej precyzyjnie zadawać pytania (mi Marek wielokrotnie kazał doprecyzować pytanie, bo na zadane w pierwotnej postaci nie było sensownej odpowiedzi 😉

Nie przejmuj się i działaj dalej na forum, każdy z chęcią Ci pomoże (a to, że jesteś dziewczyną nie ma tu żadnego znaczenia).

Pozdrawiam

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.