Prekidi u STM32F103, NVIC Flashcards

1
Q

Koji rukovaoci izuzetnim situacijama postoje u STM32F103?

A

Fault handler
System handler

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Šta radi fault handler?

A

Obrađuje fault izuzetke

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Šta radi System handler?

A

Obrađuje:
- fault izuzetke
- nemaskirajuće prekide (NMI)
- supervisor call (SVC)
- PendSV
- SysTick

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Kako se zove rukovalac prekidima periferija?

A

ISR = Interrupt Service Routine

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Šta radi ISR?

A

Obrađuje izuzetke IRQ0-IRQ67

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Koji mehanizam se koristi za obradu prekida u STM32F103?

A

Vektorisani mehanizam sa ugnježđivanjem izuzetaka

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Od koje adrese počinje vektor tabela?

A

Počinje od adrese 0 (4?), ali može da se relocira na drugu adresu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Koliko linija za prekide ima NVIC?

A

68 linija za prekide

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Gde se nalazi NVIC kontroler u odnosu na procesor?

A

Blisko je spregnut sa procesorom

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Da li instrukcije mogu da se prekinu u STM32F103 upotrebom prekida?

A

Da, postoji mogućnost prekidanja instrukcija dugotrajnog izvršavanja

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Kako da se smanji potrošnja STM32F103 upotrebom prekida?

A

Može da se upravlja napajanjem i da se uključe modovi smanjene potrošnje

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Koliko nivoa prioriteta prekida ima u STM32F103?

A

16 nivoa prioriteta

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Zašto mogu da se grupišu prekidi u STM32F103?

A

U cilju bolje kontrole preotimanja (preemption control)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Kako može da se vrši dozvoljavanje i zabrana prekida u STM32F103?

A

Pojedinačno i na nivou procesora

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Na šta procesor reaguje kad stigne prekid?

A

Na nivo (level triggered interrupt)
i na ivicu (edge triggered interrupt)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Kakve moraju biti adrese svih prekidnih rutina u STM32F103?

A

Neparne, da bi procesor ostao u Thumb stanju

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Koji tipovi izuzetaka postoje u STM32F103 (Cortex-M3)?

A

Reset
NMI = Non Maskable Interrupt
Hard fault
Memory management fault
Bus fault
Usage fault
SVCall
PendSv
SysTick
Maskirajući prekidi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Kada se aktivira reset izuzetak?

A

Po uspostavljanju napajanja i nakon reseta sistema (nakon deaktivacije reset signala)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Koji izuzetak se jedini izvršava u privilegovanom režimu u Thread modu?

A

Reset izuzetak

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Koji je prioritet reset izuzetka?

A

-3, fiksno najviši

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Koji je prioritet NMI izuzetka?

A

-2, fiksno drugi najviši

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Kako se aktivira NMI izuzetak?

A

Spolja ili softverski

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Da li je moguće zabraniti NMI izuzetak?

A

Nije moguće (zove se nemaskirajući prekid)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Koji je prioritet Hard fault izuzetka?

A

