
...the world's most energy friendly microcontrollers
2011-02-04 - d0002_Rev1.00
29
www.energymicro.com
Fault
Handler
Bit name
Fault status register
during exception stacking
MSTKERR
during exception unstacking
MUNSKERR
Bus error:
-
during exception stacking
STKERR
during exception unstacking
UNSTKERR
during instruction prefetch
IBUSERR
Precise data bus error
PRECISERR
Imprecise data bus error
Bus fault
IMPRECISERR
Attempt to access a coprocessor
NOCP
Undefined instruction
UNDEFINSTR
Attempt to enter an invalid instruction set state
2
INVSTATE
Invalid EXC_RETURN value
INVPC
Illegal unaligned load or store
UNALIGNED
Divide By 0
Usage fault
DIVBYZERO
1Occurs on an access to an XN region even if the MPU is disabled, or not included in the device.
2Attempting to use an instruction set other than the Thumb instruction set.
2.4.2 Fault escalation and hard faults
All faults exceptions except for hard fault have configurable exception priority, see
Section 4.3.9 (p.Usually, the exception priority, together with the values of the exception mask registers, determines
whether the processor enters the fault handler, and whether a fault handler can preempt another fault
In some situations, a fault with configurable priority is treated as a hard fault. This is called priority
escalation, and the fault is described as escalated to hard fault. Escalation to hard fault occurs when:
A fault handler causes the same kind of fault as the one it is servicing. This escalation to hard fault
occurs because a fault handler cannot preempt itself because it must have the same priority as the
current priority level.
A fault handler causes a fault with the same or lower priority as the fault it is servicing. This is because
the handler for the new fault cannot preempt the currently executing fault handler.
An exception handler causes a fault for which the priority is the same as or lower than the currently
executing exception.
A fault occurs and the handler for that fault is not enabled.
If a bus fault occurs during a stack push when entering a bus fault handler, the bus fault does not escalate
to a hard fault. This means that if a corrupted stack causes a fault, the fault handler executes even though
the stack push for the handler failed. The fault handler operates but the stack contents are corrupted.
Note
Only Reset and NMI can preempt the fixed priority hard fault. A hard fault can preempt any
exception other than Reset, NMI, or another hard fault.
2.4.3 Fault status registers and fault address registers
The fault status registers indicate the cause of a fault. For bus faults and memory management faults,
the fault address register indicates the address accessed by the operation that caused the fault, as