Table of Contents
The ARMv6-M Port
This port includes support for all devices using one of the following cores:
- Cortex-M0
- Cortex-M0+
- Cortex-M1 (not tested)
Port Features
The core supports the following features:
- Two preemption modes:
- Preemption using NMI.
- Preemption using PendSV.
- Support of
WFI
instruction in the idle thread in order to reduce power consumption.
Preemption Modes
This port uses an highest priority exception for preemption handling, there are two possible choices.
Preemption Using NMI
This mode uses a software-triggered NMI for preemption, this solution has the advantage of freeing the whole IRQ priority range for applications because NMI has priority -1.
Preemption Using PendSV
By setting CORTEX_ALTERNATE_SWITCH
to TRUE
in chconf.h
PendSV is used instead of NMI. PendSV is placed to priority level zero which becomes reserved. This is a fallback in case NMI is used for other things.
WFI Instruction Support
Setting CORTEX_ENABLE_WFI_IDLE
to TRUE
in chconf.h
inserts a WFI
instruction in the system idle tool. This can be used for advanced power management.