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?
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.
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 .
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!).
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.
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:
Es excelente. Se admite Cortex-M3.
Uso el depurador Yagarto + Eclipse + J-link edu. (cadena de herramientas Gnu)
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.
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.
Uso QtCreator y GNU Tools ARM Embedded. Funciona bien.
ventajas:
Desventajas:
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.
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.
leon heller
Juan Burton
stevenvh
usuario924
Simón Richter