Buon momento di muoversi; gli 8 bit stanno morendo rapidamente; quando puoi acquistare una scheda da $ 5 con (ad esempio) un STM32F103 che è un microcontrollore ARM a 32 bit piuttosto capace (anche con USB!), non c'è dubbio che i tempi siano cambiati.
Hai già avuto delle risposte eccellenti, ma soprattutto direi "dimentica assemblaggio" e quasi "dimentica di preoccuparti di come funziona la cpu a basso livello" - un giorno ci sarà un caso d'angolo in cui devi scavare (un'ottimizzazione specifica o per il debug) ma i core ARM eseguono il codice C in modo eccezionalmente buono (in base alla progettazione) e raramente è necessario avventurarsi in profondità nelle viscere.
Ciò significa che trascorrerai un certo tempo a sbattere la testa contro problemi con compilatori (e in particolare linker e makefile) che ti segnalano errori oscuri ma sono tutti superabili.
Il coraggio di come funzionano gli ARM (ovvero i libri della CPU ARM) è denso e non molto interessante fino al giorno in cui devi effettivamente ottimizzare (e rimarrai stupito di quanto raramente si abbiano registri a 32 bit e il tuo PLL ' d Il clock della CPU è nella regione di 100mhz).
Il set di istruzioni ARM "old skool" è molto più facile da leggere di un disassemblaggio rispetto al nuovissimo "Thumb2" - che è quello che trovi sulla maggior parte dei moderni ARM (Cortex) a livello di microcontrollore - ma di nuovo le viscere delle istruzioni del linguaggio assembly si dissolvono principalmente sullo sfondo; se hai il set di strumenti giusto (specialmente un debugger a livello di sorgente decente con punti di interruzione / singolo passaggio ecc.) non ti interessa affatto che sia ARM.
Una volta che sei nel mondo dei registri a 32 bit e della larghezza del bus dati a 32 bit e di tutto ciò che avresti sempre desiderato disponibile su chip, non vorrai più tornare a una CPU a 8 bit; fondamentalmente spesso non c'è penalità per "prendersela comoda" e scrivere il codice per renderlo più leggibile che efficiente.
Tuttavia ... periferiche ... sì e c'è il problema.
Avrai sicuramente un sacco di cose con cui giocare sui moderni MCU e molte cose sono piuttosto fantasiose; spesso trovi un mondo di raffinatezza molto, molto al di là delle periferiche on-chip AVR, PIC e 8051.
Un timer programmabile? No, ne ho otto! DMA? Che ne dici di 12 canali con priorità programmabile e modalità burst e modalità concatenata e ricarica automatica e .. e .. e ...
I2C? I2S? Dozzine di opzioni di muxing dei pin? Quindici modi diversi di riprogrammare il flash on-chip? Sicuro!
Sembra spesso che tu sia passato dalla carestia alla festa con le periferiche ed è comune che ci siano interi pezzi di un chip che ammirerai ma che utilizzerai a malapena (quindi; orologio).
La quantità di hardware on-chip (e le variazioni su quello in una sola linea di chip di un fornitore) è oggi alquanto sbalorditiva. Ovviamente un fornitore di chip tenderà a riutilizzare i blocchi IP, quindi una volta acquisito familiarità con un determinato marchio diventa più facile, ma "la merda è diventata pazzesca al giorno d'oggi".
Semmai le periferiche e le loro interazioni (e DMA e interrupt e allocazione del bus e e ...) sono così complesse (e, a volte, non esattamente come descritto nei fogli dati) che gli ingegneri hanno spesso una gamma preferita di MCU ARM e tendono a voler attenersi semplicemente perché hanno familiarità con le periferiche e gli strumenti di sviluppo.
Buone librerie e strumenti di sviluppo (ad es. Compilazione veloce + ciclo di debug con un debugger adeguato) e una vasta serie di progetti di codice di esempio funzionanti sono assolutamente cruciali per la tua scelta MCU ARM al giorno d'oggi. Sembra che la maggior parte dei fornitori abbia schede di valutazione estremamente economiche (
Come sono certo che hai notato, una volta superato il livello del microcontrollore con ARM e nel livello SOC (ad esempio SOC in stile Raspberry Pi / etc), le regole cambiano completamente ed è tutto su quale tipo di Linux stai andando per correre, perché - con eccezionalmente poche eccezioni - saresti abbaiare pazzo per tentare qualsiasi altra cosa.
Fondamentalmente; indipendentemente dalla CPU che (potrebbe) essere stata preselezionata per te in questo concerto, comprati una manciata di schede di valutazione basate su Cortex super-economiche da alcuni fornitori diversi (TI, STM, Freescale e altro ancora in mente) e avere un trucco con il codice di esempio fornito.
Ultimo consiglio; una volta trovate la pagina o tre nel foglio dati che descrive le opzioni di pin-muxing per l' esatto numero di parte del chip con cui si sta lavorando, si consiglia di stamparlo e incollarlo sul muro. Scoprire in ritardo in un progetto che una certa combinazione di periferiche è impossibile a causa del muxing dei pin non è divertente, e a volte quelle informazioni sono così nascoste che giureresti che stanno cercando di nasconderle :-)