Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

AVR GCC i wielowątkowość. Program wielowątkowy na uC.

adamusx 05 Mar 2006 12:09 3703 12
  • #1 05 Mar 2006 12:09
    adamusx
    Poziom 27  

    Witam

    Czy jest możliwosć stworzenia programu wielozadaniowego czy wielowątkowego na mikrokontroler?? Nie chodzi mi tu o rozwiazania w stylu petla nieskonczona i dwa osobne podprogramy ktore sie w niej znajduja, bo zawsze jest tak ze najpier musi sie wykonac cala jedna funkcja zeby mozna bylo przejsc do wykonywania nastepnej.
    Mialo by to dzialac tak ,ze powiedzmy mamy 2 watki i co kazdy cykl czy pare cykli zegara wykonuja sie na przemian kolejne instrukcje z tych watkow na przemian.

    Czy jest mozliwe cos takiego do zrealizowania na mikrokontrolerach ( pisząc w C) ?????

    0 12
  • Arrow Multisolution Day
  • #2 05 Mar 2006 12:35
    trebuch1
    Poziom 24  

    Jest mozliwe ale to nie ma sensu. W prostej linii dążysz do napisania wielozadaniowego systemu operacyjnego. Zanim zakończysz takie oprogramowanie, braknie Ci czasu zasobów w kontrolerze a gdzie reszta czyli właściwe uzytkowe procesy?

    -2
  • Arrow Multisolution Day
  • #3 05 Mar 2006 12:41
    _Matik_
    Poziom 19  

    Musialbys napisac prostego schedulera za pomoca timera, ktory co jakis czas przelaczalby pomiedzy watkami. Ciekawe zagadnienie, tylko pytanie czy koszt obslugi takiego przelaczenia nie bylby dluzszy niz rosadny kwant czasu dla okreslonego watku :> Tymbardziej jesli schedulera chcesz pisac w C a nie w assemblerze.

    0
  • #4 05 Mar 2006 13:39
    sepher
    Poziom 19  

    Dla AVR-GCC dostepnych jest wiele systemów operacyjnych, wystarczy pokopać na AVRFreaks. Dorzucasz pliki z systemem, a później wystarczy odpowiednio wywołać funkcję z wątkiem. Powodzenia ;).

    0
  • #5 05 Mar 2006 23:07
    adamusx
    Poziom 27  

    sepher napisał:
    Dla AVR-GCC dostepnych jest wiele systemów operacyjnych, wystarczy pokopać na AVRFreaks. Dorzucasz pliki z systemem, a później wystarczy odpowiednio wywołać funkcję z wątkiem. Powodzenia ;).



    Czy uruchamiales juz takie systemy na AVRach? Jak to dziala, czy jest sens stosowania takich rozwiazan w mikrokontrolerach?

    0
  • #6 06 Mar 2006 12:56
    sepher
    Poziom 19  

    Sprawdzałem kiedyś z ciekawości czy to działa - prosty przykład mrugał diodami. Działało :). Trudno mi powiedzieć na ile to jest wydajne, jak to się ma do wymagań czasu rzeczywistego itd., najlepiej jak sprawdzisz sam. Korzystałem z FreeRTOS:

    http://www.freertos.org/

    Ma dość przejrzystą dokumentację na stronie. Nie próbowałem innych systemów, ale z tego co widać ten doczekał się przeniesienia na wiele platform sprzętowych, co może świadczyć (ale nie musi) o jego dobrej jakości. Życzę powodzenia w eksperymentach.

    0
  • #7 06 Mar 2006 13:10
    fantom
    Poziom 31  

    Wedlug mnie AVR-y nie bardzo nadaja sie do pisania wielowatkowych systemow ze wzgledu na zbyt duzy narzut przy zrzucaniu kontekstu procesora (duza ilosc rejestrow) oraz brak konkretnego wsparcia dla operacji na stosie.Wydaje sie ze rowniez architektura harwardzka nie bardzo temu sprzyja.

    0
  • #8 06 Mar 2006 17:27
    adamusx
    Poziom 27  

    Tak też własnie myslałem :)

    0
  • #9 07 Mar 2006 11:46
    micha3
    Poziom 11  

    cześć wszystkim
    Obecnie właśnie z czymś takim się bawię.
    W moim wykonaniu przełączenie pomiędzy poszczególnymi zadaniami zajmuje ok 300 taktów zegara.
    W odróżnieniu od innych systemów mój ma stała wielkość stosu dla 1 zadania. Ma tp a zaletą że doskonale wiesz ile pamięci już zużyłeś i bardzo łatwo debungować w avr-studio. Być może gdy będę miał trochę czasu to dorzucę detekcje przepełnienia stosu i możliwość ustawiania jej wielkości dla każdego zadania osobno.

    0
  • #10 07 Mar 2006 20:59
    adamusx
    Poziom 27  

    Witam.

    Czy pisales cala procedurke przelaczania sam czy wspierales sie jakimis przykladami? Moglbys zamiescic kodzik?

    0
  • #11 07 Mar 2006 21:22
    micha3
    Poziom 11  

    Praktycznie wszystko pisałem sam, od podstaw. Przeglądałem kiedyśkod AvrX i wydał mi się troszkę za skomplikowany.

    co do kodu to kilka uwag:
    Gdy korzystasz z AvrSide to zostawiasz nazwy plików takie jakie są.
    Gdy czegoś innego to musisz zmienić nazwę small_os.S

    W ramach licencji prosiłbym o poinformowanie mnie o wszelkich uwagach:D

    ps. Może być drobny problem z komentarzami, bo robiłem to w różnych edytorach, i niezauważyłem że ustawiłem błędne kodowanie- a poprawiać tego mi teraz już nie chce

    0
  • #12 07 Mar 2006 21:56
    adamusx
    Poziom 27  

    Korzystam z AVRside . Jak bede mial jakies uwagi oczywiscie dam znac :)


    Aha , co to jest za biblioteka serial.h ?

    0
  • #13 07 Mar 2006 22:25
    micha3
    Poziom 11  

    Do kumunikacji przez port szeregowy, zapomocą pakietów danych.
    Tylko jeszcze nie przetestowana

    0