eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › MicroC/OS - II który task ma prioryted równy 1?
Ilość wypowiedzi w tym wątku: 1

  • 1. Data: 2010-03-19 20:52:07
    Temat: MicroC/OS - II który task ma prioryted równy 1?
    Od: "Pszemol" <P...@P...com>

    Witam,
    szukam właśnie błędu w starym programie pod systemem MicroC/OS-II.
    Któryś task wykłada się błędem systemowym - aby stwierdzić który task
    dodałem do funkcji która się wykłada kilka instrukcji do wyczajenia
    z którego tasku została wywołana:

    funkcja()
    {
    ....
    OS_TCB tcb;
    ::OSTaskQuery(OS_PRIO_SELF, &tcb);
    i teraz w zmiennej tcb.OSTCBPrio mam Prioryted tasku który zawołał
    funkcję.
    }

    Analizując logi systemowe widzę, że często takie wywołanie raportuje
    task o priorytecie 1, podczas gdy w systemie lista tasków zaczyna się
    od numeru 5 i kończy na numerze 14. Spodziewam się więc dużo
    wpisów od tasków o numerach priorytetów 14 i niżej - i dostaje je,
    ale nie spodziewam się wpisu od tasku o numerze poniżej 5 a dostaje
    wpis od tasku o numerze 1.

    Wiem, że funkcja OSInit() tworzy jeden lub dwa taski: Idle i opcjonalnie
    Statistic, ale te taski są tworzone o najniższych priorytetach (duże
    numery).

    Czy zawołanie OSTaskQuerry zwraca numer tasku 1 może dla obsługi
    przerwań? Ktoś się orientuje co to ?

    A jeśli tak, to co się stanie gdy w czasie błędu ktoś w takiej funkcji
    wywołanej z obsługi przerwań wywoła funkcję systemową
    ::OSTaskSuspend(OS_PRIO_SELF) czyli będzie próbował ubić
    task o priorytecie 1?

strony : [ 1 ]


Szukaj w grupach

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: