UM10413
All information provided in this document is subject to legal disclaimers.
© NXP B.V. 2011. All rights reserved.
User manual
Rev. 1 — 16 December 2011
29 of 268
NXP Semiconductors
UM10413
MPT612 User manual
9.6 Spurious
interrupts
Spurious interrupts are possible in the ARM7TDMI based ICs such as the MPT612 due to
asynchronous interrupt handling. The asynchronous character of the interrupt processing
has its roots in the interaction of the core and the VIC. If the VIC state is changed between
the moments when the core detects an interrupt, and the core actually processes an
interrupt, problems can be generated.
Real-life applications can experience the following scenarios:
1. VIC decides there is an IRQ interrupt and sends the IRQ signal to the core
2. Core latches the IRQ state
3. Processing continues for a few cycles due to pipelining
4. Core loads IRQ address from VIC
Furthermore, it is possible that the VIC state has changed during step 3. For example, VIC
was modified so that the interrupt that triggered the sequence starting with step 1) is no
longer pending, interrupt got disabled in the executed code. In this case, the VIC is not
able to identify clearly the interrupt that generated the interrupt request, and as a result
the VIC returns the default interrupt VicDefVectAddr (0xFFFF F034).
This potentially disastrous chain of events can be prevented in two ways:
Fig 7.
Block diagram of the Vectored Interrupt Controller (VIC)
aaa-000573
FIQSTATUS
[31:0]
VECTIRQ0
HARDWARE
PRIORITY
LOGIC
IRQSTATUS
[31:0]
nVICFIQ
NonVectIRQ
non-vectored IRQ interrupt logic
priority0
nVICIRQ
VECTADDR0[31:0]
VECTIRQ1
VECTIRQ15
VECTADDR1[31:0]
VECTADDR15[31:0]
IRQ
address
select for
highest
priority
interrupt
VECTADDR
[31:0]
VICVECT
ADDROUT
[31:0]
DEFAULT
VECTADDR
[31:0]
priority15
priority2
priority1
VECTADDR
[31:0]
SOURCE
VECTCNTL[5:0]
ENABLE
vector interrupt0
vector interrupt1
vector interrupt 15
RAWINTERRUPT
[31:0]
INTSELECT
[31:0]
SOFTINT
[31:0]
INTENABLE
[31:0]
SOFTINTCLEAR
[31:0]
INTENABLECLEAR
[31:0]
VICINT
SOURCE
[31:0]
IRQSTATUS[31:0]
FIQSTATUS[31:0]
nVICFIQIN
non-vectored FIQ interrupt logic
interrupt priority logic
interrupt request, masking and selection
nVICIRQIN
VICVECTADDRIN[31:0]
IRQ