Obsługa wyjątków i przerwań

Transkrypt

Obsługa wyjątków i przerwań
Programowanie mikroprocesorów
jednoukładowych
Obsługa wyjątków i przerwań
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
1 / 13
Plan I
Wyjątki i przerwania
Wyjątki
Tablica wektorowa
Tryby adresowania
Przykład adresowania
Priotytety wyjątków
Powrót z obsługi wyjątków
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
2 / 13
Wyjątki I
Wyjątek
Fast Interrupt Request
Interrupt Request
SWI and Reset
Prefetch Abort and Data Abort
Undefined Instruction
Mariusz Naumowicz
Tryb
FIQ
IRQ
SVC
abort
undefined
Główne zadanie
obsługa fast interrupt request
obsługa interrupt request
tryb chronione w systemach operacyjnych
obsługa wirtualnej pamięci i ochrony pamięci
programowa emulacja sprzętowych koprocesorów
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
3 / 13
Wyjątki I
Wyjątek
Reset
Undefined Instruction
Software Interrupt (SWI)
Prefetch Abort
Data Abort
Not assigned
IRQ
FIQ
Mariusz Naumowicz
Tryb
SVC
UND
SVC
ABT
ABT
IRQ
FIQ
Przesunięcie w tablicy wektorowej
+0x00
+0x04
+0x08
+0x0c
+0x10
+0x14
+0x18
+0x1c
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
4 / 13
Tryby adresowania I
I
BR
I
LDR pc, [pc, #offset]
I
LDR pc, [pc, #-0xff0]
I
MOV pc, #immediate
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
5 / 13
Przykład adresowania I
Listing 1: Listing
1
2
3
4
5
6
7
8
0 x00000000 :
0 x00000004 :
0 x00000008 :
0 x0000 00 0c :
0 x00000010 :
0 x00000014 :
0 x00000018 :
0 x0000 00 1c :
Mariusz Naumowicz
0 xe59ffa38
0 xea000502
0 xe59ffa38
0 xe59ffa38
0 xe59ffa38
0 xe59ffa38
0 xe59ffa38
0 xe59ffa38
RESET : > l d r
UNDEF :
b
SWI :
ldr
PABT :
ldr
DABT :
ldr
−
:
ldr
IRQ :
ldr
FIQ :
ldr
pc , [ pc ,
undInstr
pc , [ pc ,
pc , [ pc ,
pc , [ pc ,
pc , [ pc ,
pc , [ pc ,
pc , [ pc ,
Programowanie mikroprocesorów jednoukładowych
#r e s e t ]
#s w i ]
#p r e f e t c h ]
#d a t a ]
#n o t a s s i g n e d ]
#i r q ]
#f i q ]
23 listopada 2016
6 / 13
Priorytety wyjątków I
Wyjątek
Reset
Data Abort
Fast Interrupt Request
Interrupt Request
Prefetch Abort
Software Interrupt (SWI)
Undefined Instruction
Mariusz Naumowicz
Priorytety
1
2
3
4
5
6
6
Programowanie mikroprocesorów jednoukładowych
Bit I
1
1
1
1
1
1
1
Bit F
1
1
-
23 listopada 2016
7 / 13
Powrót z obsługi wyjątków I
Wyjątek
Reset
Data Abort
FIQ
IRQ
Prefetch Abort
SWI
Undefined Instruction
Mariusz Naumowicz
Adres
lr-8
lr-4
lr-4
lr-4
lr
powrót do kolejnej instrukcji
Użycie
lr nie jest zdefiniowane podczas resetu
powrót do instrukcji która spodowowała wywo
adres powrotny z obłsugi FIQ
adres powrotny z obłsugi IRQ
powrót do instrukcji która wywołała Prefetch
powrót do kolejnej instrukcji
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
8 / 13
Przykład adresowania I
Listing 2: Listing
1 handler
2 <h a n d l e r code>
3 ...
4 SUBS pc , r14 , #4 ; pc=r14 −4
Listing 3: Listing
1 handler
2 SUB r14 , r14 , #4 ; r14 −=4
3 ...
4 <h a n d l e r code>
5 ...
6 MOVS pc , r 1 4 ; r e t u r n
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
9 / 13
Przykład adresowania II
Listing 4: Listing
1
2
3
4
5
6
7
handler
SUB r14 , r14 , #4 ; r14 −=4
STMFD r 1 3 ! , { r0−r3 , r 1 4 } ; s t o r e c o n t e x t
...
<h a n d l e r code>
...
LDMFD r 1 3 ! , { r0−r3 , pc }^ ; r e t u r n
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
10 / 13
Przerwanie IRQ
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
11 / 13
Przerwanie FIQ
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
12 / 13
Włączanie i wyłączanie przerwań
cpsr value
IRQ
FIQ
Pre
nzcvqjIFt_SVC
nzcvqjIFt_SVC
1 enable_irq
1 enable_fiq
2 MRS r1 , c p s r
2 MRS r1 , c p s r
Code
3 BIC r1 , r1 , #0x803 BIC r1 , r1 , #0x40
4 MSR c p s r _ c , r 1
4 MSR c p s r _ c , r 1
Post
nzcvqjiFt_SVC
nzcvqjIft_SVC
cpsr value
IRQ
FIQ
Pre
nzcvqjift_SVC
nzcvqjift_SVC
1 disable_irq
1 disable_fiq
2 MRS r1 , c p s r
2 MRS r1 , c p s r
Code
3 ORR r1 , r1 , #0x803 ORR r1 , r1 , #0x40
4 MSR c p s r _ c , r 1
4 MSR c p s r _ c , r 1
Post
nzcvqjIft_SVC
nzcvqjiFt_SVC
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
13 / 13
References
Mariusz Naumowicz
Programowanie mikroprocesorów jednoukładowych
23 listopada 2016
14 / 13

Podobne dokumenty