Resources
The following list shows the debug hardware interfaces that can be
available for each of the Cortex M processors, and an explanation of
each follows:
Cortex M0: JTAG / SWD
Cortex M1: JTAG (JTAG-DP) / SWD (SW-DP)
Cortex M3: JTAG / SWD / SWO / ETM TraceData
Cortex M4: JTAG / SWD / SWO / ETM M4 (v3.5 std)
JTAG: This is more of a legacy interface for software development and debugging and is also used for manufacturing test. In most instances, it is better to turn this off and choose serial wire debug (SWD) instead for debugging software. In ARM-based debuggers, there is typically a menu where you choose between this and SWD, exclusive to each other.
SWD: serial wire debug. An enhancement to JTAG, where commands are transferred at a high rate of speed between the debugger and the interface to the core. Data from watchpoint and breakpoint registers is transferred.
SWO: serial wire output: This is a special pin that allows additional data transfer off the microcontroller while it is running. Typically, data is sent over this port without having to stop or burden the processor core. Facilities for a printf() type of output and being able to look at memory regions while running are used.
ETM: Up to four additional "tracedata" pins are used to reflect every instruction that is executing to the debugger. This trace data can be used to capture the events leading up to a defined event, or also used to provide code coverage statistics (important for vital software development) or execution information. For Cortex M4, this interface is expanded to include FIFO queues for information, counters, differing trigger definitions, and other upgraded features over Cortex M3.
Cortex M1: JTAG (JTAG-DP) / SWD (SW-DP)
Cortex M3: JTAG / SWD / SWO / ETM TraceData
Cortex M4: JTAG / SWD / SWO / ETM M4 (v3.5 std)
JTAG: This is more of a legacy interface for software development and debugging and is also used for manufacturing test. In most instances, it is better to turn this off and choose serial wire debug (SWD) instead for debugging software. In ARM-based debuggers, there is typically a menu where you choose between this and SWD, exclusive to each other.
SWD: serial wire debug. An enhancement to JTAG, where commands are transferred at a high rate of speed between the debugger and the interface to the core. Data from watchpoint and breakpoint registers is transferred.
SWO: serial wire output: This is a special pin that allows additional data transfer off the microcontroller while it is running. Typically, data is sent over this port without having to stop or burden the processor core. Facilities for a printf() type of output and being able to look at memory regions while running are used.
ETM: Up to four additional "tracedata" pins are used to reflect every instruction that is executing to the debugger. This trace data can be used to capture the events leading up to a defined event, or also used to provide code coverage statistics (important for vital software development) or execution information. For Cortex M4, this interface is expanded to include FIFO queues for information, counters, differing trigger definitions, and other upgraded features over Cortex M3.
CMSIS - Cortex Microcontroller Software
Interface Standard
The ARM® Cortex™ Microcontroller Software
Interface Standard (CMSIS) is a vendor-independent hardware abstraction
layer for the Cortex-M
processor series. The
CMSIS enables consistent and simple software interfaces to the
processor for interface peripherals, real-time
operating systems, and
middleware, simplifying software re-use, reducing the learning curve
for new microcontroller developers and reducing the time to market for
new devices.
The standard is fully scalable to ensure that it is suitable for all Cortex-M processor series microcontrollers from the smallest 8 KB device up to devices with sophisticated communication peripherals such as Ethernet or USB-OTG.
(The CMSIS memory requirement for the Core Peripheral Access Layer is less the 1 KB code, less than 10 Bytes RAM).
The standard is fully scalable to ensure that it is suitable for all Cortex-M processor series microcontrollers from the smallest 8 KB device up to devices with sophisticated communication peripherals such as Ethernet or USB-OTG.
(The CMSIS memory requirement for the Core Peripheral Access Layer is less the 1 KB code, less than 10 Bytes RAM).
Documentation for Cortex-M device users
Software development tools for Cortex-M device users
Find Cortex-M based microcontrollers
Cortex-M Series Processor Documentation