ARM Cortex (M3-M4): fabricante y desarrollo IDE

Me gustaría hacer un poco de programación MCU este verano y ya he tenido algunas experiencias desafortunadas con la placa STM32F4 DISCOVERY, particularmente el hecho de que vino sin ningún software (gratuito) que permitiría un uso ilimitado (más de los 16 KB o 32 KB de tanto Keil como IAR).

Actualmente, también estoy planeando comprar algunos ATTiny y ATMegas para proyectos más pequeños, así como un programador ISP y un depurador JTAG. Eso me indicaría Atmel en lo que respecta a los costos y el IDE.

Leí una parte de esta otra discusión: ¿Herramientas de desarrollo ARM Cortex-M3? y he visto que probé algo que se había señalado por ahí.

También utilicé la cadena de herramientas CodeSourcery. Bajo GNU/Linux, la única biblioteca que funcionó (para mí) fue Chibios . Configuré Eclipse con el complemento gnuarm. Tal vez simplemente no lo hice de la manera correcta (o tal vez no entendí correctamente para qué sirve). También cargar el código (4KB) tomó como 5 minutos. No fue tan malo, pero la depuración estuvo muy lejos de ser estable (muchos mensajes de error que debería analizar en cuanto tenga tiempo: por ahora eso es un problema secundario).

Me gustaría probar Coocox pero no me dejaba cargar el código (supongo que necesitaba la interfaz de hardware, su interfaz cap JTAG).

Por lo tanto, la pregunta es: ¿hay algún fabricante que realmente suministre un software de uso gratuito sin limitaciones en las líneas de código o el tamaño del código? Por ahora solo encontré Atmel, que ahora incluye soporte para ARM y AVR en su Atmel Studio 6 basado en Visual Studio 2010. ST y NXP no parecen ofrecer ninguno. TI parece ofrecer su CCStudio [Code Composer Studio] pero también tiene limitaciones en el tamaño máximo de código que se puede producir.

No tendría ningún problema en hacerlo en GNU/Linux (de hecho, preferiría hacerlo), pero me gustaría que estuviera bien soportado.

Me pregunto si los otros fabricantes ofrecen algo más: la arquitectura ARM en sí misma (Cortex M3/M4 u otros) debería ser bastante estándar. Lo que diferencia a una MCU de otra son los periféricos que la rodean, si lo entendí correctamente (y espero que algún fabricante que no sea Atmel esté proporcionando algún software, que no está limitado por el tamaño del código)? Estaría particularmente interesado en los ADC de alta velocidad (y también en la frecuencia de MCU), pero he visto en algunos catálogos que no cambia mucho de un fabricante a otro.

Solo una curiosidad: si quiero enviar datos de MCU a PC usando comunicación en serie (por ejemplo, USB), la MCU tiene que ser MUY rápida si quiero transferir datos a toda velocidad (por ejemplo, 480 Mbit / s necesita lo que : 480 MHz ?) ?

Estoy abierto a sugerencias. Muchas gracias por adelantado.

La velocidad máxima del USB es de 12 Mbit/s
Quería decir USB 2.0 (aunque era lógico). No estoy buscando velocidades USB 3.0 [todavía]. ¿Qué pasa con la velocidad USB frente a la velocidad MCU?
¿Ha desarrollado alguna vez un proyecto que supere el límite de tamaño de código de 32 kB del compilador IAR? ¿O simplemente tiene la sensación de que su proyecto podría ser más grande que eso?
Solo un sentimiento. Preferiría no llegar a 31 KB y de repente agregarle un código y, en ese punto, cambiar el compilador, el IDE y todo eso.
Ya leí: mira mi primer post.
Todavía me gustaría saber si alguien realmente logró que funcionara bajo GNU/Linux usando herramientas de código abierto. Esa puede ser la solución más simple después de todo.
Las partes del brazo ST funcionan bien con GCC, y hay varios proyectos de código abierto para comunicarse con las placas de evaluación stlink (buggy V1 y mejor V2) de $ 10 (que también puede usar para programar sus propios objetivos) desde Linux o lo que sea. Diría que una descarga de 48K tarda unos 10 segundos. El problema con el uso de GCC es que tendrá que tomarse un tiempo para traducir el código que obtiene del fabricante o de otro lugar, principalmente para organizar el sistema de compilación.
@ChrisStratton: es bueno saberlo. Cuando lo probé con el código stlink, tardó MUCHO tiempo en transferir un proyecto de 4 KB a la MCU en la placa de desarrollo. ¿Podría detallar qué fuente abierta está utilizando para que pueda probarlos?

Respuestas (5)

A riesgo de sonar como un disco rayado...

¡PSoC5 es tu respuesta! (Es increíble cuántas veces PSoC es la respuesta)

PSoC5

El MCU PSoC5 tiene un núcleo ARM Cortex M3 y un montón de otras características brillantes que prácticamente ningún otro MCU tiene. A diferencia de otras MCU, configurar los periféricos es tan divertido como comer helado, ¡e incluso puede crear uno propio en Verilog! El IDE es bastante bueno y totalmente gratuito.

Creador de PSoC

El kit de desarrollo es excelente, está lleno de funciones y viene con el programador, que puede usar para sus proyectos futuros. No es demasiado caro.

