¿Dónde empiezo a aprender los microcontroladores ARM y qué software debo usar para programarlos en LINUX?

Paso 1: elija una placa / plataforma de desarrollo

He sido fanático de las placas de desarrollo Freescale (ahora NXP) FRDM-Kxxx durante algunos años. Tienden a ser significativamente más baratos que las alternativas, tienen soporte incorporado para depurador OpenSDA o J-Link y tienen un excelente soporte de software. Muchos de ellos también son compatibles con ARM mbed, que ofrece una API C ++ amigable con n00b.

Otras menciones honoríficas: Silicon Labs EFM32 Gecko, STMicro STM32 MCU Discovery

Paso 2 (Opcional): obtenga un depurador

La mayoría de las placas de desarrollo de MCU ofrecen algún tipo de solución de depuración incorporada o preempaquetada. Dicho esto, si tiene la intención de desarrollar hardware en una PCB personalizada, o no desea estar vinculado a la configuración de un fabricante específico, debe considerar comprar un depurador. Personalmente prefiero J-Link de Segger, pero hay muchas opciones.

Paso 3: elige una cadena de herramientas

El fabricante del microcontrolador generalmente tiene un IDE (generalmente basado en eclipse) que incluye un compilador y un SDK para la MCU particular que está utilizando. Este es el enfoque más fácil. También puede configurar su proyecto manualmente usando un compilador cruzado y su elección del sistema de compilación, pero esto es un poco demasiado si recién está comenzando.

Paso 4: tener un objetivo

La mejor parte del desarrollo integrado es que a menudo estás creando algo que hace cosas en el mundo real. Será útil tener un proyecto u objetivo en mente en el que pueda trabajar. Para inspirarte, mira aquí.

Recursos útiles

Desbordamiento de pila – cortex-m

Desarrollador ARM

¡Buena suerte!

Casi todas las distribuciones de Linux vienen con cadenas de herramientas arm-gcc. Si quieres ser purista, puedes usarlos. Sin embargo, la mayoría de los fabricantes de microcontroladores ofrecen compiladores, bibliotecas e incluso IDE con sus herramientas.

NXP ha sido más amigable con Linux en mi experiencia, pero Atmel e Infineon también son viables.

Si no tienen una cadena de herramientas para Linux, encuentre un arm-none-gcc o similar (no arm- linux -gcc, son para computadoras basadas en ARM como Raspberry Pi) que coincida con su núcleo, y use las bibliotecas proporcionadas por el fabricante del chip.

Dado que la arquitectura interna de cada chip es diferente, a menos que tenga la biblioteca del fabricante, deberá implementar un código de muy bajo nivel de acuerdo con la hoja de datos. No quieres eso.