Cytat:wyższości jednych mikrokontrolerów i ich kompilatorów nad drugimi, bo wszyscy macie rację ... ale tylko z Waszego punktu widzenia.
Hehe A co napisałem kilka postów wyżej - dyskusja o wyższoaci swiat Bożego Narodzenia nad Wielkanocą :d
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tamCytat:wyższości jednych mikrokontrolerów i ich kompilatorów nad drugimi, bo wszyscy macie rację ... ale tylko z Waszego punktu widzenia.
Freddie Chopin napisał:
No widzisz... A RTOS napakowany dowolnie ciężkimi zadaniami, tak że układ obciążony jest w 100%, da radę - i to nie "od biedy" tylko "ot tak" - zmieścić się w kilkanaście-kilkadziesiat cykli zegara. Powiedzmy że w 100, czyli przy układzie który działa na 50MHz mieścisz się w dwie MIKROsekundy.
Freddie Chopin napisał:
- w tym momencie - N-A-T-Y-C-H-M-I-A-S-T, a nie dopiero przy następnym sprawdzaniu stanu flagi, nie po zakończeniu aktualnie realizowanej funkcji maszyny stanów, nie "za krótką chwilę", tylko natychmiast - wątek (lub wątki) który na dane oczekiwały zostaje odblokowany,
- jeśli odblokowany wątek ma odpowiednio wysoki priorytet (czyli jeśli programista określił, że zadanie odbioru tych danych jest "bardzo ważne"), to wątek ten wznowi swoje wykonywanie N-A-T-Y-C-H-M-I-A-S-T po powrocie z przerwania - jeśli zdarzenie było zgłoszone przez przerwanie - lub natychmiast po zgłoszeniu tego zdarzenia - jeśli zostało ono zgłoszone przez wątek.
jnk0le napisał:N-A-T-Y-C-H-M-I-A-S-T po kolejnym "ticku" sheudlera (zazwyczaj 1ms/10ms)
Piotrus_999 napisał:Prosze o uzasadnienie dlaczego nawet przy 16MHz "tyknięcie" ma zając 1ms (czyli 84000cykli), a nawet 10ms (840000 cykli).
Byc moze czegos nie rozumiem.
michalko12 napisał:Piotrus_999 napisał:Prosze o uzasadnienie dlaczego nawet przy 16MHz "tyknięcie" ma zając 1ms (czyli 16000cykli), a nawet 10ms (160000 cykli).
Byc moze czegos nie rozumiem.
"Tyknięcia" to są zaprogramowane interwały w których RTOS ma przełączać konteksty, a nie że tyle czasu ma trwać przełączanie kontekstu.
Przykład "pobudzenia" schedulera do natychmiastowego wykonania zadania po otrzymaniu zdarzenia. Warunek jest taki, że task obsługujący zdarzenie musi mieć wysoki priorytet i być uśpiony.
http://www.freertos.org/taskresumefromisr.html
Piotrus_999 napisał:
Kolega mnie nie zrozumiał. Pytałem kolegę jnk0le dlaczego według niego NATYCHMIASTOWE przełaczenie zajmie shedulerowi od 16000 do 160000 cykli zegara 16MHz
michalko12 napisał:
"Tyknięcia" to są zaprogramowane interwały w których RTOS ma przełączać konteksty, a nie że tyle czasu ma trwać przełączanie kontekstu.
Piotrus_999 napisał:Pytałem kolegę jnk0le dlaczego według niego NATYCHMIASTOWE przełaczenie zajmie shedulerowi od 16000 do 160000 cykli zegara 16MHz.
jnk0le napisał:N-A-T-Y-C-H-M-I-A-S-T po kolejnym "ticku" sheudlera (zazwyczaj 1ms/10ms)
Moderowany przez tmf:Freddie, celem wątków takich jak ten, o niczym, jest m.in. edukacja. Tylko dlatego jeszcze nie poleciało to do kosza. Więc korzystając z okazji dajmy szansę innym się wypowiedzieć, nawet jeśli nie mają racji.
Freddie Chopin napisał:
Po wątku tym widać, że osoby kwestionujące zasadność istnienia RTOSów po prostu nie rozumieją ich możliwości...
tplewa napisał:Aktualnie w pracy mam na tapecie taki kod bez FreeRTOS-a na H8/300 z wlasnymi scheduler-amiKod w zasadzie z brakiem dokumentacji i IMHO do napisania na nowo (ale na razie nie ma na to czasu). Dzisiaj walczylem miedzy innymi z wysypkami z powodu przepelnienia stosu itp.
Zarabista praca gdy nie ma sie JTAG-a
Piotrus_999 napisał:tplewa napisał:Aktualnie w pracy mam na tapecie taki kod bez FreeRTOS-a na H8/300 z wlasnymi scheduler-amiKod w zasadzie z brakiem dokumentacji i IMHO do napisania na nowo (ale na razie nie ma na to czasu). Dzisiaj walczylem miedzy innymi z wysypkami z powodu przepelnienia stosu itp.
Zarabista praca gdy nie ma sie JTAG-a
Nawet jak sam to napiszesz to powodzenia zeby cos zmienic po roku![]()
Ja kiedys popełnilem w php wiekszy projekt (tak ze 20-25k linii) bez zadnego frameworka (taki internetowy "bare metal" - tez byłem dzigit i stwierdzilem ze sam zrobie lepiej) i przyszła pora zmian to ni cholery nie rozumiem sam siebie. Bede musiał pewnie przepisac w cywilizowany sposób
Freddie Chopin napisał:niemniej jednak cały taki proces zajmuje kilkadziesiąt-kilkaset cykli zegara.
[...]
ciężko mi tu znaleźć więcej niż ze 100 cykli.
jnk0le napisał:Freddie Chopin napisał:niemniej jednak cały taki proces zajmuje kilkadziesiąt-kilkaset cykli zegara.
[...]
ciężko mi tu znaleźć więcej niż ze 100 cykli.
A dokładniej, to jest to ok. 1000 cykli, czyli 10x więcej (15us@72MHz)
http://stackoverflow.com/a/24906003/4676265
jnk0le napisał:Tak jakoś mnie naszło to pytanie bo main + IRQ_handler nie za bardzo wyglądają na pracę wątkową.
Bardziej to przypomina powrót ze zwykłego przerwania do pętli głównej (co oczywiście jest wydajniejsze od pełnego context-switchingu) i można by się przyczepić że z pełną funkcjonalnością RTOSa (np. na wzór 'xTaskResumeFromISR' które zajmuje te 1k cykli) może mieć nie wiele wspólnego.
BlueDraco napisał:Freddiego N-A-T-Y-C-H-M-I-A-S-T pod RTOS to czas składowania kontekstu plus czas ładowania nowego (plus narzut programowy schedulera). W przypadku rozwiązania czysto event-driven zwykłe "natychmiast" - to czas składowania kontekstu, czyli ponad trzykrotnie krócej niż w RTOS. Najgorsze "natchmiast" to odtwarzania i składowania kontekstu bez narzutu programowego schedulera.
Cezary_ napisał:Pytam, bo w takim Windows jakoś mi się udaje ogarniać kilka wątków w aplikacji i nie rozumiem sugestii.