Buen momento para estar en movimiento; los 8 bits están muriendo rápidamente; cuando puede comprar una tarjeta 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 ha recibido algunas respuestas excelentes, pero principalmente diría "olvídese del ensamblaje" y casi "olvide preocuparse por cómo funciona la CPU en un nivel bajo". Un día habrá un caso de esquina en el que necesita profundice en él (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 dentro de las entrañas.
Esto significa que pasará una cierta cantidad de tiempo golpeando su cabeza contra problemas con los compiladores (y especialmente con los enlazadores y los makefiles) que le arrojan errores oscuros, pero todos son superables.
Las agallas de cómo funcionan las ARM (es decir, los libros de CPU de ARM) son densas y no muy interesantes hasta el día en que realmente necesita optimizarlas (y se sorprenderá de la poca frecuencia con la que tenga registros de 32 bits). su reloj de CPU PLL'd está en la región de 100 mhz).
El conjunto de instrucciones ARM "skool antiguo" es mucho más fácil de leer y desensamblar que el "Thumb2" mucho más nuevo, que es lo que se encuentra en la mayoría de las ARM a nivel de microcontrolador (Cortex), pero de nuevo las entrañas del ensamblaje -las instrucciones de lenguaje en su mayoría se desvanecen en el fondo; si tiene el conjunto de herramientas adecuado (especialmente un depurador de nivel de fuente decente con puntos de interrupción / paso único, etc.) simplemente no le importa que sea ARM.
Una vez que esté en el mundo de los registros de 32 bits y los anchos de bus de datos de 32 bits y todo lo que siempre quiso tener disponible en el chip, nunca más querrá volver a una CPU de 8 bits; Básicamente, a menudo no hay penalización por "tomárselo con calma" y escribir un código para que sea 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 las MCU modernas, y muchas de ellas son cosas bastante extravagantes; a menudo encuentra un mundo de sofisticación mucho más allá de los periféricos en chip AVR, PIC y 8051.
¿Un temporizador programable? ¡No, ten ocho! DMA? ¿Qué tal 12 canales con prioridad programable y modo de ráfaga y modo encadenado y auto-recarga y .. y .. y ...
I2C? I2S? ¿Docenas de opciones de muxing pin? ¿Quince formas diferentes de reprogramar el flash en chip? ¡Claro!
A menudo se siente como si hubieras pasado del hambre al banquete con los periféricos y es común que hay fragmentos enteros de un chip que admirarás pero que apenas usarás (por lo tanto, la sincronización del reloj).
La cantidad de hardware en el chip (y las variaciones en eso en la línea de chips de un solo proveedor) hoy en día es bastante alucinante. Un proveedor de chips, por supuesto, tenderá a reutilizar los bloques de IP, por lo que una vez que te familiarices con una determinada marca, se vuelve más fácil, pero "la mierda ya se hizo realidad hoy en día".
En todo caso, los periféricos y sus interacciones (y DMA y las interrupciones y la asignación de bus y y y ...) son TAN complejos (y, en ocasiones, no exactamente como se describe en las hojas de datos) que los ingenieros con frecuencia tienen una gama favorita de MCU ARM y tienden a querer quedarse con ella 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 en funcionamiento son absolutamente cruciales para su elección de ARM MCU en la actualidad. Parece que la mayoría de los vendedores ahora tienen tableros de evaluación extremadamente baratos (
Como estoy seguro de que lo ha notado, una vez que haya superado el nivel del microcontrolador con ARM y al nivel SOC (por ejemplo, SOC de estilo Raspberry Pi / etc), las reglas cambian por completo y se trata de qué tipo de Linux vamos a correr porque, con unas pocas excepciones, estarías ladrando para intentar cualquier otra cosa.
Básicamente; independientemente de la CPU que (puede) haber sido preseleccionada para usted en este concierto, compre un puñado de tableros de evaluación súper baratos basados en Cortex de diferentes proveedores (TI, STM, Freescale y más vienen a la mente) y tener un hack alrededor con el código de ejemplo proporcionado.
Consejo final; Una vez que encuentre la página o la página tres en la hoja de datos que describe las opciones de combinación de pines para el chip de número de parte exacto con el que está trabajando, es posible que desee imprimirlo y pegarlo en la pared. Descubrir al final de un proyecto que una combinación determinada de periféricos es imposible debido a la manipulación de pines no es divertido, y a veces esa información está tan oculta que juraría que están tratando de ocultarla :-)