Buen momento para moverse; los 8 bits están muriendo rápidamente; cuando puede comprar una placa de $ 5 con (por ejemplo) un STM32F103 que es un microcontrolador ARM de 32 bits bastante capaz (¡incluso con USB!), no hay duda de que los tiempos han cambiado.
Ya has tenido algunas respuestas excelentes, pero principalmente diría "olvida el ensamblaje" y casi "olvídate de cómo funciona la CPU en un nivel bajo": un día habrá un caso de esquina en el que debes profundizar (una optimización específica o para la depuración), pero los núcleos ARM ejecutan el código C excepcionalmente bien (por diseño) y rara vez es necesario aventurarse en las entrañas.
Esto significa que pasarás una cierta cantidad de tiempo golpeándote la cabeza contra problemas con los compiladores (y especialmente los enlazadores y los archivos MAKE) que te arrojan errores oscuros, pero todos son superables.
Las agallas de cómo funcionan los ARM (es decir, los libros de CPU ARM) son densas y no muy interesantes hasta el día en que realmente necesita optimizar (y se sorprenderá de lo poco frecuente que es cuando tiene registros de 32 bits y su PLL ' d El reloj de la CPU está en la región de 100 mhz).
El conjunto de instrucciones ARM "old skool" es mucho más fácil de leer que un desmontaje mucho más reciente que "Thumb2", que es lo que se encuentra en la mayoría de los ARM modernos de nivel de microcontrolador (Cortex), pero nuevamente las entrañas de las instrucciones en lenguaje ensamblador en su mayoría se desvanecen en el fondo; si tiene el conjunto de herramientas adecuado (especialmente un depurador de nivel de origen decente con puntos de interrupción / paso único, etc.) simplemente no le importa demasiado que sea ARM.
Una vez que esté en el mundo de los registros de 32 bits y los anchos del bus de datos de 32 bits y todo lo que siempre quiso disponible en el chip, nunca querrá volver a una CPU de 8 bits nuevamente; básicamente, a menudo no hay penalización por "tomarlo con calma" y escribir código para ser legible más que eficiente.
Sin embargo ... periféricos ... sí, y ahí está el problema.
Seguro que obtienes un montón de cosas para jugar en los MCU modernos, y muchas de ellas son cosas muy elegantes; a menudo encuentra un mundo de sofisticación mucho más allá de AVR, PIC y periféricos en chip 8051.
¿Un temporizador programable? Nah, ten ocho! DMA? ¿Qué tal 12 canales con prioridad programable y modo ráfaga y modo encadenado y recarga automática y ... y ... y ...
I2C? I2S? ¿Docenas de opciones de muxing de pin? ¿Quince formas diferentes de reprogramar el flash en chip? ¡Seguro!
A menudo se siente como si hubieras pasado de la hambruna a un festín con los periféricos y es común que haya trozos enteros de un chip que admirarás pero que apenas usarás (por lo tanto, sincronización de reloj).
La cantidad de hardware en chip (y las variaciones en eso en la línea de chips de un solo proveedor) es hoy en día bastante alucinante. Un proveedor de chips, por supuesto, tenderá a reutilizar los bloques de IP, por lo que una vez que se familiarice con una determinada marca, será más fácil, pero "la mierda se volvió loca hoy en día".
En todo caso, los periféricos y sus interacciones (y DMA e interrupciones y asignación de bus yy ...) son TAN complejos (y, en ocasiones, no exactamente como se describe en las hojas de datos) que los ingenieros con frecuencia tienen un rango favorito de MCU ARM y tienden a querer quedarse con él simplemente porque están familiarizados con los periféricos y las herramientas de desarrollo.
Buenas bibliotecas y herramientas de desarrollo (es decir, compilación rápida + ciclo de depuración con un depurador adecuado) y un gran conjunto de proyectos de código de ejemplo de trabajo son absolutamente cruciales para su elección de ARM MCU hoy en día. Parece que la mayoría de los vendedores ahora tienen tableros de evaluación extremadamente baratos (
Como estoy seguro de que has notado, una vez que superas el nivel de microcontrolador con ARM y entras en el nivel de SOC (por ejemplo, SOC de estilo Raspberry Pi / etc.), las reglas cambian por completo y se trata de qué tipo de Linux vas a utilizar. correr, porque, con muy pocas excepciones, te volverías loco intentando cualquier otra cosa.
Básicamente; independientemente de la CPU que (puede) haber sido preseleccionada para ti en este concierto, cómprate un puñado de placas de evaluación basadas en Cortex súper baratas de algunos proveedores diferentes (TI, STM, Freescale y más vienen a tu mente) y tener un truco con el código de muestra proporcionado.
Último consejo; una vez que encuentre la página o tres en la hoja de datos que describe las opciones de cambio de pines para el chip de número de pieza exacto con el que está trabajando, puede imprimirlo y pegarlo en la pared. Descubrir tarde en un proyecto que una cierta combinación de periféricos es imposible debido a la modificación del pin no es divertido, y a veces esa información está tan oculta que juraría que están tratando de ocultarla :-)