Presentation is loading. Please wait.

Presentation is loading. Please wait.

32-bitni mikrokontroleri i primena - MS1BMP

Similar presentations


Presentation on theme: "32-bitni mikrokontroleri i primena - MS1BMP"— Presentation transcript:

1 32-bitni mikrokontroleri i primena - MS1BMP
2017/2018 Nenad Jovičić

2 Bit-banding b31-b0 mapira se b[0] bit iz alias memorije!!!

3 Bit-banding Upisivanje sa i bez bit-banding-a
Tipičan problem: Prekid se javi u ovom momentu i upiše novu vrednost na adresu 0x Upisivanje sa i bez bit-banding-a Očitavanje sa i bez bit-banding-a Atomska operacija

4 Analizirati tri prikazana načina promene vrednosti bita
Vežba 3.2 Bit Banding Runtime makro yna d abude spor

5 Systick tajmer Fleksibilni sistemski tajmer
Sastavni deo procesorskog CORTEX-Mx jezgra. 24-bit auto-reload brojač za posebnim prekidom. Obično se taktuje takom procesora. Pogodan za realizaciju real-time operativnih sistema. S obzirom da je deo procesorskog jezgra definicije funkcija koje konfigurišu rad časovnika se nalaze u okviru core_cmX.h fajla koji obezbeđuje ARM. Neke od high level funkcija može da obezbedi i proizvođač mikrokontrolera i one se nalaze u okviru peripheral drajver biblioteke i to u sastavu misc.h fajla.

6 Systick timer

7 NVIC – Nested Vector Interrupt Controller
Druga komponenta po složenosti nakon samog procesora. Identičan je kod svih Cortex-a, samo se razlikuje broj ulaza.

8 NVIC – Nested Vector Interrupt Controller
NVIC podržava do 240 prekida sa 256 nivoa prioriteta koji se mogu dinamički menjati. Kod Cortex-M0 32 prekida i 4 nivo prioriteta. NVIC implementira mehanizme za malo vreme kašnjenja servisiranja prekida. Iz non-interrupt koda se u prekid ulazi uvek za 12 clk ciklusa. (16 kod Cortex-M0) Registri NVIC su sistemski registri koji sadrže informacije o broju prekidnih linija, podešavanje sistemskog intervala, dozvoli prekida, baferisanju prekida (pending, pre-empted), prioritetima prekida, informacije o broju i verziji CPU, procesiranju izuzetaka (prioritetima, dozvoli), adresi početka VT, kontroli stanja CPU sa smanjenom potrošnjom. Omogućeno gneždenje prekida.

9 IVT – Interrupt Vector Table
Mogućnost remapiranja tabele vektora preko podešavanja registra ofseta tabele Adresa početka tabele poravnata na granicu 1024 bajta. Prekidi periferijskih modula Izuzeci

10 Režimi rada Thread mode je praktično non-interrupt kod, dok je tzv. Handler mode praktično interrupt kod. U jednostavnim aplikacijama programer o tome ne vodi računa.

11 Ulazak u prekid Učitava se prekidni vektor preko ICODE magistrale Ta vrednost, koja je praktično adresa prekidne rutine se ubacuje u R15 (program counter) Kod Cortex-M3 procesora se pri zameni konteksta na steku pamte sledeći registri: Programski brojač PC Statusni registar procesora xPSR r0-r3 r12 Link registar LR Nakon završetka operacije smeštanja podataka na stek SP se dekrementira za 8 reči.

12 Interrupt vector table

13 Povratak iz prekidne rutine
Ne postoji instrukcija za povratak iz prekida (RETI ili slično). Koristi se nešto od ovoga: Za povratak se koristi “zapis” u registru R14 (LR). U normalnom radu u R14 se nalazi adresa skoka, ali u prekidu se u R14 nalazi specifičan kod koji ukazuje na način povratka iz prekida.

14 Vežba 3.3 SysTick Interrupt

15

16

17 Zašto povratak nije izveden sa BX LR?
Zato što bi tada kod bio: POP {r4} BX LR A ovde je sve izvedeno jednom instrukcijom POP {r4, pc}

18 “Interni” prekidi -> Izuzeci
15 internih linija za takozvane izuzetke

19 Usage fault Nastaje kada se procesor “nepravilno” koristi
Mogući uzroci:

20 Bus fault Nepravilna pristup AHB magistrali Mogući uzroci:
Tipičan uzrok – Overclock-ovanje magistrale

21 Memory Manager Fault MPU je opciona periferija.
Nije dostupna kod Cortex-M0. Mogući uzroci:

22 Hard Fault Trebalo bi da bude posledica hardverske greške, ali najčešće je posledica greške na magistrali za vreme čitanja prekidnog vektora. Može da se pojavi i kao eskalacija prekida, a to se desi kada na primer BUS, MM i Usage Fault nisu dozvoljeni, pa se kaskadno poziva Hard Fault. Dozvola izuzetaka se vrši preko registra “System Handler Control and State” (SHCSR) u System Control Block-u.

