Systems-on-chip microcontrollers based on the ARM CORTEX M core have garnered a lot of attention in the embedded market-place in the last years.
There is a lot of CORTEX M with:
*** aggressive price
*** small footprints
*** versatile peripheral and memory
*** blazingly fast execution speeds
In this article I try to explain why CORTEX M family is the better solution for projects for today and for tomorrow.
For those unfamiliar with the CORTEX family I give some preliminary clarifications.
In general, the main features of ARM core are:
*** Core 32/64bit
*** RISC architecture
*** Excellent relations DMips/Watt
Some years ago, ARM has launched a new generation of its core identified by the name: CORTEX
The CORTEX family is divided into three subfamilies:
*** CORTEX Ax
*** CORTEX Rx
*** CORTEX Mx
The x after the letter (A, R, M) is a number that identifies the core performance.
The family CORTEX M is divided into five subgroups that are: M0, M1, M3, M4 and M7 described below.
The computing power of CORTEX M is in the range from 0.8 to 2.25 DMips/MHz.
ARM consider obsolete the families: ARM7, ARM9 and ARM11.
Now we analyze in detail the family CORTEX M.
It is no secret that ARM Cortex M family are pushing the price/performance ratio to heretofore unseen levels.
The main target of comparison between ARM Cortex M family is traditional 8, 16, and 32 bit microcontrollers.
Cortex M0/M0+ are the cheapest mainstream alternative, 8 bit microcontrollers.
In general, when the pin-out of the 8/16 bit MCUs are close to 14/20, it should be evaluated also at the CORTEX M family.
STM Cortex M0 price, is under 0,5$ for 10Kps.
Of course the performance of CORTEX M is minimun double compared to 8 and 16 bit MCU but also the memory occupation is normaly from 10 to 40% less than 8 and 16 bit MCU.
By using Cortex M, as if by magic, it means to solve all the problems of timing that you have usually with 8 and 16 bits.
Often designers who use 8 and 16 bit must take into account the execution times of the main() and of the interrupt routines to avoid loss of asynchronous events. Using CORTEX M these problems do not exist.
If you use the Cortex-M4 or M7, you’ll be amazed by the performance which are of absolute importance
Easy to Use
The architecture of the Cortex M family is very similar to that of normal microcontrollers and also thanks to Graphics Tools (for example CUBE-MX) and CMSIS libraries, it is very easy to develop applications quickly.
Normally, after a day of training, all my customers have been able to independently develop their own applications.
In this web site you can find a lot of tutorial concerning the way to use Library, Tools, IDE and so on.
Today you can also use free tools with satisfaction like:
Eclipse + OpenOCD + GCC
This kit is available for Linux and for Windows.
See this link.
JTAG and SWD interface
All CORTEX M support JTAG interface for software development and debugging but also support SWD (Serial Wire Debug) for software development and debugging
Serial Wire Debug technology provides a 2-pin debug port.
SWD is low pin count and high-performance alternative to JTAG.
An example of low cost tool are STM32 Discovery and STM32 Nucleo that embedded also an emulator (ST-LINK-v2).
See also the STM32-Evaluation Boards.
The yellow signals are indispensables for SWD.
TRACE-SWO is an optional for SWD.
Today 80% of applications are developed in a traditional way but it is often convenient to use the RTOS (real-time operating system) that simplify the writing of the program.
Today it is available also FreeRTOS for Cortex M family.
There are lots of proprietary RTOS, to find out more click here.
Compatibility from different Cortex M vendors
Apart from the pinout difference of the CORTEX M from one vendor to another, STM, NXP, RENESAS, ATMEL, ANALOG, etc., the main differences are in the peripherals.
Who has white hairs, surely remembers the Core-51 available from different vendors.
In the Core-51 era, all of us thought to develop hardware and then we looked for a Core-51 that had all the necessary peripherals.
This because all SW engineers knew the Core-51 and the main work was to develop the driver for the different peripherals.
This allowed us to remain unlinked to a particular vendors.
The same is today by using Cortex M with a other plus that is: CMSIS.
CMSIS (Cortex Microcontroller Software Interface Standard) specification that facilitates the translation of the SW by a vendor to another.
Today a lot of vendors provide library CMSIS compliant.
Today there is a particularly strong the energy problem for which all equipments should consume as little as possible.
Cortex M series run at lower/high MHz or with shorter activity periods:
Architected support for sleep modes.
Work smarter, sleep longer than 8/16-bit see below.
Comparing Cortex-M processors
The Cortex-M family is an ideal solution for ranges of compatible, easy to use embedded devices such as microcontrollers (MCU) where different cost, power and performance considerations must be made.
Each processor delivers an optimal trade-off for a broad embedded application range.
All Cortex-M are binary compatible, see below.