eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingprintf i wielozadaniowosc (MicroC/OS-II)Re: printf i wielozadaniowosc (MicroC/OS-II)
  • Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not
    -for-mail
    From: Adam Dybkowski <a...@4...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: printf i wielozadaniowosc (MicroC/OS-II)
    Date: Tue, 29 Sep 2009 22:46:22 +0200
    Organization: http://onet.pl
    Lines: 30
    Message-ID: <h9trmt$mb6$1@news.onet.pl>
    References: <h...@p...onet.pl>
    NNTP-Posting-Host: aelb89.neoplus.adsl.tpnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1254257181 22886 79.191.27.89 (29 Sep 2009 20:46:21 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Tue, 29 Sep 2009 20:46:21 +0000 (UTC)
    User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
    In-Reply-To: <h...@p...onet.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:183679
    [ ukryj nagłówki ]

    Pszemol pisze:

    > Rozumiem, że skoro wywołania fprintf'a z tasków dotyczą tego samego
    > portu szeregowego, przekazanego fprintf'owi jako argument nazwy pliku
    > (globalna zmienna) to może się coś kiepścić, i linie się będa przeplatać,
    > ale nie rozumiem jak taski o niższym priorytecie mogły się wstrzelić
    > z TRZEMA OSOBNYMI WYWOŁANIAMI fprintf'a w jedną linię tasku
    > o wyższym priorytecie?

    Może chodzi o to, że [f]printf wywołany z zadania o wysokim priorytecie
    jest dzielony na wiele odrębnych zapisów do portu szeregowego (w
    najprostszej implementacji będą to zapisy po jednym znaku) a system
    operacyjny w oczekiwaniu na gotowość portu do przyjmowania kolejnych
    znaków (zgłaszaną zapewne w przerwaniu portu szeregowego) oddaje po
    prostu sterowanie zadaniom o niższym priorytecie gotowym do wykonania. W
    gruncie rzeczy to chyba lepsze podejście (a nuż zadanie o niskim
    priorytecie cośtam sobie liczy powoli w tle) niż aktywne oczekiwanie na
    zwolnienie się miejsca w buforze nadajnika portu szeregowego. Czasem
    przy wolnej transmisji i długim buforze sprzętowym (zależy od procesora
    lub zewnętrznego układu UART) takie oczekiwanie byłoby długie - a tak w
    tym czasie procesor może się zająć obsługą zadań o niższym priorytecie.

    Aby uniknąć takiego mieszania się printf'ów, wystarczy objąć je
    semaforem / mutexem czy co tam masz podobnego w tym systemie.

    --
    Adam Dybkowski
    http://dybkowski.net/

    Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

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: