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
Q

Kada se izvršava hard fault?

A
  • kao posledica greške tokom rada sistema
  • kada druga rutina ne može da obradi nastalu grešku u sistemu
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Kada nastaje memory management fault?

A
  • u slučaju narušavanja pravila zaštite u MPU
  • u slučaju pokušaja izvršavanja instrukcija u regionu sa XN atributom
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Šta je bus fault?

A

Greška nastala tokom pristupa instrukcijama i podacima

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

Šta je usage fault?

A

Greška nastala izvršavanjem instrukcije na nepredviđen način

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

Kada se diže usage fault izuzetak?

A
  • nepostojeća instrukcija
  • nedozvoljen neporavnat pristup
  • nevalidno stanje prilikom izvršavanja instrukcija
  • greška pri povratku iz neke druge rutine (RET)
  • deljenje nulom
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Kada se vrši eskalacija grešaka na hard fault?

A

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

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

Koji je izuzetak (poseban slučaj) kada ne dolazi do eskalacije na hard fault?

A

Slučaj u kojem bus fault nastane tokom operacije push, prilikom ulaska u rukovalac za bus fault.

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

Kada se vrši lockup (zaključavanje)?

A

Kada se u reset ili NMI obradi desi hard fault - procesor se zaustavlja, ne izvršava instrukcije.

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

Koji sve prekidi postoje u STM32F103?

A

Interrupt (IRQ)

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

Šta je sistemski poziv u STM32F103?

A

SVCall prekid.
Aplikacija iz neprivilegovanog režima izvršava predefinisane sistemske usluge u privilegovanom režimu.

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

Kako se diže PendSV prekid/izuzetak?

A

Zahteva se softverski, postavljanjem odgovarajućeg kontrolnog bita u ICSR

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

Šta je SysTick?

A

Prekid sistemskog tajmera

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

Da li SysTick može da se aktivira i softverski?

A

Da, kroz ICSR

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

Šta je IRQ?

A

Interrupt Request, prekid periferije

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

Koliko različitih prekida periferija postoji u STM32F103?

A

68 različitih prekida

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

Koja komponenta povezuje određene pinove mikrokontrolera STM32F103 kao izvore zahteva za prekid sa NVIC?

A

EXTI - External Interrupt / Event Controller

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

Šta znači EXTI?

A

External Interrupt / Event Controller

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

Šta znači IVT?

A

Interrupt Vector Table

43
Q

Koliko postoji nivoa prioriteta kod izuzetaka?

A

16 programabilnih nivoa prioriteta (4 bita)

44
Q

Koji je podrazumevan prioritet kod izuzetaka koji nisu Reset, NMI, Hard fault?

A

0

45
Q

Koji prekid se prihvata ako više prekida imaju iste prioritete?

A

Prihvata se onaj sa najmanjim brojem prekida (broj IRQ linije)

46
Q

Šta je potrebno da bi prekid mogao da prekine drugi prekid?

A

Neophodno je da bude višeg piroriteta na nivou grupe

47
Q

Kako se konfiguriše broj bitova koji određuju grupu prioriteta?

A

Softverski, kroz polje PRIGROUP registra SCB_AIRCR (Application Interrupt and Reset Control Register)

48
Q

Da li registrima jezgra za kontrolu prekida može da se pristupa u neprivilegovanom režimu u STM32F103?

A

Ne, registri za kontrolu prekida zahtevaju privilegovano izvršavanje

49
Q

Koju početnu vrednost imaju registri za kontrolu prekida u STM32F103?

A

0

50
Q

Šta se desi ako se pokuša čitanje registara jezgra za kontrolu prekida u neprivilegovanom pristupu?

A

Čita 0

51
Q

Šta se desi ako se pokuša upis u registre jezgra za kontrolu prekida u neprivilegovanom pristupu?

A

Ignoriše se

52
Q

Šta radi upis 1 u bit 0 PRIMASK registra?

A

Zabranjuje aktivaciju svih izuzetaka konfigurabilnog prioriteta

53
Q

Šta znači kada je bit 0 PRIMASK registra 0?

A

Dozvoljena je aktivacija svih izuzetaka

54
Q

Koji bitovi PRIMASK registra se ne koriste (rezervisani su)?

A

Bitovi 1-31

55
Q

Šta je i za šta služi PRIMASK registar?

A

Priority Mask registar
Služi da se zabrani aktivacija svih izuzetaka konfigurabilnog prioriteta (samo bit 0 se postavi na 1)

56
Q

Šta je i za šta služi FAULTMASK registar?

A

Fault Mask registar
Bit 0 ako se postavi na 1 zabranjuje aktivaciju svih izuzetaka, osim NMI

57
Q

Koji je uslov za setovanje bita 0 FAULTMASK registra?

A

može da se setuje samo kada je tekući prioritet <= 0

58
Q

Šta se desi sa FAULTMASK registrom po izlasku iz bilo kog rukovaoca izuzecima? (osim pri izlasku iz NMI)

A

Briše se na 0

59
Q

Koji bitovi se ne koriste u FAULTMASK registru? (rezervisani su)

A

Bitovi 1-31

60
Q

Šta je i za šta služi BASEPRI registar?

A

Base Priority registar
Služi za podešavanje osnovnog prioriteta ispod kojeg prekidi neće biti prihvaćeni

61
Q

Koji bitovi u registru BASEPRI se koriste za osnovni prioritet ispod kog prekidi neće biti prihvaćeni u STM32F103?

A

Bitovi 7..4

62
Q

Šta znači ako su bitovi 7..4 BASEPRI registra jednaki 0 kod STM32F103?

