¿Herramientas de desarrollo ARM Cortex-M3?

35

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 enlace parece bueno y no es caro. ¿Alguien que lo probó o lo sabe puede darme más información?

    
pregunta mba7

13 respuestas

17

Últimamente he estado jugando con un STM32 (también Cortex M3) en mi tiempo libre y he utilizado la distribución de GCC de CodeSourcery, 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 ni cómo es el soporte de Cortex.

    
respondido por el Andrew
16

Utilizo los compiladores cruzados CodeSourcery (Lite) para Linux para programar Microcontroladores de microcontroladores Stellaris de TI . Trabajan 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 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 PATH

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 GUIs.

También necesitará un adaptador JTAG .

    
respondido por el Toby Jaffey
9

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

enlace

Cinco minutos después de la apertura del cuadro, tenía un programa blinky de muestra (el 'hola mundo' del mundo incrustado) ejecutando lo siguiente:

#include "mbed.h"

DigitalOut myled(LED1);

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

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

Se basa en ARM Cortex M3, es rápido y tiene 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 los sistemas integrados (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC, etc.) encontré este un sistema refrescante y fácil de manejar mientras tengo una gran capacidad .

Después de jugar inicialmente con él en una placa base, compré una tabla base de estos tipos: un . Esto tiene una pila de dispositivos de E / S (incluido un OLED de miniture y un acelerómetro de 3 ejes). Desde 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 es un problema para los procesadores PIC / Atmega). La placa base es compatible con LCPExpresso y 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 MBED en línea, pero es una progresión lógica después de haber adquirido experiencia con el MBED.

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

    
respondido por el ttt
9

el código de fuente está bien, o use emdebian. o ruede el suyo, es bastante fácil a menos que necesite una biblioteca C o gcc completa, entonces aún es factible pero un poco más difícil. Al principio no necesitarás un compilador compatible con thumb2, mientras que la búsqueda de una cadena de herramientas que te guste funcionará.

llvm es otro bueno (use clang not 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 al trabajar en mi emulador de pulgar (thumbulator.blogspot.com) que se solucionó rápidamente. La mejor parte de llvm es que, por defecto, es un compilador cruzado, no se requiere trabajo extra ni experiencia de construcción. En los próximos años los veré profundizando en gcc y pasando gcc para compilación cruzada / incrustado.

Una vez probé la herramienta de código rojo con la placa lpcxpresso, el resultado final es que definitivamente nunca uso el código rojo y estoy debatiendo si también debo agregar a la lista negra lpc. ymmv. Si tiene que usar una herramienta de pago, iría con keil solo porque fueron comprados por armo y parte del paquete es el compilador rvct. Por supuesto, la fuente de código también es una casa de pago si no cumple con las limitaciones de lite o elige obtener soporte, siendo gcc tiene el mejor soporte de todos los compiladores. No hace mucho tiempo, cuando pude probarlos, el metware y las herramientas del brazo volaron 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 agregaron compatibilidad con thumb2 no hace mucho tiempo, que las versiones 3.x no / no tendremos.

    
respondido por el old_timer
8

Uso el software Rowley para el desarrollo de ARM y MSP430:

enlace

Es excelente. Cortex-M3 es compatible.

    
respondido por el Leon Heller
7

Yo uso Yagarto + Eclipse + J-link edu debugger. (Gnu toolchain)

enlace

    
respondido por el stbtra
5

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

    
respondido por el Nate
4

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

    
respondido por el mikeselectricstuff
4

Pasé los últimos dos días obteniendo la cadena de herramientas GNU de CodeSourcery completamente configurada 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 de Linux o Mac.

La única parte que apesta es el adaptador J-Link integrado en la placa. El programa GDBServer de Windows y Linux de J-Link es de código cerrado. Peor aún, la versión de Linux está MUCHO más atrasada. 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 enlaza a 127.0.0.1 y escucha SOLO paquetes con eso como destino; por lo que es necesario jugar con iptables y reenviar para que se conecte desde una máquina remota. Ridículo; Segger necesita actuar juntos.

    
respondido por el nemik
4

Uso QtCreator y GNU Tools ARM Embedded. Funciona bien.

Ventajas:

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

Desventajas:

  • El soporte de Baremetal es muy nuevo y tuve algunos problemas con él, superado 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 el código rojo.

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á, parpadeará, ejecutará y pausará en el punto de interrupción en unos 5 segundos (y al mismo tiempo te hará enojar si alguna vez tienes 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.

    
respondido por el Timmmm
2

Utilizo las herramientas CooCox, es excelente pero de uso gratuito, no está limitado por ningún código. enlace

    
respondido por el BobEmbed
1

Utilizo arm-eabi-gcc y la cadena de herramientas que viene con él instalada a través de summon armar script script . La secuencia de comandos configura el entorno para realizar trabajos básicos en el ARM. Es gratis, de código abierto y todo eso, y ha funcionado de manera confiable para mí. También he utilizado IAR para esto, y ciertamente es mejor porque te permite hacer una depuración mucho más amigable y para hacer las cosas de manera IDE, pero en general me siento más cómodo con gcc, aunque no sea por otra razón porque No hay que justificar el gasto a nadie.

(Realmente nunca he pensado cómo usar gdb para nada, pero realmente nunca he estado acostumbrado a usar un depurador o tener uno disponible de todos modos, así que no estoy seguro si estoy calificado para juzgar ese bit. )

    
respondido por el Chintalagiri Shashank
1

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

Lo que más me gusta de esto es que, al mismo tiempo, es un compilador C / C ++ ARM córtex , un depurador y un IDE.

    
respondido por el ITguy

Lea otras preguntas en las etiquetas