¿Herramientas de desarrollo ARM Cortex-M3?

Estoy planeando migrar a la arquitectura NXP Cortex M3 y estoy un poco perdido entre las herramientas de desarrollo existentes.

Keil es caro y no sé si vale la pena. ¿Alguien que haya probado algún compilador puede dar algún consejo?

Encontré este compilador http://www.code-red-tech.com/red-suite-2.php parece bueno y no es caro. ¿Alguien que lo haya probado o lo sepa me puede dar más información?

Es el compilador suministrado con las placas LPCXpresso y usa gcc con el IDE de Eclipse. Las herramientas de Rowley CrossWorks son mucho mejores.
¿De qué manera son mejores? Lo pregunto porque tengo la placa LPCXpresso y las herramientas parecen funcionar bien, así que me pregunto cómo son mejores las otras herramientas.
¿No podemos hacer de esto un CW?
La mayoría de las posibilidades deberían reconsiderarse en 2012, ya que Microsoft Visual Studio 2012 admite ARM como objetivo de primera clase.
Para proyectos pequeños, la versión de prueba del compilador Keil es gratuita.

Respuestas (13)

He estado jugando con un STM32 (también Cortex M3) últimamente en mi tiempo libre y usando la distribución CodeSourcery de GCC, que ha funcionado bastante bien.

Un colega que ha trabajado profesionalmente con micros ARM en el pasado me dijo que estaba satisfecho con la cadena de herramientas IAR, aunque no sé cuál es el costo o cómo es el soporte de Cortex.

IAR es una empresa especializada en compiladores por lo que puedo decir. Los uso en el trabajo y tienen algunas ventajas y algunas desventajas. Sin embargo, creo que su soporte es bastante excelente, usamos el MSP430, pero parecen cubrir todos los procesadores que busco.

Utilizo los compiladores cruzados CodeSourcery (Lite) para Linux para programar los microcontroladores Stellaris de TI . Funcionan con cualquier Cortex-M3. Son completamente gratuitos, con binarios para Windows y Linux.

Aquí hay una receta corta (Debian/Ubuntu) para instalar:

Descargue la cadena de herramientas (cualquier versión servirá, pero yo uso esta)

Instale Java Runtime Environment (para el maldito instalador)

sudo apt-get install sun-java6-jre ia32-libs

Instalar

chmod 755 arm-2009q3-68-arm-none-eabi.bin
./arm-2009q3-68-arm-none-eabi.bin -i console

Agregue el directorio bin del compilador cruzado a su RUTA

echo 'export PATH=$PATH:~/CodeSourcery/Sourcery_G++_Lite/bin/' >> ~/.bashrc 
. ~/.bashrc 

Para cargar código y depurar, necesitará OpenOCD y gdb o una de las GUI.

También necesitará un adaptador JTAG .

También uso las herramientas de CodeSourcery en una de mis clases, con el kit de desarrollo Stellaris LM-3s6965. Nuestro wiki (enlace a la cadena de herramientas) está aquí: claymore.engineer.gvsu.edu/egr326/… (Consulte también las instrucciones de instalación de MacOS X a continuación). El kit viene con una demostración por tiempo limitado de sus herramientas GUI, pero el comando Las herramientas de línea no están limitadas.

Empecé a usar uno de estos (placa de desarrollador MBED). Los grandes puntos de venta para mí fueron que podía codificar en C o C ++, una conexión directa a través de USB y un entorno de desarrollo en línea elegante (¡no se requiere la instalación de herramientas locales en absoluto!).

http://mbed.org/

Cinco minutos después de abrir el cuadro, tenía un programa parpadeante de muestra (el 'hola mundo' del mundo integrado) que ejecutaba lo siguiente:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

¡Eso es! ¡Arriba está el programa completo!

Está basado en ARM Cortex M3, rápido y con mucha memoria para proyectos integrados (100 mhz, 256k flash y 32k ram). Las herramientas de desarrollo en línea tienen una biblioteca muy buena y muchos ejemplos y hay un foro muy activo. Mucha ayuda para conectar dispositivos a MBED, etc.

A pesar de que tengo mucha experiencia con sistemas integrados (ARM 7/9, Renases M8/16/32, Coldfire, Zilog, PIC, etc.), encontré que este es un sistema refrescantemente fácil de manejar mientras tengo una gran capacidad.

