# Cortex-M di ARM <div class="abstract"> Un breve articolo sui Cortex-M le loro differenze, ed una guida a come scegliere! </div> <img src="./cloud_word.PNG" class="img-responsive center-block" width="50%"> ## Le differenze tra i modelli di Cortex-M Prima di tutto un po' di storia. Il primo modello di Cortex-M rilasciato da ARM è stato il **Cortex-M3** nel 2004. A seguire arrivarono i **Cortex-M4** ed i **Cortex-M0+** nel 2010, e nel 2014 il top della gamma: il **Cortex-M7** <img src="./Cortex-Mx_slide5.PNG" class="img-responsive center-block" width="50%"> ## Collocazione dei Cortex-M nel mercato. La ARM colloca i Cortex-M in due fasce principali: "8/16 bit Traditional application space" e "16/32 Traditional application space". <br> Nella prima area, quella delle applicazioni 8/16 bit, colloca i Cortex-M0 e Cortex-M0+, che come vedremo di seguito, sono effettivamente "low cost" e "low power" destinati quindi al mercato dei grandi volumi ed in sostituzione delle MCU ad 8bit.<br> I Cortex-M3,M4 ed M7 riempiono invece la fascia delle applicazioni 16/32, ma con una cosa distinzione in più: per i Cortex-M4 ed M7 ARM introduce la "Digital Signal Control application space". Un'area in cui queste MCU, pur non essendo DSP veri, possono essere usate per compiti di **Digital Signal Processing** (DSP) con estrema versatilità. Questi due modelli di Cortex possono vantare un'ampia varietà di interfacce di vario tipo, dall'Audio alle comunicazioni: QSPI, Fast Ethernet e HS USB, o specifiche per LCD, RAM o FLASH esterne. Il Cortex-M7 in particolare, ha al suo interno tecnologie del tutto simili alla famiglia Cortex-A. <img src="./Cortex-Mx_Instruction.png" class="img-responsive center-block" width="50%"> ## Comparazione tra i vari Cortex-M. Una tra le principali differenze tra i Cortex-M riguarda il set di istruzioni.<br> Il Cortex-M0 ha un piccolo subset delle istruzioni del Cortex-M3, che a sua volta è un subset dei Cortex-M4 ed M7. <br> Un set di istruzioni ridotto si traduce per il compilatore, che sta convertendo il nostro programma in C, in unsa serie più lunga di istruzioni assembler. E quindi più tempo a svolgere e portare a termine un determinato task. @include='bio_clemente_dicaprio'
2018 Ⓒ TanzoLab