logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zmienić częstotliwość przerwań RTOS w ARM AT91SAM7x256?

Smashing 29 Maj 2007 13:09 2671 3
REKLAMA
  • #1 3932188
    Smashing
    Poziom 20  
    Posty: 513
    Pomógł: 18
    Ocena: 12
    Od trzech dni bawię się ARM AT91SAM7x256 i RTOS. O RTOS nie wiem nic. Analizując program z www.freertos.org doszedłem co gdzie zmienić żeby dane które chce pojawiały sie w przeglądarce na PC, może ktoś zna odpowiedzi na te pytania:
    1. RTOS w AT91SAM i w ogóle "system czasu rzeczywistego" w mikrokontrolerach polega na wywoływaniu wewnętrznego przerwania które to przerwanie zarządza wszystkimi zadaniami?
    2. Jak pierwszy punkt jest prawda, czy częstotliwość wywoływania tego przerwania da się zmienić?

    Vector Mapping ARM AT91SAM7x256
    0x00 Reset handler - tu jestem po resecie
    undefvec: 0x04 Undefined Instruction - to oczywiste
    swivec: 0x08 Software Interrupt - tu jak jak RTOS i chyba coś jeszcze
    pabtvec: 0x0C Prefetch Abort - to też oczywiste
    dabtvec: 0x10 Data Abort - to też..
    rsvdvec: 0x14 reserved
    irqvec: 0x18 IRQ - przerwania od 2do 31
    fiqvec: 0x1C FIQ szybkie przerwania

    3. Czy przerwania zewnętrzne dzałaja tak: ?
    Jak wywołam przerwanie IRQX (X= 2-31) i CPSR I=0
    3.1. PC zapisuje w R14
    3.2. PC pod "skok" adres 0X18
    3.3. następny cykl jestem pod adresem 0x1C
    3.4. ARM CORE zmniejsza R14 o 4
    3.5. ARM wchodzi w Interrupt mode
    3.6. Jak instrukcja pod adresem 0x18 się wykona to PC "skacze" pod adres który jest w AIC_SVRX

    (X=0-31).

    4. Jak Stronę napisaną w Html "przerobić" na tablice char'ow ?
  • REKLAMA
  • #2 3932252
    _Matik_
    Poziom 19  
    Posty: 390
    Pomógł: 25
    Ocena: 7
    Fajna sprawa taka plytka z sam7x i ethernetem. Tez sie bawie taka konstrukcja.

    Cytat:
    1. RTOS w AT91SAM i w ogóle "system czasu rzeczywistego" w mikrokontrolerach polega na wywoływaniu wewnętrznego przerwania które to przerwanie zarządza wszystkimi zadaniami?


    Mniej wiecej. W procku SAM7X i przykladzie ze strony FreeRTOSa zajmuje sie tym PIT (periodic interrupt timer), ktory cyklicznie wywoluje jadro systemu skladajace sie glownie z schedulera zajmujacego sie przydzielaniem czasu procesora watkowi o najwyzszym priorytecie. Czyli mamy kilka watkow ktore nawet nie wiedza ze sa przelaczane. Za kazdym razem scheduler zapisuje w pamieci zawartosc rejestrow podrecznych i paru innych rzeczy potrzebnych watkowi do pracy (tzw. przelaczanie kontekstu).

    Cytat:
    2. Jak pierwszy punkt jest prawda, czy częstotliwość wywoływania tego przerwania da się zmienić?


    Da sie i zdaje sie ze polega to tylko na zmianie rejestrow PIT. Zwiekszajac czestotliwosc przelaczania, zmniejszamy jednoczesnie czas reakcji programu na jakies zdarzenia. Nie ma jednak sensu ustawiac czestotliwosci na wiecej niz kilkaset Hz bo wtedy wyrazne staja sie koszty czasowe dzialania samego schedulera. Trzeba znalezc kompromis. Zbytnie mniejszenie czestotliwosci powoduje dluzszy czas pomiedzy przelaczeniami i w konsekwencji czas reakcji.

    Cytat:
    4. Jak Stronę napisaną w Html "przerobić" na tablice char'ow ?


    Strona HTML na dysku komputera jest w praktyce tablica charow... teoretycznie wystarczy wrzucic ja programatorem do flasha procka w jakies wolne miejsce a potem "kazac" programowi wyslac okreslony zakres danych poczawszy od wskaznika do poczatku pamieci zajmowanej przez strone HTML az do konca tej strony. Oczywiscie to tak w duzym skrocie.
  • REKLAMA
  • #3 5107295
    sieciech
    Poziom 12  
    Posty: 107
    Ocena: 1
    hej

    nie chce być igonratem z dziedziny uprocków, ale czy ten RTOS jest w ogole konieczny ? tzn czy nie da sie takich samych efektów uzyskać pisząc program bez użycia tego RTOSa ? ideaa RTOSów polega na spełnianiu wymagań czasowych - jesli jednak piszecie o cyklicznym wywołaniu jądra, scheludera, etc etc, to czy samemu nie prościej napisać obsługę przerwań ? Pytam, bo może nie rozumiem czegoś, podchodzę do tego typowo intuicyjnie, do tej pory programowalem tylko atmege 128,a teraz musze zaprogramowac sam7x

    pozdr
  • #4 5108486
    _Matik_
    Poziom 19  
    Posty: 390
    Pomógł: 25
    Ocena: 7
    RTOS oczywiscie nie jest niezbedny. W wiekszosci rozwiazan jest nawet zbedny i powoduje zbyt duza komplikacje programu. Jednakze sa rozwiazania w ktorych okazuje sie ze rezygnujac z systemu, musisz potem sam dopisywac pewne mechanizmy ktore on oferuje. Nie wszystko da sie zrobic w petli z przerwaniami. Dobrym przykladem wydaje mi sie tu urzadzenie sieciowe obslugujace stos TCP i serwujace duze ilosci danych, taki prosty serwer WWW np.
    Niestety prawidlowe zastosowanie takiego gotowego szkieletu aplikacji wymaga doglebnej znajomosci dzialania systemu, inaczej mozna sie umeczyc i zrobic cos co i tak bedzie dzialac niestabilnie i nawet autor urzadzenia nie dojdzie dlaczego tak sie dzieje.
REKLAMA