Outils de développement ARM Cortex-M3?


36

Je prévois de migrer vers l'architecture NXP Cortex M3 et je suis un peu perdu entre les outils de développement existants.

Keil est cher et je ne sais pas si ça vaut le coup. Quiconque a essayé un compilateur peut donner un conseil?

J'ai trouvé ce compilateur http://www.code-red-tech.com/red-suite-2.php il semble bon et pas cher. Toute personne qui a essayé ou sait à ce sujet peut me donner plus d'informations?


C'est le compilateur fourni avec les cartes LPCXpresso, et utilise gcc avec l'IDE Eclipse. Les outils Rowley CrossWorks sont bien meilleurs.
Leon Heller

2
En quoi sont-ils meilleurs? Je pose la question parce que j'ai le tableau LPCXpresso et que les outils semblent bien fonctionner, alors je me demande en quoi les autres outils sont meilleurs?
John Burton

Ne pouvons-nous pas en faire une CW?
stévenvh

La plupart des possibilités devraient être réexaminées en 2012, car Microsoft Visual Studio 2012 prend en charge ARM en tant que cible de première classe.

Pour les petits projets, la version d'essai du compilateur Keil est gratuite.
Simon Richter

Réponses:


17

Je joue depuis peu avec mon STM32 (également Cortex M3) et j'utilise la distribution CodeSourcery de GCC, qui a plutôt bien fonctionné.

Un collègue qui a travaillé avec ARM micros de manière professionnelle dans le passé m'a dit qu'il était satisfait de la panoplie d'outils IAR, bien que je ne connaisse pas le coût ni le support Cortex.


1
IAR est une société spécialisée dans les compilateurs pour autant que je sache. Je les utilise au travail et ils ont quelques avantages et quelques inconvénients. Je trouve leur support assez excellent, nous utilisons le MSP430, mais ils semblent couvrir tous les processeurs que je regarde.
Kortuk

16

J'utilise les compilateurs croisés CodeSourcery (Lite) pour Linux pour programmer les microcontrôleurs TI Stellaris . Ils travaillent avec n'importe quel Cortex-M3. Ils sont complètement gratuits, avec des binaires pour Windows et Linux.

Voici une courte recette (Debian / Ubuntu) à installer:

