¿Qué familia de MCU ARM es mejor para principiantes? [cerrado]

¿Qué familia de MCU ARM es mejor para principiantes?

Me refiero a qué familia:

  • Es sencillo y más fácil de aprender.
  • Tiene más/mejores recursos de aprendizaje y desarrollo disponibles
  • Tiene una comunidad más grande y mejor.
  • [Tiene software/hardware de aprendizaje y desarrollo FLOSS disponible]

Actualizar:

  1. ¿Comenzar con Cortex-M4 es una buena idea? (debido a ARMv7, Harvard mem arch, etc.)
  2. entre MCU basados ​​en NXP, ST y TI Cortex-M4, ¿cuál es mejor para empezar? (según los requisitos anteriores)
Esta pregunta podría considerarse una base de opinión ya que "mejor" es bastante subjetivo, aunque creo que habrá un consenso general.
Por favor, no cierre esta pregunta, porque es muy interesante. Hay una cantidad limitada de opciones, no está basada en opiniones, la información es relevante para muchos usuarios, la información es duradera porque las cadenas de herramientas existen desde hace una década y hay muy poca obsolescencia. Con todo, la información es útil y está ahí para quedarse.
no agrego como respuesta porque no tengo otra experiencia, pero personalmente después de arduino salté a un stm32f3discovery y, de hecho, la parte más difícil fue configurar la herramienta de compilación. Gracias a CMSIS y otros RTOS como chibios, puede tener una interfaz que lo ayude mucho a ocultar el registro y cosas por el estilo, o proporcionar un ejemplo de cómo se implementaron las cosas.
Estoy decepcionado de que esta pregunta se haya cerrado. Estoy dispuesto a pensar que lo hiciste principalmente para molestarme y luego encontraste las razones. Este es exactamente el tipo de pregunta que necesitamos. Se beneficia de la vasta base de conocimientos combinados de los usuarios de SE.EE. Podría formularse mejor para leer, por ejemplo, "Qué cadenas de herramientas de desarrollo ARM existen y cuáles son sus ventajas" o algo así.
Mi voto sería "no importa". Prefiero usar un GCC simple (desde launchpad.net/gcc-arm-embedded ) con mis propios archivos MAKE, linkerscript y código de inicio. Me gusta el LPC1114 y el LPC810 porque están en DIP y la carga (de arranque) es fácil con lpc21isp, pero podría cambiar sin mucho esfuerzo a cualquier otro chip que admita la carga de arranque sin intervención.
@PkP No voté para cerrar porque se cerró antes de que yo llegara aquí, pero decidí que habría votado para cerrar antes de que la pregunta terminara de cargarse, estrictamente según el título. 95% esa intuición es correcta.
@ Matt, comprensible. Tuve la misma intuición, de ahí que escribí el comentario para pedir que no lo cerraran. Me pregunto por qué es una política cerrar las preguntas de recomendación de productos: debido al sistema de votación, ¿qué sitio podría ser más adecuado para este tipo de preguntas que Stack Exchange? ¡Tal vez use el dinero de mis vacaciones para comprar suficiente alcohol para atreverme a escribir una meta al respecto y enfrentar la ira de la comunidad!
@PkP Si bien aquí no se permiten preguntas como esta, hay otras cosas que no nos gustan especialmente. Uno de esos ser es tu tono. En EE.SE, no permitimos preguntas de recomendación de productos porque EE.SE es para diseño electrónico, crear un circuito, probarlo, construirlo, no comprarlo. Hay muchos otros foros que lo ayudarán con la compra de un producto, pero EE.SE es uno de los pocos lugares donde puede obtener una respuesta definitiva sobre un problema específico en una aplicación específica.
@Funkyguy, puedes sentirte así. Y entiendo la política con respecto a las recomendaciones de productos, lamento que esté ahí, porque la selección de componentes es una parte muy importante del diseño de productos electrónicos y requiere mucho tiempo, pensamiento y energía, y esta sería una gran comunidad para responder a ese tipo de preguntas. Y gracias por su respuesta a esta pregunta, es exactamente del tipo que es muy útil y espero que veamos más respuestas como esa aquí.
@PkP Oh, gracias por entender. Sinceramente, odio ser el malo. Estoy de acuerdo en que es una gran parte de un proyecto, aunque parece que solo confiamos en que el autor de la pregunta haga una buena cantidad de investigación primero. Esperamos ver que te quedes con nuestra comunidad.

Respuestas (3)

1.¿Empezar con Cortex-M4 es una buena idea? (debido a ARMv7, Harvard mem arch, etc.)