23 Prioriteti i preuzimanje
Svaka periferija poseduje registar preko kojeg se definiše prioritet prekida koji može da poseduje do 8 aktivnih bita. Prioritet se deli na prioritet za preuzimanje i podprioritet. Što je brojna vrednost prioriteta niža, prioritet je viši. Drugim rečima, ako se pojavi zahtev koji ima prioritet 6, on će prekinuti izvršavanje prekida čiji je trenutni prioritet 7. Podprioritet definiše situaciju kada su na čekanju dva prekida istog prioriteta. Prvi će početi izvršavanje onaj čiji je podprioritet brojno niži. Ali nema preuzimanja!

24 Raspodela na prioritete i podprioritete
Cortex-M0 ima samo 2 prioritetna bita, tj. Samo 4 nivoa. Različiti mikrokontroleri imaju takođe različit broj prioritetnih bitova. Raspodela između prioriteta i podprioriteta je podesiva.

25 Prioriteti izuzetaka Reset ,NMI i hard Fault imaju negativan prioritet što znači da uvek prekidaju bilo korisnički program ili prekid.

26 Dozvola i zabrana prekida
Kod “malih” mikrokontrolera postoji i intenzivno se koristi GIE bit za globalnu zabranu prekida. Osim toga najčešće se prilikom ulaska u prekid tim bitom zabranjuju svi ostali prekidi. Kod Cortex-a to po default-u nije slučaj – prekidi su uvek dozvoljeni a prioriteti određuju ko koga može da prekine. Postoji ipak mogućnost i globalne kontrole i to preko tri specijalna registra za kontrolu prekida:

27 Tail Chaining Tail-Chaining mehanizam se odnosi na situaciju kada dva prekida pristignu u istom trenutku, ili kada pristigne prekid niskog prioriteta za vreme servisiranja prekida višeg prioriteta. Tada će prekid niskog prioriteta čekati završetak ISR koja odgovara prekidu višeg prioriteta, nakon čega će se izvršiti ISR koja odgovara prekidu niskog prioriteta ali bez nepotrebne zamene konteksta između prekidnih rutina (snimanja/restauracije konteksta sa/na stek). Na ovaj način se štedi u vremenu kašnjenja servisiranja prekida za slučaj potrebe za izvršavanjem uzastopnih ISR. Ovih 6 ciklusa se koristi za fetch-ovanje sledeće instrukcije, a stek se ne dira.

28 Late arrivals Late-arrivalls. U slučaju kada se tokom snimanja konteksta kao posledica pojave prekida niskog prioriteta javi prekid višeg prioriteta, odmah nakon snimanja konteksta, kreće se u izvršavanje prekida višeg prioriteta a zatim prema tail-chaining mehanizmu i prekida nižeg prioriteta.

29 POP Preemption Slično, ako se tokom restauracije konteksta javi prekid višeg prioriteta, proces restauracije se napušta i prelazi se na servisiranje prekida višeg nivoa prioriteta.

30 Vežba Ex 3.4 Multiple Interrupts
1UL is an unsigned long int with a value of 1 represented at the bit level as: ISER - Interrupt Set-Enable Registers Dokumentacija:

31 STM32F103RB Svaki mikrokontroler može da ima drugačiji raspored periferijskih prekida.

32 Simulacija Čekanje nakon starta konverzije unutar Systick prekida osigurava da će odmah nakon tog prekida ići prekid ADC-a. Ovde imamo Tail chaining...

33 Modifikacija 1 Zakomentarisati brisanje flag-a u prekidu ADC-a.
Simulacija pokazuje da se procesor “vrti” samo u prekidima.

34 Simulacija 1 Osim toga period Systick tajmera je produžen.
To je zato što oba prekida imaju isti prioritet i čekaju završetak onog drugog.

35 Modifikacija 2 Odkomentarisati brisanje flag-a u prekidu ADC-a ali i dve linije u glavnom programu. Te dve linije vrše podešavanje različitih prioriteta za prekid Systick-a i ADC-a.

36 Simulacija 2 Podešeno je da ADC ima viši prioritet (manja vradnost).
Ovaj uC ima samo 4 najviša bita implementirana tako da podprioritet ne postoji. ADC: SYSTICK:

37 Modifikacija 3 AICR resistar u System Control Block-u služi za definisanje raspodele prioriteta i podprioriteta. Zaštićen je lozinkom i ovo je metod “osiguranog” pristupa. ADC: SYSTICK:

38 Simulacija 3 Sada nema preuzimanja jer oba prekida imaju isti prioritet, a pošto se nikada ne pojavljuju oba zahteva istovremeno nema ni prednosti određene podprioritetom.

39 Modifikacija 4 Izmeniti prioritete prekida na sledeći način:
Dodatnom instrukcijom definisati bazni prioritet koji definiše nivo ispod kojeg prekidi nisu dozboljeni:

40 Simulacija 4 Rezultat je zabrana prekida ADC-a jer je njegov nivo manji ili jednak nivou koji je upisan u BASEPRI specijalni registar.


Download ppt "32-bitni mikrokontroleri i primena - MS1BMP"

Similar presentations


Ads by Google