PMK_2015_4 (1).pptx
-
Upload
marko-vlasic -
Category
Documents
-
view
231 -
download
0
Transcript of PMK_2015_4 (1).pptx
PRIMENA MIKROKONTROLERA- MS1PMK4. deo
2015Nenad Jovičić
NVIC – Nested Vector Interrupt Controller
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
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
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.
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.
Tipovi izuzetaka
Prekidi periferijskih modula
SP_init
Reset vektor
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
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.
Čuvanje konteksta
• U slučaju Cortex-M4 kontrolera sa FPU kontekst je znatno veći.
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.
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.
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.
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
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...
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
MBED platoforme
• Svakim danom broj MBED-enabled platformi raste
MBED LPC1768-arhitektura
Veza MBED-a i PC-ja je ostvarena preko “tajne komponente” IC1
Određen broj pinova LPC1768 je povezan sa ostatkom MBED-a
MBED i LPC1768
MBED i LPC1768
• Tabela prikazuje veze LPC1768 sa pinovima MBED-a.
MBED se napaja preko USB-a ali prihvata i spoljašnje kao i baterijsko napajanje
Ethernet chipset
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.
#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++
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.
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.
“Pravo” debagovanje - STM32 – Nucleo
• Debagovanje kroz STLINK debugger
“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.
Eksportovanje prema eksternom debugger-u