¿Te importa aclarar "y un montón de otras características brillantes que prácticamente ningún otro MCU tiene"? Veo que el editor gráfico para el circuito de hardware podría ser útil (¿puedes crear nuevas partes de manera fácil y real si lo necesitas?). El kit de desarrollo es demasiado caro para lo que voy a hacer (solo estudiándolo un poco haciendo algunos proyectos pequeños). Me gustaría algo más en el rango de 50$-100$ si es posible.
@m.Alin: ¿puede proporcionar una mejor alternativa si así lo cree? Estoy de acuerdo en que su placa de desarrollo es bastante cara y sus MCU son un poco más caras que las TI, pero me gustaría escuchar algunas (mejores) alternativas (si las hay).
@ user51166: la mejor característica es poder conectar cualquier señal a cualquier pin, simplemente dibujándolo en el esquema. También puede conectar los componentes básicos, puertas, flip-flops, etc. Dependiendo del dispositivo que elija, también puede tener DAC, amplificadores operacionales, comparadores. Es muy útil poder realizar cambios significativos en el hardware simplemente cambiando el firmware. Esto me ha sacado de un apuro más de una vez.
@ user51166 - La otra gran cosa es que tienes una gran libertad sobre los periféricos que tienes. ¿Quieres 32 canales PWM? 10 puertos SPI? 5 decodificadores de cuadratura? ¿Filtros digitales? Otros MCU intentan proporcionar un puñado de periféricos que creen que podrían ser útiles para el desarrollador promedio. PSoC te da lo que quieras.
Bueno, muchos puertos SPI pueden ser útiles a veces (para evitar un multiplexor). Creo que puedo comprarme algunos MCU sin problema. ¡Es solo que la placa de desarrollo cuesta tanto!
Bueno, siempre puedes diseñar tu propia PCB para ellos y hacer que se fabriquen a un precio bastante bajo. Algunos fabricantes de PCB ofrecen un servicio de prototipo , que es solo de 2 capas, sin resistencia a la soldadura. Barato y rápido. Use el paquete TQFP y puede soldarlo usted mismo.
No es tan mala idea. Aunque creo que costará más en gastos de envío que la PCB en sí. 2 capas deberían ser suficientes. Pero para proyectos pequeños frecuentes, pensé que hacer mi laboratorio de soldadura y PCB en casa sería mejor.

Me viene a la mente una plataforma que tiene un compilador/IDE gratuito:

  • Plataforma mBed . Se basa en un microcontrolador Cortex-M3: NXP LPC1768 . Tiene un compilador/IDE en línea . Lenguaje de programación: C/C++

Como desventaja, el microcontrolador tiene un gestor de arranque preprogramado que ocupa algo de espacio en la memoria del programa. Por otro lado, no tienes que gastar dinero adicional para comprar un programador.

Me hubiera gustado tener también un espacio mínimo utilizado. Por lo tanto, una placa de desarrollo está bien para experimentar, pero luego me gustaría pasar a una sola MCU.

No estoy seguro de por qué las placas de desarrollo de Maple no son tan populares, pero son muy fáciles de usar: LeafLabs
Incluyen un ARM Cortex-M3 que funciona a 72 MHz con muchas E/S y periféricos. Lo mejor de todo es que son compatibles con el IDE de Arduino, lo que los hace muy fáciles de programar. No hay ninguna limitación, que yo sepa, aparte de a qué se limita el propio microcontrolador. LeafLabs ha portado el IDE Arduino de código abierto de manera que es específico para sus placas de desarrollo.

ingrese la descripción de la imagen aquí

También tienes la opción del mBed LPC1768 de NXP, tal y como señala m.Alin. También tiene un ARM Cortex-M3 que funciona a 96 MHz. Lo he usado antes y es bastante potente. Tiene un IDE en línea y un compilador en su sitio web, lo que significa que debe estar conectado a Internet si desea codificarlo y/o programar la placa. NXP también proporciona una API muy útil y mucho código de referencia.

ingrese la descripción de la imagen aquí

Prueba EM::Bloques. Se basa en Code::Blocks y funciona muy bien. Tuve el código de prueba que tienen en el sitio de EMB en funcionamiento en la placa STM32F4Disco en aproximadamente 10 minutos, incluida la instalación, y soy un completo idiota. No hay límites y tiene la mayoría de las funciones de Keil y es compatible con todas las partes actuales de STM32Fxxx que CooCox no admite. No pierdas tu tiempo con Eclipse.

Usé mBed para la creación de prototipos y emBlocks en caso de que necesite profundizar, por ejemplo, agregue un desplazamiento a la memoria flash en caso de que haga un gestor de arranque personalizado que requiera que mi programa principal se inicie en un desplazamiento determinado.

Usualmente uso la placa STM32 Nucleo que viene con el programador STLink para hacer prototipos rápidos. emBlocks también tiene un buen depurador que admite mi depurador favorito, el Segger JLink.

Con mBed, pasar de la placa nucleo a la placa personalizada es muy sencillo, simplemente conecte la interfaz SWD de la placa STM32 Nucleo, elimine todos los puentes y podrá arrastrar y soltar archivos binarios desde la computadora a su placa personalizada a través de STLink. En el caso de mBlocks, puede usar su interfaz de programador; puede detectar el STLink.