PMK_2015_4 (1).pptx

31
PRIMENA MIKROKONTROLERA- MS1PMK 4. deo 2015 Nenad Jovičić

Transcript of PMK_2015_4 (1).pptx

Page 1: PMK_2015_4 (1).pptx

PRIMENA MIKROKONTROLERA- MS1PMK4. deo

2015Nenad Jovičić

Page 2: PMK_2015_4 (1).pptx

NVIC – Nested Vector Interrupt Controller

Page 3: PMK_2015_4 (1).pptx

NVIC – Nested Vector Interrupt Controller

• NVIC podržava do 240 prekida sa 256 nivoa prioriteta koji se mogu dinamički menjati.

• NVIC implementira mehanizme za malo vreme kašnjenja servisiranja prekida.

• Puni pristup registrima NVIC je moguć iz privilegovanog moda izvršavanja u bilo kom formatu (bajt, polureč, reč).

• Registri NVIC su sistemski registri u little endian formatu zapisa 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

Page 4: PMK_2015_4 (1).pptx

IVT – Interrupt Vector Table

• Mogućnost remapiranja tabele vektora preko podešavanja registra ofseta tabele

• Adresa početka tabele poravnata na granicu 1024 bajta.

Izuz

eci

Prek

idi

perif

erijs

kih

mod

ula

Page 5: PMK_2015_4 (1).pptx

Model procesiranja izuzetaka• Osnovne karakteristike– Automatsko snimanje/restauriranje konteksta.– Automatsko čitanje vektorske tabele sa adresama ISR.– Podrška za tail-chaining bez snimanja/restauracije

konteksta između ISR.– Dinamička promena prioriteta prekida.– Direktna veza CPU i NVIC obezbeđuje brz odgovor na

prekid i procesiranje kasno pristiglih prekida višeg prioriteta.

– Konfigurabilan broj prekida 1-240.– Konfigurabilan broj nivoa prioriteta 8-256.– Odvojeni stek i nivo privilegija u handler i thread modu.– Maskiranje prioriteta za implementaciju kritičnih sekcija

koda.

Page 6: PMK_2015_4 (1).pptx

Model procesiranja izuzetaka

• CPU i NVIC obezbeđuju prioritete i servisiranje izuzetaka. Svi izuzeci se servisiraju u handler modu u okviru ISR (Interrupt Service Routine).

• Stanje procesora (kontekst) se pamti na steku po pojavi izuzetka i automatski se restaurira po kraju ISR.

• Preuzimanje prekidnog vektora se obavlja paralelno sa snimanjem konteksta.

Page 7: PMK_2015_4 (1).pptx

Tipovi izuzetaka

Prekidi periferijskih modula

SP_init

Reset vektor

Page 8: PMK_2015_4 (1).pptx

Način procesiranja izuzetaka• Dva mehaizma koje NVIC koristi za smanjivanje vremena kašnjenja

servisiranja prekida su:– Tail-chaining– Lait-arrivals

• Ovim mehanizmima se postiže determinističko ponašanje sistema.• Malo kašnjenje servisiranja izuzetaka što je od velike važnosti kod event-

driven namenskih sistema za rad u realnom vremenu.• Kod Cortex-M3 arhitekture se postiže vreme kašnjenja servisiranja prekida

od 12 taknih ciklusa. Na ARM7 arhitekturi snimanje konteksta traje 24-42 ciklusa, a restauracija 16 ciklusa.

POP

12ciklusa

12ciklusa

Page 9: PMK_2015_4 (1).pptx

Zamena konteksta• Zamena konteksta je karakteristična za promenu toka izvršavanja

programskog koda kao posledice pojave izuzetka ili promene aktivnog taska (procesa, tj. thread-a) na sistemu sa RTOS.

• 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.

Page 10: PMK_2015_4 (1).pptx

Čuvanje konteksta

• U slučaju Cortex-M4 kontrolera sa FPU kontekst je znatno veći.

Page 11: PMK_2015_4 (1).pptx

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.

Page 12: PMK_2015_4 (1).pptx

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.

Page 13: PMK_2015_4 (1).pptx

Late arrivals

• 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.

Page 14: PMK_2015_4 (1).pptx

Inicijalizacija procesora

Inicijalizacija SP registra ADR: 0x00000000 POR: SPmem(0x00000000)

Tabela prekidnih vektora (IVT) Počinje od adrese 0x00000004 Sadrži 32-bitne adrese ISR Ulaz #1: reset vektor

ADR: 0x0000004 POR: PCmem(0x00000004)

Izvršavanje programskog koda

Page 15: PMK_2015_4 (1).pptx

MPU

• MPU je komponenta koja omogućava zaštitu pristupa memoriji kroz podršku za zaštitu regiona, preklapanje zaštićenih regiona, dozvolu pristupa i prosleđivanje memorijskih parametara sistemu.

• U slučaju grešaka u pristupu generiše se Memory_Management izuzetak čiji je prioritet programabilan.