Después de jugar inicialmente con él en una placa básica, compré una placa base de estos tipos: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Esto tiene una pila de dispositivos de E/S (incluido un OLED en miniatura y un acelerómetro de 3 ejes). En el mismo sitio también compré una de las placas de procesador LCPExpresso que es barata, tiene menos energía/memoria que la MBED pero es perfecta para trabajos más pequeños (aún supera a los procesadores PIC/Atmega). La placa base es compatible tanto con LCPExpresso como con MBED. La compra de la placa del procesador LCPExpress también me proporcionó un depurador JTAG adjunto y un entorno de desarrollo fuera de línea (kit de desarrollo basado en GCC/Eclipse de Code Red). Esto es mucho más complejo que el entorno de desarrollo de MBED en línea, pero es una progresión lógica después de haber adquirido experiencia con MBED.

Con referencia a mi punto original, notite que el controlador MBED es mucho más capaz que el controlador LPCExpresso PERO es mucho más simple de usar y aprender.

También está el excelente proyecto gcc4mbed de Adam Green que le permite compilar sin conexión (a expensas de un tamaño de código más grande): github.com/adamgreen/gcc4mbed

code sourcery lite es bueno, o use emdebian. o enrolle el suyo, es bastante fácil a menos que necesite una biblioteca completa de C o gcc, entonces todavía es factible pero un poco más difícil. al principio no necesitará un compilador compatible con thumb2, thumb lo hará mientras busca una cadena de herramientas que le guste.

llvm es otra buena (¡use clang, no llvm-gcc!), Sé que el lado del brazo está mejorando todo el tiempo, la versión 27 produjo un código más rápido que el gcc actual para una prueba en particular. Encontré un error en el lado del pulgar cuando trabajaba en mi emulador de pulgar (thumbulator.blogspot.com) que se solucionó rápidamente. La mejor parte de llvm es que, de forma predeterminada, es un compilador cruzado, no se requiere trabajo adicional ni experiencia en la construcción. En los próximos años los veo profundizar en gcc y pasar gcc para compilación cruzada/incrustado.

Probé la herramienta de código rojo una vez con la placa lpcxpresso, el resultado final es que definitivamente nunca usaré el código rojo y estoy debatiendo si incluir también lpc en la lista negra. mmmv. Si tiene que usar una herramienta de pago, elegiría Keil solo porque se compraron por brazo y parte del paquete es el compilador rvct. Por supuesto, Code Sourcery también es una casa de pago si no cumple con las limitaciones livianas o elige obtener soporte, siendo gcc tiene el mejor soporte con diferencia de todos los compiladores. No hace mucho tiempo, cuando pude probar el metaware y las herramientas de brazo, impresioné a gcc en cuanto a la calidad del código producido. gcc está arriba y abajo algunas versiones de 3.x producen mejor código que 4.x, no parecen estar mejorando en cada versión, pero lo hicieron o tal vez code sourcery agregó compatibilidad con thumb2 no hace mucho tiempo, que las versiones 3.x no hacen /no tendré.

If you have to use a pay for tool I would go with keil only because they were bought by arm- ¿Has probado los compiladores de Keil? Al menos no me han impresionado las herramientas Keil 8051. Se sienten como dinosaurios en comparación con la competencia basada en GCC o la suite LLVM/Clang, en mi humilde opinión.

Uso el software Rowley para el desarrollo ARM y MSP430:

http://www.rowley.co.uk

Es excelente. Se admite Cortex-M3.

Estoy probando la versión de prueba y creo que será mi elección. está completo bien documentado y no es muy caro (licencia personal por 150 $)
El conjunto de herramientas de Rowley es excelente y el soporte es excelente.

Uso el depurador Yagarto + Eclipse + J-link edu. (cadena de herramientas Gnu)

http://www.yagarto.de/

He tenido bastante éxito al usar cadenas de depuración/compilador IAR para mi desarrollo ARM. Ofrecen herramientas de desarrollo relativamente estables completas con un entorno de C++ incorporado (que parece algo raro). -- Según el tamaño de su base de código, también ofrecen excelentes "kits KickStart" de hardware/software con versiones limitadas de tamaño de código de sus herramientas.

IAR es excelente, y si está haciendo proyectos pequeños, hay una edición kickstart limitada de tamaño de código de 32K gratuita. Sin embargo, creo que las actualizaciones de tamaño son un poco caras. También vienen con toneladas de buenos proyectos de ejemplo, generalmente varios para cada familia de procesadores.