A

Nema uticaja na prihvatanje prekida

63
Q

Koje bitove u BASEPRI registru Cortex-M3 može da koristi za osnovni prioritet ispod kojeg prekidi neće biti prihvaćeni?

A

Bitove 7..0

64
Q

Šta se dešava ako je prioritet zahteva za prekid < bit[7..4] registra BASEPRI?

A

Zahtev se prihvata

65
Q

Šta se dešava ako je prioritet zahteva za prekid >= bit[7..4] registra BASEPRI?

A

Zahtev se ne prihvata

66
Q

Koja sve stanja izuzetaka (prekida) postoje?

A

Inactive
Pending
Active
Active and pending

67
Q

Šta govori to da je stanje izuzetka (prekida) inactive?

A

Ne postoji zahtev

68
Q

Šta govori to da je stanje izuzetka (prekida) pending?

A

Zahtev stigao i čeka na procesor

69
Q

Kada NVIC stavlja prekid u stanje pending?

A

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
Q

Do kada je zahtev za prekid aktivan?

A
  • do prihvatanja zahteva za prekid ili
  • dok se softverski ne poništi pending stanje
71
Q

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?

A

Stanje se ne menja (Pending), a ako zahtev nije i dalje aktivan, onda Inactive.

72
Q

Kada se softverski poništi pending stanje, šta se dešava ako je prekid na ivicu?

A

Pending se briše (Inactive), a signal ostaje aktivan ili neaktivan.

73
Q

Šta govori da je stanje izuzetka (prekida) active?

A

Otpočela je obrada zahteva

74
Q

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?

A

Ponovo Pending, a ako je neaktivan zahtev onda Inactive.

75
Q

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)?

A

Ako se ponovo desi ivica, Active i Pending.

76
Q

Šta znači ako je zahtev za prekid i u stanju Active i u stanju Pending?

A

Znači da je stigao novi zahtev tokom obrade prethodnog zahteva.

77
Q

Koji su koraci prilikom prihvatanja i obrade izuzetaka i prekida?

A

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
Q

Na osnovu čega se prilikom prihvatanja i obrade izuzetaka proverava da li izuzetak može da se prihvati?

A

Na osnovu prioriteta, dozvole i podešavanja registara jezgra

79
Q

Za šta služi EXC_RETURN?

A

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
Q

Šta podrazumeva stacking?

A

Pre ulaska u prekidnu rutinu, na steku se čuva:
- R0-R3
- R12
- LR
- povratna adresa
- PSR
Opciono se radi poravnanje na duplu reč.

81
Q

Kako se uključuje poravnanje na duplu reč prilikom stacking-a?

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
Q

Šta je ponašanje poznato kao Late-arriving?

A

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
Q

Šta se radi na kraju rukovaoca? (3 načina)

A

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
Q

Da li EXC_RETURN sadrži adresu povratka iz prekidne rutine?

A

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
Q

Šta je tail-chaining?

A

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
Q

Kako se vrši dozvola pojedinačnih prekida u NVIC?

A

Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ISERx registru (Interrupt Set-Enable Registers)

87
Q

Kako se vrši zabrana pojedinačnih prekida u NVIC?

A

Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ICERx registru (Interrupt Clear-Enable Registers)

88
Q

Kako se vrši postavljanje pending stanja pojedinačnih prekida u NVIC?

A

Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ISPRx registru (Interrupt Set-Pending Registers)

89
Q

Kako se vrši brisanje pending stanja pojedinačnih prekida u NVIC?

A

Taj bit koji predstavlja prekid se postavi na 1 u NVIC_ICPRx registru (Interrupt Clear-Pending Registers)

90
Q

Kako se vrši očitavanje active statusa pojedinačnih prekida?

A

NVIC_IABRx (Interrupt Active Bit Registers)

91
Q

Kako se vrši podešavanje prioriteta prekida (IRQ0-67)?

A

NVIC_IPRx (Interrupt Priority Registers)

92
Q

Kako se vrši softversko generisanje zahteva za prekid?

A

NVIC_STIR (Software Trigger Interrupt Register)

93
Q

U kom režimu može da se izvrši softversko generisanje zahteva za prekid (NVIC_STIR)?

A

Može i u neprivilegovanom i u privilegovanom režimu.

94
Q

U koliko primeraka je prisutna većina registara iz NVIC-a?

A

U 3 primeraka (jedan može da pokrije 32 prekida)

95
Q

Koji sve registri postoje u NVIC-u?

A

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
Q

Koji registri u SCB služe za upravljanje NVIC-om?

A

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
Q

Koji registar služi za upravljanje NMI, PendSV i SysTick prekidima i za status prekida?

A

SCB_ICSR = Interrupt Control and State Register

98
Q

Koji registar služi za relokaciju (I)VT?

A

SCB_VTOR = Vector Table Offset Register

99
Q

Koji registar služi za podešavanje veličine grupe prioriteta?

A

SCB_AIRCR = Application Interrupt and Reset Control Register

100
Q

Koji registar služi za podešavanje prijavljivanja grešaka i dozvoljavanje softverskog generisanja prekida iz neprivilegovanog režima?

A

SCB_CCR = Configuration and Control Register

101
Q

Koji registar služi za podešavanje prioriteta za sistemske rukovaoce?

A

SCB_SHPR1/2/3 = System Handler Priority Register

102
Q

Koji registar služi za upravljanje sistemskim rukovaocima?

A

SCB_SHCSR = System Handler Control and State Register

103
Q

Koji registri služe za dohvatanje informacija o grešci?

A

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