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