Sí, redujeron mucho mi escuela, todavía estaba en miles después de un recorte de precios del 95%.

Pasé los últimos días configurando completamente la cadena de herramientas CodeSourcery GNU para el micro EFM32G en OS X. Valió la pena. En comparación con muchos de los depuradores basados ​​en GUI que he probado (principalmente basados ​​en Eclipse); Makefiles, GCC y GDB son un sueño hecho realidad; además todo funciona desde mi terminal Linux o Mac.

La única parte que apesta es el adaptador J-Link integrado en la placa. El programa GDBServer para Windows y Linux de J-Link es de código cerrado. Peor aún, la versión de Linux está MUCHO más atrás. Entonces, para que GDB funcione, tengo que ejecutar una imagen de Windows VMWare cuyo único propósito es ejecutar GDBServer (porque el de Linux está roto).

Ah, y además de no funcionar correctamente, el servidor GDB basado en Linux de J-Link se une a 127.0.0.1 y SÓLO escucha paquetes con ese destino; por lo tanto, se necesita jugar con iptables y reenviar para que se conecte desde una máquina remota. Ridículo; Segger necesita actuar juntos.

Estoy de acuerdo en que jlink es un dolor real en Linux, pero creo que puedes hacerlo funcionar usando LD_LIBRARY_PATH. También puede solucionar el problema de la dirección de enlace, ya sea mediante un reenvío SSH o mediante LD_PRELOAD o similar para envolver las llamadas de red y cambiar la dirección de red. Pero es patético cuando las herramientas que son caras son más difíciles de trabajar que las baratas como ST-LINK para las cuales los controladores completamente abiertos han sido sometidos a ingeniería inversa.

Uso QtCreator y GNU Tools ARM Embedded. Funciona bien.

ventajas:

  • Totalmente gratis (y de código abierto)
  • QtCreator es un gran IDE de C++ moderno con finalización de código de trabajo, hipervínculos de símbolos, refactorización, etc.
  • QtCreator admite la depuración completa (sí, puede colocar gráficamente puntos de interrupción, código de pasos e inspeccionar variables). (Requiere un enlace JTAG o SWD a su MCU, pero esto no fue tan difícil como pensé).
  • No basado en Eclipse o Eclipse.

Desventajas:

  • El soporte de Baremetal es muy nuevo y tuve bastantes problemas con él, superados finalmente con la excelente ayuda del autor en la lista de correo de QtCreator.
  • Tal vez un poco más difícil de configurar que Keil o Code Red.

Cuando todo está configurado correctamente, puedo hacer clic para crear un punto de interrupción en mi código y luego hacer clic en el botón "depurar". Se compilará, flasheará, ejecutará y pausará en el punto de interrupción en aproximadamente 5 segundos (y al mismo tiempo lo enfurecerá si alguna vez tiene que volver al "IDE" de Arduino).

Estoy trabajando en un tutorial sobre cómo configurar esto con otro chip ARM: el nRF51822 basado en Cortex-M0.

Probablemente valga la pena agregar un poco más de detalles sobre lo que le gusta, algunas buenas características, etc. para que la respuesta sea más útil.
¿Puede ofrecer un bosquejo aproximado?

Utilizo las herramientas de CooCox, es excelente pero de uso gratuito, sin limitaciones de tamaño de código. http://www.coocox.org/

Yo uso arm-eabi-gcc y la cadena de herramientas que lo acompaña instalada a través de la secuencia de comandos de la cadena de herramientas del brazo de invocación . El script configura el entorno para realizar trabajos completos en el ARM. Es gratuito y de código abierto y todo eso, y ha funcionado de manera confiable para mí. También he usado IAR para esto, y ciertamente es mejor porque te permite hacer una depuración mucho más amigable y hacer las cosas de la manera IDE, pero en general me siento más cómodo con gcc, aunque no sea por otra razón porque yo no tienes que justificar el gasto a nadie.

(Nunca supe cómo usar gdb para nada, pero nunca me acostumbré a usar un depurador o a tener uno disponible de todos modos, así que no estoy seguro de estar calificado para juzgar eso).

Yo uso Emprog ThunderBench . Es excelente, probablemente el mejor que he usado.

Lo que más me gusta de él es que es, al mismo tiempo, un compilador C/C++ ARM cortex , un depurador y un IDE.

Parece otra combinación de GCC + Eclipse.