Wyłączanie przerwań 'na chwilę'

Oct 18, 2005 51 Replies

Nawet lepiej, diabli wiedzą jak ja sobie to obmyśalem i systemowi nic do tego.

Nie rozumiem "przerwanie" - podniesienie semafora wpuszacza jakiś watek do roboty - jesli chcesz mu przekazać jakieś dane to np., blokujesz kolejkę danych mutexem, pobierasz sobie i odblokowujesz. Nie ma prawa być problemu. Ten problem jest skomplikowany tylko pozornie. Uzywasz mechanizmu zlecania roboty (semafor) i mechanizmu kontroli kolejki zleceń (mutex). Nic prostszego.

No to co, wstawił do kolejki to jak jakiś się zwolni od razu weźmie robotę.

Semafory nic nie robią w sprawie przekazywania danych. Ich zadaniem jest tylko umożliwienie wątkom pracowników możliwośc "zawieszania" wykonywania i automatycznego ich budzenia. O parametrach nie ma mowy.

A jakie :) ?

O a to ciekawe. Np. mutex:

formatting link
albo semafor:

formatting link
obydwa z pthread, nie używam innych bibliotek.

Nie wiem czy można prościej, choć ja to obudowałem akurat klasą sobie.

Na procesy sa inne techniki komunikacji (choćby sockety/rurki). W przypadku wątków nie ma chyba nic szybszego niż prosty semafor i mutex.

Nie rozsmieszaj mnie. Taki Watch Dog to co on wart.

Znam taki sprytny patent zeby to obejsc. Ladujesz przez diode kondensator z oscylatora glownego, wprost z kwarcu przez oporniczek.. Przy braku oscylacji kondensator sie rozladuje i zrobi reset. Mysle ze sprawa jasna bez podawania szczegolowego schematu.

Uklad byl stosowana i dziala fajnie z wieloma prockami

Użytkownik Greg napisał:

Ale jesteś pewien, że jego istnienie cokolwiek daje? Żeby zatrzymać główny zegar, trzeba się BARDZO wysilić (o ile taka mozliwośc istnieje - nie w najprostszych procesorkach) i wykonać CELOWO specjalną instrukcję. A wtedy przecież raczej nie chcemy, żeby sam się włączył bez kontroli???

Jesli zegar gaśnie sam z siebie, to niby dlaczego reset miałby w czymkolwiek pomóc. Zegar gaśnie jeśli jest wada w układzie generatora, albo procesor jest walnięty.

I na koniec - wdogi w procesorach godnych stosowania są napędzane niezależnymi oscylatorami wewnętrznymi.

A.Grodecki przemówił ludzkim głosem:

Gdyby było tak jak mowisz, to uC nie wyposażanoby w układy nadzorujące oscylator. Podpowiem ci, że rozwiązania takie stosuje także producent twoich ulubionych procesorów :-)

Oczywiscie, ale tez semafor niewiele upraszcza - zalatwia tylko minimalna czesc problemu.

Message, sockety, pipe ?

I o to chodzi - zapominasz o sys/sem.h. To sa "prawdziwe" "unixowe" semafory [IPC].

Ale to trzeba bylo pisac ze ograniczasz sie do kontekstu pthread :-)

J.

Użytkownik Zbych napisał:

Wiem, aczkolwiek nie wiem po co. Sam nigdy nie stwierdziłem takiej sytuacji i utrzymuję, że reset nie rozwiązuje sprawy. Tak samo jak wewnętrzny brown-out nie jest całkowicie skuteczny. Są to dodatkowe gadżety poprawiające bezpieczeństwo, ale nie zapewniające go.

Spory narzut ze storny oprogamowania. Taki socket i przesłanie 1 bajta to tragicznie dużo roboty. Taki mutex/semafor czesto kompiluje się do kilku instrukcji. Z resztą jak zrobić to co opisałem socketami ? Masa roboty ;) Sockety sa świetne, ale nie do tego ...

E tam prawdziwe. pthreads sa _prostackie_ i w zasadzie nie trzeba wiele wiedzieć zeby z nich skorzystać. A o prawdziwości mozna sobie podyskutowac na advocacy ;) Ważne jest jak szybko się da napisac program ...

Ehhh nie tylko do pthreads, ale do tej filozofii - proste semafory i mutexy. Całość automatyki zawiera się w systemie i dostajesz pare wygodnych i poręczych funkcji.

Motorola HC12

Mozna to wylaczyc w wersji produkcyjnej

Tomek

A ja czasami mam - bo roznych prockow od cholery uzywam. Juz nie pamietam w jakim procku zegar do WD byl _zza_ pll ;-)

A ja tak mialem. Najgorszy problem byl ze wzbudzaniem sie kwarcow na mrozie. Jak juz wystartowal, to tylko czasami stawal. Aha - wszystkie elementy na -40 stopni byly (oprocz pieprzonego kwarcu...)

Siedzial zewnetrzny timer na 555. Jak procesor go nie zablokowal (a to znaczylo ze pracuje), to 10x na sekunde odlaczal zasilanie.

Konkretny przypadek kiedy to jest porzebne. Pracowalem w firmie ktora kobila elektronike do systemow klimatyzacyjnych. Poniewaz od czasu do czasu wlacza sie duzej mocy wentylator lub grzjnik, ponadto maszyny przmyslowe w okolicy powodowaly od czasu do czasu takie zakorkowanie prockow w termostatach i innych modulach ze chlopcy (moi porzednicy) wymyslili to rozwiazanie. Pozwalalo to na bezpieczne usywanie Watch Doga wewnetrznego. Zeewnetrzy zawsze jest pewniejczy moznaby powiedziec. Niestety w tym przypadku koszt i wymiary byly krytyczne. Ponadto w produkci masowej niespecjalnie lubi sie uklady produkowane przez jednego producenta. Wtedy chipy Dallasa nie mialyl jeszcze swoich podrobek.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required