Fault Handling
114
SLAU723A – October 2017 – Revised October 2018
Copyright © 2017–2018, Texas Instruments Incorporated
Cortex
®
-M4F Processor
In some situations, a fault with configurable priority is treated as a hard fault. This process 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 situation
occurs 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. Thus 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.
1.7.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 shown in
.
Table 1-22. Fault Status and Fault Address Registers
Handler
Status Register Name
Address Register Name
Section
Hard fault
Hard Fault Status (HFAULTSTAT)
–
Memory management
fault
Memory Management Fault Status
(MFAULTSTAT)
Memory Management Fault Address
(MMADDR)
Bus fault
Bus Fault Status (BFAULTSTAT)
Bus Fault Address (FAULTADDR)
Usage fault
Usage Fault Status (UFAULTSTAT)
–
1.7.4 Lockup
The processor enters a lockup state if a hard fault occurs when executing the NMI or hard fault handlers.
When the processor is in the lockup state, it does not execute any instructions. The processor remains in
lockup state until it is reset, an NMI occurs, or it is halted by a debugger.
NOTE:
If the lockup state occurs from the NMI handler, a subsequent NMI does not cause the
processor to leave the lockup state.
1.8
Power Management
The Cortex-M4F processor sleep modes reduce power consumption:
•
Sleep mode stops the processor clock.
•
Deep-sleep mode stops the system clock and switches off the PLL and flash memory.
The SLEEPDEEP bit of the System Control (SYSCTRL) register selects which sleep mode is used (see
). For more information about the behavior of the sleep modes, see
.
This section describes the mechanisms for entering sleep mode and the conditions for waking up from
sleep mode, both of which apply to sleep mode and deep-sleep mode.