Strumenti di sviluppo ARM Cortex-M3?


36

Ho in programma di migrare all'architettura NXP Cortex M3 e sono un po 'perso tra gli strumenti di sviluppo esistenti.

Keil è costoso e non so se ne valga la pena. Chiunque abbia provato un compilatore può dare qualche consiglio?

Ho trovato questo compilatore http://www.code-red-tech.com/red-suite-2.php che sembra buono e non costoso. Chiunque l'abbia provato o lo sappia può darmi maggiori informazioni?


È il compilatore fornito con le schede LPCXpresso e utilizza gcc con l'IDE Eclipse. Gli strumenti Rowley CrossWorks sono molto migliori.
Leon Heller,

2
In che modo stanno meglio? Lo sto chiedendo perché ho la scheda LPCXpresso e gli strumenti sembrano funzionare bene, quindi mi chiedo come siano gli altri strumenti migliori?
John Burton,

Non possiamo renderlo un CW?
Stevenvh,

La maggior parte delle possibilità dovrebbe essere riconsiderata nel 2012 poiché Microsoft Visual Studio 2012 supporta ARM come target di 1a classe.

Per i piccoli progetti, la versione di prova del compilatore Keil è gratuita.
Simon Richter,

Risposte:


17

Ho giocato con un STM32 (anche Cortex M3) ultimamente nel mio tempo libero e usando la distribuzione CodeSourcery di GCC, che ha funzionato abbastanza bene.

Un collega che ha lavorato con ARM micro in passato in modo professionale mi ha detto che era soddisfatto della toolchain IAR, anche se non so quale sia il costo o come sia il supporto Cortex.


1
IAR è una società specializzata in compilatori per quanto ne so. Li uso al lavoro e hanno alcuni vantaggi e alcuni svantaggi. Trovo che il loro supporto sia piuttosto eccellente, usiamo MSP430, ma sembrano coprire tutti i processori che cerco.
Kortuk,

16

Uso i cross-compilatori CodeSourcery (Lite) per Linux per programmare i microcontrollori TI Stellaris . Funzionano con qualsiasi Cortex-M3. Sono completamente gratuiti, con file binari per Windows e Linux.

Ecco una breve ricetta (Debian / Ubuntu) da installare:

Scarica la toolchain (qualsiasi versione lo farà, ma io uso questo)

Installa Java Runtime Environment (per il dannato programma di installazione)

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

Installare

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

Aggiungi la directory bin del compilatore incrociato al tuo PERCORSO

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

Per caricare il codice e il debug, avrai bisogno di OpenOCD e gdb o una delle GUI.

Avrai anche bisogno di un adattatore JTAG .


Uso anche gli strumenti CodeSourcery in una delle mie lezioni, con il kit di sviluppo Stellaris LM-3s6965. Il nostro wiki (link alla toolchain) è qui: claymore.engineer.gvsu.edu/egr326/… (Vedi anche le istruzioni di installazione di MacOS X di seguito). Il kit viene fornito con una demo limitata nel tempo dei loro strumenti della GUI, ma il comando gli strumenti di linea non sono limitati.
Kevin Vermeer,

9