¿Si por qué no? Si está programando en lenguaje C, creo que no sentirá la diferencia (solo lo hará el compilador). Por otro lado, si está programando en ensamblador, entonces hay diferencias, por supuesto.

2. Entre los MCU basados ​​en NXP, ST y TI Cortex-M4, ¿cuál es mejor para empezar? (según los requisitos anteriores)

De esos MCU, solo conozco el MCU de TI Tiva. Puede comprar el LaunchPad Tiva C Series TM4C123G de bajo costo. Este Launchpad tiene dos MCU. Uno de ellos funciona como programador y puede usarlo, si lo desea, para programar/depurar una MCU Tiva C externa.

Puede usar un IDE de programación similar a Arduino llamado Energia para programar aplicaciones simples muy rápidamente. Para aplicaciones complejas, debe usar Code Composer Studio (CCS), que es gratuito bajo ciertas condiciones (una de ellas es usarlo con programadores de baja velocidad como el del Launchpad). CCS actual (versión 6) permite instalar fácilmente bibliotecas y ejemplos. Bibliotecas gratuitas que permiten "fácilmente" (esto es relativo) trabajar con periféricos dentro de la MCU, interactuar con periféricos externos o tener un RTOS (sistema operativo en tiempo real).

Mucho de esto depende de lo que entiendas por "Familia".

Si está preguntando qué familia de productos del fabricante es un buen lugar para comenzar, recomendaría la serie SAM de Atmel básicamente debido a la cadena de herramientas, al menos si está en Windows.

Desafortunadamente, ARM está bastante fragmentado en términos de soporte del fabricante y cadenas de herramientas para Windows.

Atmel tiene Atmel Studio , que instalas y básicamente funciona. Pasé un tiempo hurgando con las piezas de STM32 antes de probar algunos dispositivos atmel, y obtener una cadena de herramientas funcional fue una gran molestia. Eventualmente conseguí que CooCox funcionara, pero hay muy poco apoyo de primera parte. Atmel Studio simplemente funciona justo después de instalarlo. Esto es bueno porque puede involucrar hacer que GCC funcione en Windows.


Si no está familiarizado con el desarrollo de MCU, no puedo recomendar ARM en absoluto, de verdad. Tienes que leer mucho entre líneas en cualquier plataforma para que los periféricos funcionen.

Interesantes comentarios sobre CooCox. Si bien estoy de acuerdo con la falta de soporte de primera parte, me pareció muy sencillo comenzar a trabajar (en Windows) con STM32, simplemente funcionó, y el soporte de depuración (para STM32, al menos) es bastante impresionante para una solución gratuita en mi opinión
@markt: lo estaba mirando hace aproximadamente un año, es posible que haya mejorado mucho.

El ARM Cortex M0 es la arquitectura más baja y simple de la familia ARM.

Personalmente, aprendí a usar la placa de desarrollo FRDM-KL25z de Freescale, aunque hay una amplia gama de opciones.

Existe un entorno similar a Arduino llamado mBed, que es muy similar a Arduino aunque es para controladores ARM. Puede usar mBed con muchos controladores diferentes, como Teensy e incluso la placa de desarrollo FRDM que mencioné.

Si no está buscando un entorno similar a Arduino, puede usar la placa de desarrollo FRDM que mencioné de Freescale, que tiene un entorno de desarrollo gratuito que incluye un generador de código llamado Processor Expert. Processor Expert le permite especificar componentes y protocolos de comunicación y luego generará el código sin formato para usted. El código sigue siendo un código completo y será muy similar al código que escribiría si no estuviera usando Processor Expert.

Otra línea que es muy popular, especialmente entre los usuarios aquí en EE.SE, es la línea Discovery de placas de desarrollo de ST Microelectronics.

En resumen, para un principiante, recomendaría mucho la serie Cortex-M0. El Cortex-M0+ tiene el mismo conjunto de instrucciones aunque está más optimizado.

M0+ tiene el mismo conjunto de instrucciones que el M0. Está optimizado para ser más pequeño y tiene una tubería de 2 etapas en lugar de las 3 etapas de un M0, por lo que su penalización de rama es 2 en lugar de 3 relojes (por lo que será un poco más rápido en el mismo reloj).
@WoutervanOoijen Gracias por la aclaración. No estaba seguro y por alguna razón no pensé en buscarlo. he actualizado mi publicación
La diferencia entre los diversos núcleos de cortex-M es básicamente irrelevante para la complejidad del uso: la mayor parte del trabajo se dedica a lidiar con la cadena de herramientas y los periféricos.