Perchè usare i CORTEX M
invece delle MCU a 8/16 bit



Home Page
STM32 Page


Click here for English Version



I Systems-on-chip basati su ARM CORTEX M hanno generato molta curiosità e attenzione da parte di tutti gli utenti di MCU per applicazioni embedded.
Attualmente tutti i principali produttori di silicio offrono la famiglia CORTEX M che si caratterizza per:

prezzi aggressivi, ormai comparabili agli 8bit di fascia alta
ricca dotazione di periferiche e di memoria
velocità di esecuzione del programma
In questo articolo cercherò di spiegare perchè la famiglia CORTEX M è la soluzione ideale per i progetti di oggi e di domani.

Per chi non conosce la famiglia CORTEX diamo alcuni chiarimenti preliminari.
In generale le caratteristiche principali sono del core ARM sono:
Core a 32bit
Architettura di tipo RISC
Ottimi rapporti DMips/Watt
ARM da alcuni anni ha lanciato una nuova generazione dei suoi core identificandoli con la sigla: CORTEX.
La famiglia CORTEX si suddivide in tre macrofamiglie chiamate:
CORTEX Ax
CORTEX Rx
CORTEX Mx
La x indica che dopo la lettera (A,R,M) vi è anche un numero che identifica nel dettaglio il core.
La famiglia che tratteremo in queste pagine è la famiglia CORTEX M.
Il CORTEX M si suddivide in quattro sottogruppi che sono: M0, M1, M3 e M4 più avanti descritti.
La potenza di calcolo dei CORTEX M va da 0,8 DMips/MHz a 1,25DMips/MHz.
ARM considera superati i vecchi ARM7, ARM9 e ARM11.
Detto ciò, analizziamo più in dettaglio la famiglia CORTEX M.

Costi dei CORTEX M
Ormai i costi dei CORTEX M sono assolutamente comparabili ai prezzi degli 8/16 bit.
In generale quando i pin delle MCU a 8/16bit si avvicinano ai 28/32 conviene sicuramente guardare anche la famiglia CORTEX M perchè attualmente si trovano sul mercato CORTEX M3 a meno di 1$ per quantità di 10Kpz.


Prestazioni
Chiaramente le prestazioni del CORTEX M sono minimo il doppio rispetto agli 8 e ai 16 bit ma anche l'occupazione di memoria si riduce da un minimo del 10% sino a un massimo del 40%.
Sviluppando con i CORTEX M, come d'incanto, ci si dimenticano le problematiche di tempistica degli 8/16 bit che costringono a valutare bene il tempo necessario all'esecuzione del main() e delle routine di interrupt per evitare di perdere degli eventi asincroni.
Usando i CORTEX M questi problemi non esistono o sono estremamente rari.

La potenza di calcolo dei CORTEX M3 è di 1,25 DMips/MHz.




Code size comparison using relative EEMBC CoreMark test size



Comparazioni tra 8/16 Bit e STM32F0xx (CORTEX M0)



Facilità d'uso

I CORTEX M, essendo molto simili alle MCU tradizionali e grazie alle Librerie, permettono l'apprendimento della famiglia in tempi estremamente contenuti.
Personalmente, i miei clienti, dopo una giornata di corso sono già in grado di sviluppare le loro applicazioni in modo autonomo.
Nel sito: http://www.emcu.it/STM32.html potete trovare numerose guide inerenti lo sviluppo, le librerie e l'utilizzo dei tools SW e HW inerenti la famiglia CORTEX di STM.

Tools di sviluppo gratuiti
Oggi è possibile sviluppare SW su CORTEX M usando con soddisfazione i tools gratuiti quali:

Eclipse + OpenOCD + GCC
Questo kit gira sia su Linux (Ubuntu) che su Windows.
http://www.emcu.it/STM32.html#Some_third-party_IDE_tools_are:

Costi dei tools di sviluppo proprietari
I prezzi dei tools di sviluppo proprietari oggi partono da 1000€ che è un prezzo più che ragionevole per questo tipo di tool.
Alcuni tools sono:
ATOLLIC, KEIL, IAR, RAISONANCE, HITEX, ecc.

JTAG e SWD per il debug e la programmazione
Tutti i CORTEX M supportano l'interfaccia JTAG che permette il debug e la programmazione ma tutti hanno anche l'interfaccia SWD (Serial Wire Debug)
che permette il debug e la programmazione con soli due fili.
Ulteriori informazioni sui canali di debug e programmazione supportate dai CORTEX M, le trovate qui.
Un esempio di tool a basso costo è il: STM32 Discovery.


Free RTOS
Per esperienza personale vedo che oggi il 80% degli sviluppi SW viene fatto in modo tradizionale ma quando i programmi diventano complessi è più conveniente usare un RTOS
(real-time operating system).
Oggi è disponibile, gratuitamente, il FreeRTOS.
http://www.emcu.it/STM32.html#Some_third-party_IDE_tools_are:

RTOS propietari
Di RTOS proprietari ne esistono tantissimi, per saperne di più cliccate qui.

Compatibilità tra i diversi CORTEX M offerti dai produttori di silicio
A parte il pinout che ovviamente cambia da un produttore ad un'altro, la vera differenza tra i vari CORTEX M oggi disponibili sono le periferiche.
Chi ha i capelli bianchi si ricorderà sicuramente della famiglia 51 disponibile da diversi produttori di silicio.
Nel periodo della famiglia 51 si sviluppavano i progetti e poi si andava a cercare il produttore di silicio che aveva la famiglia 51 che meglio aderiva alle richieste del progetto.
Questo ci permetteva di rimanere indipendenti dal fornitore di silicio e il lavoro più grosso era scrivere i driver per le periferiche.
Lo stessa indipendenza dal fornitore di silicio la si ha oggi usando la famiglia CORTEX M con due facilitazione in più:
Standard CMSIS
Librerie che molti produttori già forniscono certificate CMSIS (vedere per esempio le librerie di STM)
che sempificano la migrazione dei programmi tra diversi produttori di CORTEX M.

Efficenza Energetica
Sempre di più i consumi diventano importanti anche nell'ottica di rispettare le normative che diventano sempre più stringenti.
Con i CORTEX M e le relative famiglie ultra low power si riescono ad ottenere tempi di risveglio e di computazione che alla fine danno un bilancio energetico sicuramente migliore rispetto agli 8/16 bit.




Comparazione tra i diversi Cortex-M
La famiglia CORTEX M si suddivide in quattro sottofamiglie che sono:
M0, M1 (usata al momento solo nelle FPGA), M3 e M4.
Ogni famiglia è stata pensata per centrare al meglio le applicazioni più disparate come evidenziato dalla tabella sotto riportata.


Tutti i Cortex-M sono binary compatible verso l'alto.



Per maggiori informazioni contattate i FAE di SILICA


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.

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).

Documentation for Cortex-M device users

Software development tools for Cortex-M device users

Find Cortex-M based microcontrollers







Home Page
STM32 Page