• Pomoću MPU jedinice moguće je implementirati privilegije pristupa, razdvojiti procese i implementirati pravila pristupa.

• Registri MPU definišu broj podržanih regiona, baznu adresu, veličinu, prava pristupa...

Page 16: PMK_2015_4 (1).pptx

MPU

• Kod Cortex-M3 MPU podržava do 8 regiona koji mogu biti podeljeni na po 8 podregiona.

Privilegovani mod izvršavanja

Neprivilegovani mod izvršavanja

Opcije podešavanja prava pristupa

Page 17: PMK_2015_4 (1).pptx

MBED platoforme

• Svakim danom broj MBED-enabled platformi raste

Page 18: PMK_2015_4 (1).pptx

MBED LPC1768-arhitektura

Page 19: PMK_2015_4 (1).pptx

Veza MBED-a i PC-ja je ostvarena preko “tajne komponente” IC1

Page 20: PMK_2015_4 (1).pptx

Određen broj pinova LPC1768 je povezan sa ostatkom MBED-a

Page 21: PMK_2015_4 (1).pptx

MBED i LPC1768

Page 22: PMK_2015_4 (1).pptx

MBED i LPC1768

• Tabela prikazuje veze LPC1768 sa pinovima MBED-a.

Page 23: PMK_2015_4 (1).pptx

MBED se napaja preko USB-a ali prihvata i spoljašnje kao i baterijsko napajanje

Page 24: PMK_2015_4 (1).pptx

Ethernet chipset

Page 25: PMK_2015_4 (1).pptx

Hello World

• Postojeće programe i biblioteke je moguće uvesti u kompajler korišćenjem Import funkcije.

• Osim toga, prilikom kreiranja novog programa automatski će biti kreiran main.cpp fajl sa spektakularnom funkcijom treperenja LED diode. To je praktično Hello World.

Page 26: PMK_2015_4 (1).pptx

#include "mbed.h“ DigitalOut myled(LED1); int main() {

while(1) {

myled = !myled;

wait(0.25);

}

}

pin1_18 (definisano u PinNames.h)

myled objekat tipa DigitalOut, poziv konstruktora

naziv tipa (klasa)

operator=DigitalOut& operator= (DigitalOut& rhs) { write(rhs.read()); return *this; }

Upotreba DigitalOut bibliotekeNema adresiranja portaNema bit operacijaNema pristupa pristupa direction registru

Pozivi funkcija DigitalOut bibliotekeMogućnosti poziva funkcija u formi složenih logičkih i aritmetičkih konstrukcija

C++

Page 27: PMK_2015_4 (1).pptx

Debagovanjehttp://mbed.org/handbook/Debugging

• Run-time greske – greške koje se ne vide u toku prevođenja. Nastaju kada loše napisan program pokušava da radi nedozvoljene radnje ili pokušava da pristupa nedozvoljenim resursima. Na sledećem primeru se pokušava definisanje pwm izlaza na portu p20 što ne nedozvoljeno.

#include "mbed.h" PwmOut led(p20);int main() { while(1) { for(float p = 0.0f; p < 1.0f; p += 0.1f) { led = p; wait(0.1); } }}

Efekat koji će se javiti je specifična signalizacija LE dioda.

Page 28: PMK_2015_4 (1).pptx

Debagovanje funkcionalnosti – Online Compiler

• U slučaju korišćenja ONLINE kompjalera, MBED nema mogućnost prave podrške za real-time debugging kao što to recimo ima MSP430 korišćenjem FET debugger-a, i to je jedna od većih mana MBED-a.

• Nemoguće je zaustaviti izvršavanje programa u nekom trenutku niti postaviti breakpoint. Nemoguće je i očitati proizvoljan sadržaj memorije niti registara mikrokontrolera.

• U nedostatku boljeg koriste se dva odavno poznata načina debuggovanja.• Jedan je korišćenje neke od 4 LE diode na samom MBED-u. Ideja je da se

različita stanja korisničkog porgrama signaliziraju različitim stanjima uključenosti dioda.

• Drugi način je korišćenje sistemskog serijskog interfejsa koji je sastavni deo USB veze PC-ja i MBED-a.

• Standardna MBED biblioteka poseduje klasu serial pomoću koje se može konfigurisati i pristupati USB serijskom ali i ostalim serijskim portovima MBED-a.

Page 29: PMK_2015_4 (1).pptx

“Pravo” debagovanje - STM32 – Nucleo

• Debagovanje kroz STLINK debugger

Page 30: PMK_2015_4 (1).pptx

“Pravo” debagovanje - LPC• Od skoro je data

podrška za pravo debagovanje kroz korišćenje CMSIS- DAP (debugg access port).

• To je moguće samo ukoliko se koristi offline kompjaler koji podržava pristup (KEIL) i ukoliko je moguće firmware MBED interfejsa unaprediti za tu svrhu.

Page 31: PMK_2015_4 (1).pptx

Eksportovanje prema eksternom debugger-u