-1, fiksno treći najviši

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Kada se izvršava hard fault?
- kao posledica greške tokom rada sistema - kada druga rutina ne može da obradi nastalu grešku u sistemu
26
Kada nastaje memory management fault?
- u slučaju narušavanja pravila zaštite u MPU - u slučaju pokušaja izvršavanja instrukcija u regionu sa XN atributom
27
Šta je bus fault?
Greška nastala tokom pristupa instrukcijama i podacima
28
Šta je usage fault?
Greška nastala izvršavanjem instrukcije na nepredviđen način
29
Kada se diže usage fault izuzetak?
- nepostojeća instrukcija - nedozvoljen neporavnat pristup - nevalidno stanje prilikom izvršavanja instrukcija - greška pri povratku iz neke druge rutine (RET) - deljenje nulom
30
Kada se vrši eskalacija grešaka na hard fault?
Kada iz različitih razloga grešku nije moguće obraditi namenskim rukovaocem: - rukovalac proizvodi isti tip greške zbog koje je pozvan - rukovalac generiše novu grešku istog ili nižeg prioriteta - neki drugi rukovalac generiše grešku čiji rukovalac je istog ili nižeg prioriteta - odgovarajući rukovalac u konfiguraciji nije omogućen
31
Koji je izuzetak (poseban slučaj) kada ne dolazi do eskalacije na hard fault?
Slučaj u kojem bus fault nastane tokom operacije push, prilikom ulaska u rukovalac za bus fault.
32
Kada se vrši lockup (zaključavanje)?
Kada se u reset ili NMI obradi desi hard fault - procesor se zaustavlja, ne izvršava instrukcije.
33
Koji sve prekidi postoje u STM32F103?
Interrupt (IRQ)
34
Šta je sistemski poziv u STM32F103?
SVCall prekid. Aplikacija iz neprivilegovanog režima izvršava predefinisane sistemske usluge u privilegovanom režimu.
35
Kako se diže PendSV prekid/izuzetak?
Zahteva se softverski, postavljanjem odgovarajućeg kontrolnog bita u ICSR
36
Šta je SysTick?
Prekid sistemskog tajmera
37
Da li SysTick može da se aktivira i softverski?
Da, kroz ICSR
38
Šta je IRQ?
Interrupt Request, prekid periferije
39
Koliko različitih prekida periferija postoji u STM32F103?
68 različitih prekida
40
Koja komponenta povezuje određene pinove mikrokontrolera STM32F103 kao izvore zahteva za prekid sa NVIC?
EXTI - External Interrupt / Event Controller
41
Šta znači EXTI?
External Interrupt / Event Controller
42
Šta znači IVT?
Interrupt Vector Table
43
Koliko postoji nivoa prioriteta kod izuzetaka?
16 programabilnih nivoa prioriteta (4 bita)
44
Koji je podrazumevan prioritet kod izuzetaka koji nisu Reset, NMI, Hard fault?
0
45
Koji prekid se prihvata ako više prekida imaju iste prioritete?
Prihvata se onaj sa najmanjim brojem prekida (broj IRQ linije)
46
Šta je potrebno da bi prekid mogao da prekine drugi prekid?
Neophodno je da bude višeg piroriteta na nivou grupe
47
Kako se konfiguriše broj bitova koji određuju grupu prioriteta?
Softverski, kroz polje PRIGROUP registra SCB_AIRCR (Application Interrupt and Reset Control Register)
48
Da li registrima jezgra za kontrolu prekida može da se pristupa u neprivilegovanom režimu u STM32F103?
Ne, registri za kontrolu prekida zahtevaju privilegovano izvršavanje
49
Koju početnu vrednost imaju registri za kontrolu prekida u STM32F103?
0
50
Šta se desi ako se pokuša čitanje registara jezgra za kontrolu prekida u neprivilegovanom pristupu?
Čita 0
51
Šta se desi ako se pokuša upis u registre jezgra za kontrolu prekida u neprivilegovanom pristupu?
Ignoriše se
52
Šta radi upis 1 u bit 0 PRIMASK registra?
Zabranjuje aktivaciju svih izuzetaka konfigurabilnog prioriteta
53
Šta znači kada je bit 0 PRIMASK registra 0?
Dozvoljena je aktivacija svih izuzetaka
54
Koji bitovi PRIMASK registra se ne koriste (rezervisani su)?
Bitovi 1-31
55
Šta je i za šta služi PRIMASK registar?
Priority Mask registar Služi da se zabrani aktivacija svih izuzetaka konfigurabilnog prioriteta (samo bit 0 se postavi na 1)
56
Šta je i za šta služi FAULTMASK registar?
Fault Mask registar Bit 0 ako se postavi na 1 zabranjuje aktivaciju svih izuzetaka, osim NMI
57
Koji je uslov za setovanje bita 0 FAULTMASK registra?
može da se setuje samo kada je tekući prioritet <= 0
58
Šta se desi sa FAULTMASK registrom po izlasku iz bilo kog rukovaoca izuzecima? (osim pri izlasku iz NMI)
Briše se na 0
59
Koji bitovi se ne koriste u FAULTMASK registru? (rezervisani su)
Bitovi 1-31
60
Šta je i za šta služi BASEPRI registar?
Base Priority registar Služi za podešavanje osnovnog prioriteta ispod kojeg prekidi neće biti prihvaćeni
61
Koji bitovi u registru BASEPRI se koriste za osnovni prioritet ispod kog prekidi neće biti prihvaćeni u STM32F103?
Bitovi 7..4
62
Šta znači ako su bitovi 7..4 BASEPRI registra jednaki 0 kod STM32F103?
Nema uticaja na prihvatanje prekida
63
Koje bitove u BASEPRI registru Cortex-M3 može da koristi za osnovni prioritet ispod kojeg prekidi neće biti prihvaćeni?
Bitove 7..0
64
Šta se dešava ako je prioritet zahteva za prekid < bit[7..4] registra BASEPRI?
Zahtev se prihvata
65
Šta se dešava ako je prioritet zahteva za prekid >= bit[7..4] registra BASEPRI?
Zahtev se ne prihvata
66
Koja sve stanja izuzetaka (prekida) postoje?
Inactive Pending Active Active and pending
67
Šta govori to da je stanje izuzetka (prekida) inactive?
Ne postoji zahtev
68
Šta govori to da je stanje izuzetka (prekida) pending?
Zahtev stigao i čeka na procesor
69
Kada NVIC stavlja prekid u stanje pending?
U zavisnosti od konfiguracije: - kada se detektuje visok nivo signala na ulazu prekida u trenutku kada prekid nije aktivan - kada se detektuje uzlazna ivica zahteva za prekid - kada se softverski postavi zahtev za prekid u pending (NVIC_ISPR = Interrupt Set Pending Register ili NVIC_STIR = Software Trigger Interrupt Register)
70
Do kada je zahtev za prekid aktivan?
- do prihvatanja zahteva za prekid ili - dok se softverski ne poništi pending stanje
71
Kada se softverski poništi pending stanje, šta se dešava ako je prekid na nivo (level-sensitive interrupt) i zahtev je i dalje aktivan?
Stanje se ne menja (Pending), a ako zahtev nije i dalje aktivan, onda Inactive.
72
Kada se softverski poništi pending stanje, šta se dešava ako je prekid na ivicu?
Pending se briše (Inactive), a signal ostaje aktivan ili neaktivan.
73
Šta govori da je stanje izuzetka (prekida) active?
Otpočela je obrada zahteva
74
Kod level-sensitive interrupt-a (zahteva za prekid na nivo), šta se dešava ako je zahtev i dalje aktivan i kada se završi obrada zahteva za prekid?
Ponovo Pending, a ako je neaktivan zahtev onda Inactive.
75
Kod edge-triggered interrupt-a (zahteva za prekid na ivicu), šta se dešava ako se ponovo desi ivica u toku active stanja (dok se obrađuje)?
Ako se ponovo desi ivica, Active i Pending.
76
Šta znači ako je zahtev za prekid i u stanju Active i u stanju Pending?
Znači da je stigao novi zahtev tokom obrade prethodnog zahteva.
77
Koji su koraci prilikom prihvatanja i obrade izuzetaka i prekida?
1) stiže zahtev (Inactive → Pending) 2) provera da li može da se prihvati 3a) stacking i u LR se upisuje ključ za povratak EXC_RETURN 3b) paralelno se dohvata adresa rukovaoca iz IVT 4) Late-arriving ako je pristigao zahtev između 3a i ISR 5) u PC se upisuje ključ za povratak iz LR 6) Tail-chaining ako je neki zahtev Pending
78
Na osnovu čega se prilikom prihvatanja i obrade izuzetaka proverava da li izuzetak može da se prihvati?
Na osnovu prioriteta, dozvole i podešavanja registara jezgra
79
Za šta služi EXC_RETURN?
EXC_RETURN je vrednost (ključ za povratak) koja se upisuje u LR pre početka obrade izuzetaka i prekida. Govori procesoru da treba da se vrati iz rutine po završetku, i u kom modu (thread ili handler) i na koj stek (Main ili Process)
80
Šta podrazumeva stacking?
Pre ulaska u prekidnu rutinu, na steku se čuva: - R0-R3 - R12 - LR - povratna adresa - PSR Opciono se radi poravnanje na duplu reč.
81
Kako se uključuje poravnanje na duplu reč prilikom stacking-a?
Ako se STKALIGN fleg u CCR (Configuration and Control Register) postavi na 1, u PSR[9] na steku se čuva informacija da li je rađeno poravnanje.
82
Šta je ponašanje poznato kao Late-arriving?
Ako se u toku 3a (stacking i upisivanje u LR) sve do učitavanja prve instrukcije ISR pojavi izuzetak višeg grupnog prioriteta, dohvata se adresa njegove ISR i izvršava
83
Šta se radi na kraju rukovaoca? (3 načina)
U PC se upisuje ključ za povratak iz LR i dekodira. Na osnovu toga se izvršava povratna logika. Povratna adresa se sa steka stavlja u LR. Iz LR se povratna adresa smešta u PC. - POP PC - BX (Branch Exchange) LR - LDR i LDM PC
84
Da li EXC_RETURN sadrži adresu povratka iz prekidne rutine?
EXC_RETURN nije direktno adresa povratka, ali kada se upiše u Program Counter (PC), on omogućava procesoru da pravilno restaurira stanje pre prekida.
85
Šta je tail-chaining?
Preskakanje restauracije konteksta i ponovno čuvanje konteksta da bi se opslužio zahtev za prekid koji je bio Pending prilikom povratka iz prekidne rutine.
86
Kako se vrši dozvola pojedinačnih prekida u NVIC?
Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ISERx registru (Interrupt Set-Enable Registers)
87
Kako se vrši zabrana pojedinačnih prekida u NVIC?
Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ICERx registru (Interrupt Clear-Enable Registers)
88
Kako se vrši postavljanje pending stanja pojedinačnih prekida u NVIC?
Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ISPRx registru (Interrupt Set-Pending Registers)
89
Kako se vrši brisanje pending stanja pojedinačnih prekida u NVIC?
Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ICPRx registru (Interrupt Clear-Pending Registers)
90
Kako se vrši očitavanje active statusa pojedinačnih prekida?
NVIC_IABRx (Interrupt Active Bit Registers)
91
Kako se vrši podešavanje prioriteta prekida (IRQ0-67)?
NVIC_IPRx (Interrupt Priority Registers)
92
Kako se vrši softversko generisanje zahteva za prekid?
NVIC_STIR (Software Trigger Interrupt Register)
93
U kom režimu može da se izvrši softversko generisanje zahteva za prekid (NVIC_STIR)?
Može i u neprivilegovanom i u privilegovanom režimu.
94
U koliko primeraka je prisutna većina registara iz NVIC-a?
U 3 primeraka (jedan može da pokrije 32 prekida)
95
Koji sve registri postoje u NVIC-u?
Set-enable (NVIC_ISER) Clear-enable (NVIC_ICER) Set-pending (NVIC_ISPR) Clear-pending (NVIC_ICPR) Active bit (NVIC_IABR) Interrupt Priority (NVIC_IPR) Software Trigger (NVIC_STIR)
96
Koji registri u SCB služe za upravljanje NVIC-om?
SCB_ICSR = Interrupt Control and State Register SCB_VTOR = Vector Table Offset Register SCB_AIRCR = Application Interrupt and Reset Control Register SCB_CCR = Configuration and Control Register SCB_SHPR1/2/3 = System Handler Priority Register SCB_SHCSR = System Handler Control and State Register SCB_CFSR = Configurable Fault Status Register SCB_HFSR = Hard Fault Status Register SCB_MMFAR = Memory Management Fault Address Register SCB_BFAR = Bus Fault Address Register
97
Koji registar služi za upravljanje NMI, PendSV i SysTick prekidima i za status prekida?
SCB_ICSR = Interrupt Control and State Register
98
Koji registar služi za relokaciju (I)VT?
SCB_VTOR = Vector Table Offset Register
99
Koji registar služi za podešavanje veličine grupe prioriteta?
SCB_AIRCR = Application Interrupt and Reset Control Register
100
Koji registar služi za podešavanje prijavljivanja grešaka i dozvoljavanje softverskog generisanja prekida iz neprivilegovanog režima?
SCB_CCR = Configuration and Control Register
101
Koji registar služi za podešavanje prioriteta za sistemske rukovaoce?
SCB_SHPR1/2/3 = System Handler Priority Register
102
Koji registar služi za upravljanje sistemskim rukovaocima?
SCB_SHCSR = System Handler Control and State Register
103
Koji registri služe za dohvatanje informacija o grešci?
SCB_CFSR = Configurable Fault Status Register SCB_HFSR = Hard Fault Status Register SCB_MMFAR = Memory Management Fault Address Register SCB_BFAR = Bus Fault Address Register