Téléchargez le toolchain (n'importe quelle version fera l'affaire, mais j'utilise celle-ci)

Installez Java Runtime Environment (pour le fichu installateur)

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

Installer

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

Ajouter le répertoire bin du compilateur croisé à votre PATH

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

Pour charger le code et déboguer, vous aurez besoin d’ OpenOCD et de gdb ou de l’une des interfaces graphiques.

Vous aurez également besoin d'un adaptateur JTAG .


J'utilise également les outils CodeSourcery dans l'un de mes cours, avec le kit de développement Stellaris LM-3s6965. Notre wiki (lien vers toolchain) est ici: claymore.engineer.gvsu.edu/egr326/… (Voir également les instructions d’installation de MacOS X ci-dessous.) Le kit est livré avec une démonstration limitée de leurs outils graphiques, les outils en ligne ne sont pas limités.
Kevin Vermeer

9

J'ai commencé à utiliser l'un de ceux-ci (carte de développement MBED). Les principaux arguments de vente pour moi étaient que je pouvais coder en C ou C ++, une connexion directe vis-à-vis USB et un environnement de développement en ligne fluide (aucune installation d'outil local n'est requise!).

http://mbed.org/

Cinq minutes après l'ouverture de la boîte, j'ai eu un exemple de programme blinky (le «monde bonjour» du monde intégré) qui s'exécute comme suit:

#include "mbed.h"

DigitalOut myled(LED1);

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

C'est ça! Ci-dessus, le programme complet!

Il est basé sur ARM Cortex M3, une mémoire rapide et abondante pour les projets intégrés (100 MHz, 256 Ko de mémoire vive et 32 ​​Ko de mémoire vive). Les outils de développement en ligne ont une très bonne bibliothèque, de nombreux exemples et un forum très actif. Beaucoup d'aide sur la connexion de périphériques à MBED, etc.

Même si j'ai beaucoup d'expérience avec les systèmes embarqués (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC, etc.), j'ai quand même trouvé ce système rafraîchissant et facile à maîtriser tout en ayant de grandes capacités.

Après avoir initialement joué sur une maquette de base, j'ai acheté une base de ces types: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Cela a une pile de périphériques d’E / S (y compris une OLED miniature et un accéléromètre à 3 axes). Sur le même site, j’ai également acheté l’une des cartes de processeur LCPExpresso, qui est économique, moins d’énergie / mémoire que la MBED, mais qui convient parfaitement aux petits travaux (détruit toujours les processeurs PIC / Atmega). La carte de base prend en charge le LCPExpresso et le MBED. L’achat de la carte processeur LCPExpress m’a également apporté un débogueur JTAG attaché et un environnement de développement hors connexion (kit de développement basé sur GCC / Eclipse de Code Red). C’est bien plus complexe que l’environnement de développement MBED en ligne, mais c’est une progression logique une fois que vous avez acquis de l’expérience avec MBED.

En ce qui concerne mon point de départ, notons que le contrôleur MBED est beaucoup plus capable que le contrôleur LPCExpresso BUT est beaucoup plus simple à utiliser et à apprendre.


Il existe également l'excellent projet gcc4mbed d'Adam Green, qui vous permet de compiler hors connexion (au détriment d'une taille de code plus grande): github.com/adamgreen/gcc4mbed
Kevin Chen -

9

code source lite est bon, ou utilisez emdebian. Si vous avez besoin d’une bibliothèque complète C ou gcc, c’est encore faisable mais un peu plus difficile. au début, vous n'aurez pas besoin d'un compilateur capable de numériser avec les données de thumb2, ce dernier fera en sorte que vous recherchiez une chaîne d'outils que vous aimez.

llvm en est un autre bon (utilisez clang not llvm-gcc !!), je sais que le côté des bras s’améliore constamment, la version 27 produisait du code plus rapide que le gcc actuel pour un test particulier. J'ai trouvé un bogue du côté du pouce lors de l'utilisation de mon émulateur de pouce (thumbulator.blogspot.com) qui a été rapidement corrigé. La meilleure partie de llvm est qu’il s’agit par défaut d’un compilateur croisé, aucun travail supplémentaire ni expérience de la construction n’est nécessaire. Dans les années à venir, je les vois couper plus profondément dans gcc et passer gcc pour la compilation / intégration croisée.

J'ai essayé l'outil code-rouge une fois avec la carte lpcxpresso, le résultat final est que je n'utilise certainement jamais de code-rouge et je me demande si nous devons également ajouter la liste noire lpc. ymmv. Si vous devez utiliser un outil de paiement, je n’utiliserais Keil que parce qu’ils ont été achetés par arm et que le compilateur Rvct fait partie du paquet. Bien sûr, le code source est une maison payante si vous ne respectez pas les limitations légères ou si vous choisissez d’obtenir une assistance, étant donné que gcc dispose de la meilleure assistance, de loin de tous les compilateurs. Il n'y a pas si longtemps, lorsque j'ai été capable de les essayer, les outils et les outils de bras ont fait voler en éclats gcc en ce qui concerne la qualité du code produit. Certaines versions de 3.x génèrent un meilleur code que 4.x, elles ne semblent pas s'améliorer à chaque version, mais elles l'ont fait ou peut-être que la source de code a ajouté le support de thumb2 il n'y a pas si longtemps, ce que les versions 3.x ne font pas Je n'aurai pas.


If you have to use a pay for tool I would go with keil only because they were bought by arm- Avez-vous essayé les compilateurs Keil? Au moins, les outils Keil 8051 ne m'ont pas impressionné. Ils se sentent comme des dinosaures par rapport à la concurrence basée sur GCC ou à la suite LLVM / Clang, IMHO.
Morten Jensen

8

J'utilise le logiciel Rowley pour le développement ARM et MSP430:

http://www.rowley.co.uk

C'est excellent. Cortex-M3 est pris en charge.


1
J'essaie la version d'essai et je pense que ce sera mon choix. c'est complet bien documenté et pas très cher (licence personnelle pour 150 $)
mba7

L'ensemble d'outils Rowley est excellent et le support est excellent.
Radian


5

J'ai eu un bon succès en utilisant les chaînes de compilation / débogage IAR pour mon développement ARM. Ils offrent des outils de développement relativement stables avec un environnement Embedded C ++ (ce qui semble plutôt rare). - En fonction de la taille de votre base de code, ils proposent également d'excellents "kits KickStart" matériels / logiciels avec des versions limitées en taille de code de leurs outils.


4

IAR est excellent, et si vous travaillez dans de petits projets, il existe une édition gratuite de kickstart limitée à 32K de la taille du code. Les mises à niveau de taille sont cependant un peu chères je crois. Ils viennent également avec des tonnes de bons exemples de projets, généralement plusieurs pour chaque famille de processeurs.


2
Oui, ils ont coupé mon école beaucoup, il était toujours dans les milliers après une réduction de prix de 95%.
Kortuk

4

J'ai passé les deux derniers jours à bien configurer la chaîne d'outils GNU CodeSourcery pour le micro EFM32G sous OS X. Cela en valait la peine. Comparé à de nombreux débogueurs basés sur une interface graphique que j'ai essayés (principalement basés sur Eclipse); Makefiles, GCC et GDB sont un rêve devenu réalité; De plus, tout fonctionne à partir de mon terminal Linux ou Mac.

L'adaptateur J-Link intégré à la carte est le seul élément qui pèche. Le programme GDBServer Windows et Linux de J-Link est une source fermée. Pire encore, la version Linux est BEAUCOUP plus en retard. Donc, pour que GDB fonctionne, je dois exécuter une image Windows VMWare dont le seul but est d’exécuter le GDBServer (car celle Linux est en panne).

Et en plus de ne pas fonctionner correctement, le serveur GDB basé sur Linux de J-Link se lie à 127.0.0.1 et écoute UNIQUEMENT les paquets avec cela comme destination; il faut donc jouer avec iptables et le transfert pour le connecter à partir d’une machine distante. Ridicule; Segger doit se débrouiller.


Je reconnais que jlink est une douleur royale sous Linux, mais je pense que vous pouvez le faire fonctionner avec LD_LIBRARY_PATH. Vous pouvez également résoudre le problème d’adresse de liaison en utilisant un transfert SSH ou LD_PRELOAD ou similaire pour encapsuler les appels réseau et modifier l’adresse réseau. Mais il est pathétique de travailler avec des outils coûteux, plus difficiles que des outils bon marché, tels que ST-LINK, pour lesquels des pilotes complètement ouverts ont été mis au point par reverse engineering.
Chris Stratton

4

J'utilise QtCreator et GNU Tools ARM Embedded. Fonctionne bien.

Avantages:

  • Totalement gratuit (et open source)
  • QtCreator est un excellent IDE C ++ moderne avec complétion de code, hyperliens de symboles, refactoring, etc.
  • QtCreator prend en charge le débogage sans système d'exploitation (oui - vous pouvez placer graphiquement des points d'arrêt, un code d'étape et des variables d'inspection). (Nécessite un lien JTAG ou SWD vers votre MCU, mais ce n’était pas aussi difficile que je le pensais.)
  • Pas basé sur Eclipse ou Eclipse.

Désavantages:

  • Le support Baremetal est très nouveau et j'ai eu quelques problèmes avec lui - surmonté éventuellement avec l'excellente aide de l'auteur sur la liste de diffusion QtCreator.
  • Peut-être un peu plus difficile à configurer que Keil ou le code rouge.

Lorsque tout est configuré correctement, je peux cliquer pour créer un point d'arrêt dans mon code, puis cliquer sur le bouton "déboguer". Il compilera, clignotera, exécutera et mettra en pause le point d'arrêt dans environ 5 secondes (et vous rendra simultanément furieux si vous devez revenir à l'IDE "Arduino").

Je travaille actuellement sur un didacticiel expliquant comment configurer cela avec une autre puce ARM - le nRF51822 basé sur Cortex-M0.


5
Il vaut probablement la peine d'ajouter un peu plus de détails sur ce qui vous intéresse, quelques bonnes fonctionnalités, etc. pour rendre la réponse plus utile.
PeterJ

Pouvez-vous offrir une ébauche??
Scott Seidman


1

J'utilise arm-eabi-gcc et la chaîne d'outils qui l'accompagne, installée via le script de chaîne d'outils Summon Arm . Le script configure l'environnement pour effectuer du travail à nu sur le système ARM. Son source libre et ouverte et tout cela et a fonctionné de manière fiable pour moi. J'ai aussi utilisé IAR pour cela, et c'est certainement mieux car cela vous permet de faire un débogage beaucoup plus convivial et de faire les choses à la manière IDE, mais dans l'ensemble, je me sens plus à l'aise avec gcc, si ce n'est pour aucune autre raison ne devez justifier la dépense à personne.

(Je n'ai jamais vraiment travaillé sur l'utilisation de gdb, mais je n'ai jamais été vraiment habitué à utiliser un débogueur ou à en avoir un de toute façon, alors je ne suis pas sûr d'être qualifié pour en juger.)


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.