Ho iniziato a utilizzare uno di questi (scheda di sviluppo MBED). I principali punti di forza per me sono stati la possibilità di scrivere codice in C o C ++, una connessione semplice tramite USB e un ambiente di sviluppo on-line semplice (non è richiesta l'installazione di alcun strumento locale!).

http://mbed.org/

Cinque minuti dopo l'apertura della scatola ho avuto un programma blinky di esempio (il "ciao mondo" del mondo incorporato) che eseguiva quanto segue:

#include "mbed.h"

DigitalOut myled(LED1);

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

Questo è tutto! Sopra è il programma completo!

È basato su ARM Cortex M3, veloce e con molta memoria per progetti embedded (100mhz, 256k flash e 32k ram). Gli strumenti di sviluppo online hanno una libreria molto buona e molti esempi e c'è un forum molto attivo. Un sacco di aiuto per il collegamento di dispositivi a MBED ecc

Anche se ho molta esperienza con i sistemi embedded (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC ecc.), Ho ancora trovato questo un sistema piacevolmente rinfrescante da affrontare pur avendo una seria capacità.

Dopo averlo inizialmente giocato su una breadboard di base, ho comprato una base da questi ragazzi: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Questo ha una pila di dispositivi I / O (incluso un OLED miniature e un accelerometro a 3 assi). Dallo stesso sito ho anche acquistato una delle schede del processore LCPExpresso che è economica, con meno energia / memoria rispetto all'MBED ma perfetta per i lavori più piccoli (elimina ancora la schifezza dei processori PIC / Atmega). La scheda di base supporta sia LCPExpresso che MBED. L'acquisto della scheda del processore LCPExpress mi ha anche procurato un debugger JTAG collegato e un ambiente di sviluppo offline (kit di sviluppo basato su GCC / Eclipse di Code Red). Questo è molto più complesso dell'ambiente di sviluppo MBED online ma è una progressione logica dopo aver acquisito esperienza con MBED.

Con riferimento al mio punto di partenza originale, il controller MBED è molto più capace del controller LPCExpresso, MA è molto più semplice da usare e da imparare.


Esiste anche l'eccellente progetto gcc4mbed di Adam Green che consente di compilare offline (a scapito di dimensioni di codice maggiori): github.com/adamgreen/gcc4mbed
Kevin Chen,

9

codice sourcery lite è buono o usa emdebian. o fai il tuo, è abbastanza facile a meno che tu non abbia bisogno di una libreria C o gcc completa, ma è comunque fattibile ma un po 'più difficile. all'inizio non avrai bisogno di un compilatore compatibile con thumb2, il pollice lo farà mentre cerchi una toolchain che ti piace.

llvm è un altro buono (usa clang not llvm-gcc !!), so che il lato del braccio sta migliorando continuamente, la versione 27 ha prodotto un codice più veloce dell'attuale gcc per un particolare test. Ho trovato un bug nella parte del pollice mentre lavoravo sul mio emulatore di pollice (thumbulator.blogspot.com) che è stato prontamente risolto. La parte migliore di llvm è che per impostazione predefinita è un compilatore incrociato, non sono necessari ulteriori lavori o esperienze di costruzione. Nei prossimi anni li vedo entrare più a fondo in gcc e far passare gcc per compilare / incorporare.

Ho provato lo strumento code-red una volta con la scheda lpcxpresso, il risultato finale è che non uso mai code-red e sto discutendo se inserire anche black list in lpc. YMMV. Se dovessi usare un pay per tool andrei con keil solo perché sono stati acquistati a braccio e parte del pacchetto è il compilatore rvct. Naturalmente il codice sourcery è anche una casa a pagamento se non si soddisfano i limiti lite o si sceglie di ottenere supporto, essendo gcc ha il miglior supporto di gran lunga di tutti i compilatori. Non molto tempo fa, quando sono stato in grado di provarli, i metaware e gli strumenti di arm hanno spazzato via gcc per quanto riguarda la qualità del codice prodotto. gcc è su e giù alcune versioni di 3.x producono un codice migliore di 4.x, non sembrano migliorare su ogni versione, ma hanno fatto o forse codice sourcery aggiunto supporto thumb2 non molto tempo fa, cosa che le versioni 3.x non fanno / non avrò.


If you have to use a pay for tool I would go with keil only because they were bought by arm- Hai provato i compilatori Keil? Almeno non sono rimasto impressionato dagli strumenti Keil 8051. Si sentono dinosauri rispetto alla competizione basata su GCC o alla suite LLVM / Clang, IMHO.
Morten Jensen,

8

Uso il software Rowley per lo sviluppo ARM e MSP430:

http://www.rowley.co.uk

È eccellente Cortex-M3 è supportato.


1
sto provando la versione di prova e penso che sarà la mia scelta. è completo ben documentato e non molto costoso (licenza personale per 150 $)
mba7

Il set di strumenti Rowley è eccezionale e il supporto è eccellente.
Radian,


5

Ho avuto un discreto successo usando le catene di compilatore / debug IAR per il mio sviluppo ARM. Offrono strumenti di sviluppo relativamente stabili completi di un ambiente C ++ incorporato (che sembra piuttosto raro). - A seconda delle dimensioni della base di codice, offrono anche ottimi "KickStart Kits" hardware / software con versioni limitate di codice dei loro strumenti.


4

IAR è eccellente e se stai realizzando piccoli progetti c'è un'edizione kickstart limitata a 32K di codice gratuita. Credo che gli aggiornamenti delle dimensioni siano un po 'costosi. Inoltre vengono forniti con tonnellate di buoni progetti di esempio, di solito diversi per ogni famiglia di processori.


2
Sì, hanno tagliato la mia scuola molto, era ancora a migliaia dopo una riduzione del 95% dei prezzi.
Kortuk,

4

Ho trascorso gli ultimi due giorni a ottenere la toolchain GNU CodeSourcery completamente configurata per il micro EFM32G su OS X. Ne è valsa la pena. Rispetto a molti dei debugger basati su GUI che ho provato (principalmente basato su Eclipse); Makefile, GCC e GDB sono un sogno diventato realtà; inoltre funziona tutto dal mio terminale Linux o Mac.

L'unica parte che fa schifo è l'adattatore J-Link integrato nella scheda. Il programma GDBServer Windows e Linux di J-Link è di tipo chiuso. Ancora peggio, la versione di Linux è MOLTO più indietro. Quindi, affinché GDB funzioni, devo eseguire un'immagine Windows VMWare il cui unico scopo è quello di eseguire GDBServer (perché quello Linux è rotto).

Oh, e oltre a non funzionare correttamente, il server GDB basato su Linux di J-Link si lega a 127.0.0.1 e ascolta SOLO pacchetti con quello come dest; quindi è necessario fare casino con iptables e inoltro per collegarlo da una macchina remota. Ridicolo; Segger deve mettere insieme i loro atti.


Sono d'accordo che jlink sia un problema reale su Linux, ma penso che tu possa farlo funzionare usando LD_LIBRARY_PATH. Inoltre, è possibile risolvere il problema dell'indirizzo di associazione, utilizzando un inoltro SSH o utilizzando LD_PRELOAD o simile per concludere le chiamate di rete e modificare l'indirizzo di rete. Ma è patetico quando gli strumenti costosi sono più difficili da lavorare rispetto a quelli economici come ST-LINK per i quali i driver completamente aperti sono stati progettati in modo inverso.
Chris Stratton,

4

Uso QtCreator e GNU Tools ARM Embedded. Funziona bene.

vantaggi:

  • Totalmente gratuito (e open source)
  • QtCreator è un ottimo IDE C ++ moderno con completamento del codice di lavoro, collegamenti ipertestuali di simboli, refactoring, ecc.
  • QtCreator supporta il debug bare metal (sì - è possibile posizionare graficamente punti di interruzione, codice passo e ispezionare variabili). (Richiede il collegamento JTAG o SWD al tuo MCU, ma non è stato così difficile come pensavo.)
  • Non basato su Eclipse o basato su Eclipse.

svantaggi:

  • Il supporto di Baremetal è molto nuovo e ho avuto alcuni problemi con esso - superato alla fine con l'eccellente aiuto dell'autore sulla mailing list di QtCreator.
  • Forse un po 'più difficile da configurare rispetto a Keil o al codice rosso.

Quando tutto è impostato correttamente, posso fare clic per creare un punto di interruzione nel mio codice, quindi fare clic sul pulsante "debug". Compilerà, lampeggerà, eseguirà e si fermerà sul punto di interruzione in circa 5 secondi (e contemporaneamente ti farà arrabbiare se dovessi mai tornare ad "IDE" di Arduino).

Sto lavorando a un tutorial su come configurarlo con un altro chip ARM: il nRF51822 basato su Cortex-M0.


5
Probabilmente vale la pena aggiungere un po 'più di dettaglio su ciò che ti piace, alcune buone funzionalità ecc. Per rendere la risposta più utile.
PeterJ,

Puoi offrire un profilo approssimativo ??
Scott Seidman,


1

Uso arm-eabi-gcc e la toolchain che lo accompagna installata tramite lo script summon arm toolchain . Lo script imposta l'ambiente per eseguire il lavoro bare metal su ARM. È gratuito e open source e tutto il resto e ha funzionato in modo affidabile per me. Ho anche usato IAR per questo, ed è sicuramente meglio in quanto ti consente di eseguire il debug molto più amichevole e di fare le cose nel modo IDE, ma nel complesso mi sento più a mio agio con gcc, se non altro perché non è necessario giustificare la spesa a nessuno.

(Non ho mai capito come usare gdb per nulla, ma non sono mai stato abituato a usare un debugger o averne uno disponibile, quindi non sono sicuro di essere qualificato per giudicare quel bit.)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.