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.