eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaprintf i wielozadaniowosc (MicroC/OS-II) › Re: printf i wielozadaniowosc (MicroC/OS-II)
  • Data: 2009-09-30 20:28:39
    Temat: Re: printf i wielozadaniowosc (MicroC/OS-II)
    Od: Jerry1111 <j...@w...pl.pl.wp> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Pszemol wrote:
    > "Zbych" <a...@o...pl> wrote in message
    > news:h9vmcj$4pm$1@atlantis.news.neostrada.pl...
    >> Pszemol pisze:
    >>
    >>> To jest oczywista oczywistość, że wątek o priorytecie 1 czeka na port
    >>> RS i oddaje sterowanie :-) Mnie interesuje jak to się dzieje, że w
    >>> czasie
    >>> gdy task 1 oddał sterowanie task 4 lub 7 był wstanie trzy razy wysłać
    >>> linię znaków do RS'a trzema osobnymi wywołaniami fprintfa...
    >>
    >> Ktoś na pme podpowiedział ci, żebyś sprawdził, czy prawidłowo
    >> ustawiłeś priorytety wątków.
    >
    > Nie do końca - on nazwał mnie debilem :-)

    Kurcze, nie widze tego. Ale nie widze tez swojej odpowiedzi z wczoraj -
    ciekawe czemu.

    > i zarzucił że task o priorytecie
    > zero jest najmniej ważnym taskiem w systemie i z tego powodu - to co
    > obserwuję jest jak najbardziej naturalne.

    ;-)

    >> Od siebie dorzucę tylko pytanie: czy ten system gwarantuje ci,
    >> że jak bufor RSa będzie wolny to w pierwszej kolejności dobierze się
    >> do niego wątek o najwyższym priorytecie?

    Bylo o tym w ksiazce, ale kniga w robocie.

    >> A może kto pierwszy ten lepszy?
    >
    > Ten RT system miał mi gwarantować, że w danym momencie czasu
    > wykonuje się ten task spośród tasków gotowych do działania który
    > ma najwyższy priorytet. Ten warunek dotyczy zarówno typowego
    > reschedulingu (funkcja OS_Sched()) jak i reschedulingu po
    > zakończeniu obsługi przerwania. Na stronie 104 tej samej ksiązki:
    > "The conclusion of the ISR is marked by calling OSIntExit(), which
    > decrements the interrupt nesting counter.

    Zaciekawilo mnie (bo ja wiem ze Nios czasem przerywa sobie printfy - mi
    to nie przeszkadza) czemu tak sie dzieje. Popatrzylem na zrodla drivera
    uart w Nios 9.0 i tam nie ma OSIntExit pod koniec
    altera_avalon_uart_rxirq().

    > A więc wciąż nie rozumiem dlaczego w momencie gdy przyszło
    > przerwanie od portu szeregowego (bo tylko w taki sposób mogło
    > się zwolnić miejsce w buforze portu) funkcja obsługi przerwania
    > RS232 nie obudziła tasku 0 który czeka na to miejsce i scheduler
    > zawołał mi do tablicy task 4 lub task 7 zamiast wrócić do tasku 0.
    >
    > To jest właśnie cała zagadka o której próbuję tu podyskutować :-)

    ;-)
    Jak Ci sie chce to przesledz krok po kroku co fprintf wyczynia i szukaj
    podejrzanych miejsc. Z doswiadczenia z wczesniejszych wersji - drivery
    Altery sa niestety troche dodupne jesli chodzi o RTOS.

    Aha, ja uzywam fifoed_avalon_uart zamiast oryginala - duzo mniejszy bol
    glowy.

    --
    Jerry1111

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: