Vous êtes sur la page 1sur 2

Cortex-M3: Déroulement des Cortex-M3: Déroulement des

Interruptions Interruptions
Pour répondre à une interruption, le Cortex M3:
• Sauvgarde automatique de l’état du processeur dans la
pile.
• Charge l’adresse de la routine d’interruption à partir de la
table des vecteurs.
• Exécute la routine d’interruption.
• Restitue automatique de l’état précédent de la machine
pour revenir au programme de départ.

31 32

Cortex-M3: Déroulement des Cortex-M3: Déroulement des


Interruptions Interruptions
Temps de réponse d’une interruption Cortex-M3 Tail Chaining: Recherche des Interruptions en attente
IRQ1 •ARM7
IRQ Highest
IRQ2
42 CYCLES
PUSH ISR POP ARM7 PUSH 1 ISR 1 POP 1 PUSH 2 ISR 2 POP 2
Interrupt handling in
assembler code 26 16 26 16
12 12
cycles cycles Tail-chaining
Save Registers Cortex-M3 PUSH ISR 1 ISR 2 POP
(Hardware) R0-R3 ; R12 Restore Registers Interrupt handling in HW
12 6 12
R15 (Program Counter) (Hardware) 6 CYCLES
R14 (Link register adresse de retour) Cortex-M3
PSR (Registre d’état) •ARM7
• 26 cycles pour déclencher l’exécution de ISR1 •12 cycles pour déclencher l’exécution de ISR1
Pour L’architecture du ARM7 l’opérations PUSH nécessite • 42 cycles pour passer de ISR1à ISR2 • 6 cycles pour passer de ISR1à ISR2
• 16 cycles pour retourner au prog principal • 12 cycles pour retourner au prog principal
26 cycles et le POP nécessite 16 cycles d’horloges.
33 34
Cortex-M3: Déroulement des
Cortex-M3: Interrupt Handling
Interruptions
Preemption: priorité Late Arrival: Arrivé en retard de l’interruption de priorité
Inférieur à12 cycle

IRQ1
Highest IRQ1
IRQ2 Highest
IRQ2
42 CYCLES
ARM7 PUSH 1 PUSH 2 ISR 1 POP 2 ISR 2 POP 1
ARM7 PUSH 1 ISR 1 POP1 PUSH 2 ISR 2 POP2
26 26 16 16
16 26 16
26
Cortex-M3 PUSH ISR 1 ISR 2 POP
Cortex-M3 PUSH ISR 1 POP ISR 2 POP 6 12
Tail-
1- 6 12 Chaining
ARM7 12 7-18 CYCLES ARM7

• Il sauvgarde le contexte du Prog (PUSH1) Cortex-M3 • Sauvgarde le contexte du Prog(PUSH1) Cortex-M3


• 26 cycles pour déclencher l’exécution de ISR1 •Pendant la récupération (POP) si une interruption •Sauvgarde de ISR 2 (PUSH2)
• Récupérer le contexte (prog princi) (POP1) se présente •52 cycles pour déclencher l’éxecution de ISR 1 • Sauvgarde le contexte du Prog (PUSH)
• Pendant la récupération si une interruption se présente • il abandonne le pop • Récupérer le contenue des registres de ISR 2 • 12cycles pour déclencher l’éxecution de ISR 1
le pop termine sa tâche. • Il Iance le tail chaining puis il déclenche •16 cycles pour passer de ISR 1 à ISR 2 • 6cycles pour passer de ISR1 à ISR 2
•42 cycles pour passer de ISR1 à ISR2 l’exécution de ISR2
•7 à 18 cycles pour passer de ISR1 à ISR2 35 36

Cortex-M3: Interrupt Handling


Sup à 12 cycle
Inf à 12

Highest
cycle
Exemple
NMI

IRQ1

IRQ2

IRQ3

PUSH1 PUSH2 NMI ISR 1 POP2 ISR 2 ISR 3 POP1

Debut PUSH de
ISR 2 Cortex-M3
de ISR 2
6 cycles pour passer de NMI à ISR1
12 cycles pour passer de ISR1 à ISR2
6 cycles pour passer de ISR2 à ISR3

37

Vous aimerez peut-être aussi