ARM Cortex-M3-Entwicklungstools?

Ich plane, auf die NXP Cortex M3-Architektur zu migrieren, und bin zwischen den vorhandenen Entwicklungstools etwas verloren.

Keil ist teuer und ich weiß nicht, ob es sich lohnt. Jeder, der einen Compiler ausprobiert hat, kann einen Rat geben?

Ich fand diesen Compiler http://www.code-red-tech.com/red-suite-2.php er scheint gut und nicht teuer zu sein. Wer hat es ausprobiert oder kennt sich damit aus und kann mir mehr Infos geben?

Es ist der Compiler, der mit den LPCXpresso-Boards geliefert wird, und verwendet gcc mit der Eclipse-IDE. Die Rowley CrossWorks-Tools sind viel besser.
Inwiefern sind sie besser? Ich frage, weil ich das LPCXpresso-Board habe und die Tools gut zu funktionieren scheinen, also frage ich mich, inwiefern die anderen Tools besser sind?
Können wir das nicht zu einem CW machen?
Die meisten Möglichkeiten sollten 2012 überdacht werden, da Microsoft Visual Studio 2012 ARM als 1st-Class-Target unterstützt.
Für kleine Projekte ist die Testversion des Keil-Compilers kostenlos.

Antworten (13)

Ich habe in letzter Zeit in meiner Freizeit mit einem STM32 (auch Cortex M3) gespielt und die CodeSourcery-Distribution von GCC verwendet, was ziemlich gut funktioniert hat.

Ein Kollege, der in der Vergangenheit beruflich mit ARM Micros gearbeitet hat, sagte mir, dass er mit der IAR-Toolchain zufrieden war, obwohl ich nicht weiß, wie die Kosten sind oder wie der Cortex-Support ist.

Soweit ich das beurteilen kann, ist IAR ein Unternehmen, das sich auf Compiler spezialisiert hat. Ich benutze sie bei der Arbeit und sie haben einige Vorteile und ein paar Nachteile. Ich finde ihre Unterstützung ziemlich exzellent, wir verwenden den MSP430, aber sie scheinen jeden Prozessor abzudecken, den ich nachschlage.

Ich verwende die CodeSourcery (Lite) Cross-Compiler für Linux, um die TI Stellaris Mikrocontroller zu programmieren . Sie funktionieren mit jedem Cortex-M3. Sie sind völlig kostenlos, mit Binärdateien für Windows und Linux.

Hier ist ein kurzes Rezept (Debian/Ubuntu) zum Installieren:

Laden Sie die Toolchain herunter (jede Version reicht, aber ich verwende diese)

Java Runtime Environment installieren (für den verdammten Installer)

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

Installieren

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

Fügen Sie Ihrem PATH das Cross-Compiler-Bin-Verzeichnis hinzu

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

Um Code zu laden und zu debuggen, benötigen Sie OpenOCD und entweder gdb oder eine der GUIs.

Außerdem benötigen Sie einen JTAG-Adapter .

Ich verwende die CodeSourcery-Tools auch in einem meiner Kurse mit dem Stellaris LM-3s6965-Entwicklungskit. Unser Wiki (Link zur Toolchain) ist hier: claymore.engineer.gvsu.edu/egr326/… (Siehe auch die MacOS X-Installationsanweisungen unten.) Das Kit enthält eine zeitlich begrenzte Demo ihrer GUI-Tools, aber den Befehl Linienwerkzeuge sind nicht begrenzt.

Ich habe angefangen, eines davon zu verwenden (MBED-Entwicklerboard). Die großen Verkaufsargumente für mich waren, dass ich in C oder C++ programmieren konnte, eine unkomplizierte Verbindung über USB und eine schicke Online-Entwicklungsumgebung (überhaupt keine lokale Tool-Installation erforderlich!).

http://mbed.org/

Fünf Minuten nach dem Öffnen der Box hatte ich ein blinkendes Beispielprogramm (die „Hallo Welt“ der eingebetteten Welt), das Folgendes ausführte:

#include "mbed.h"

DigitalOut myled(LED1);

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

Das ist es! Oben ist das komplette Programm!

Es basiert auf ARM Cortex M3, schnell und mit viel Speicher für eingebettete Projekte (100 MHz, 256.000 Flash und 32.000 RAM). Die Online-Entwicklungstools haben eine sehr gute Bibliothek und viele Beispiele und es gibt ein sehr aktives Forum. Viel Hilfe beim Anschließen von Geräten an MBED usw

Obwohl ich viel Erfahrung mit eingebetteten Systemen habe (ARM 7/9, Renases M8/16/32, Coldfire, Zilog, PIC usw.), fand ich dies dennoch ein erfrischend einfaches System, mit dem man sich vertraut machen kann, während es über ernsthafte Fähigkeiten verfügt.

Nachdem ich zunächst auf einem einfachen Steckbrett damit gespielt hatte, kaufte ich ein Basisboard von diesen Jungs: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Dieser verfügt über einen Stapel von I/O-Geräten (einschließlich einer Miniatur-OLED und eines 3-Achsen-Beschleunigungsmessers). Von derselben Seite habe ich auch eine der LCPExpresso-Prozessorplatinen gekauft, die billig ist, weniger Leistung/Speicher als die MBED, aber perfekt für kleinere Jobs (hämmert immer noch den Mist aus PIC/Atmega-Prozessoren). Das Basisboard unterstützt sowohl LCPExpresso als auch MBED. Durch den Kauf des LCPExpress-Prozessorboards erhielt ich auch einen angeschlossenen JTAG-Debugger und eine Offline-Entwicklungsumgebung (Code Reds GCC/Eclipse-basiertes Entwicklungskit). Dies ist viel komplexer als die Online-MBED-Entwicklungsumgebung, aber eine logische Weiterentwicklung, nachdem Sie Erfahrungen mit MBED gesammelt haben.

In Bezug auf meinen ursprünglichen Punkt sei darauf hingewiesen, dass der MBED-Controller viel leistungsfähiger ist als der LPCExpresso-Controller, ABER viel einfacher zu verwenden und zu lernen.

Es gibt auch das hervorragende gcc4mbed-Projekt von Adam Green, mit dem Sie offline kompilieren können (auf Kosten einer größeren Codegröße): github.com/adamgreen/gcc4mbed

code sourcery lite ist gut, oder benutze emdebian. oder rollen Sie Ihre eigene, es ist ziemlich einfach, es sei denn, Sie benötigen eine vollständige C- oder gcc-Bibliothek, dann ist es immer noch machbar, aber etwas schwieriger. Zunächst benötigen Sie keinen thumb2-fähigen Compiler, thumb erledigt die Suche nach einer Toolchain, die Ihnen gefällt.

llvm ist ein weiterer guter (verwenden Sie clang, nicht llvm-gcc!!), ich weiß, dass die Arm-Seite die ganze Zeit besser wird, Version 27 produzierte für einen bestimmten Test schnelleren Code als der aktuelle gcc. Ich habe bei der Arbeit an meinem Daumenemulator (thumbulator.blogspot.com) einen Fehler in der Daumenseite gefunden, der umgehend behoben wurde. Das Beste an llvm ist, dass es standardmäßig ein Cross-Compiler ist, keine zusätzliche Arbeit oder Bauerfahrung erforderlich. In den nächsten paar Jahren sehe ich, wie sie tiefer in gcc eindringen und gcc für Cross-Compiling/Embedded passieren.

Ich habe das Code-Red-Tool einmal mit dem lpcxpresso-Board ausprobiert, das Endergebnis ist, dass ich definitiv nie Code-Red verwende und überlege, ob ich auch lpc auf die schwarze Liste setzen soll. jammv. Wenn Sie ein kostenpflichtiges Tool verwenden müssen, würde ich mich nur für keil entscheiden, da sie von Arm gekauft wurden und Teil des Pakets der rvct-Compiler ist. Natürlich ist Code Sourcery auch ein kostenpflichtiges Haus, wenn Sie die Lite-Einschränkungen nicht erfüllen oder sich dafür entscheiden, Unterstützung zu erhalten, da gcc die mit Abstand beste Unterstützung aller Compiler bietet. Vor nicht allzu langer Zeit, als ich sie ausprobieren konnte, haben Metaware und Arm's Tools gcc in Bezug auf die Qualität des erzeugten Codes umgehauen. gcc ist rauf und runter Einige Versionen von 3.x produzieren besseren Code als 4.x, sie scheinen sich nicht mit jeder Veröffentlichung zu verbessern, aber sie haben vor nicht allzu langer Zeit Thumb2-Unterstützung hinzugefügt, oder vielleicht haben Code-Quellen Thumb2-Unterstützung hinzugefügt, was die 3.x-Versionen nicht tun Ich werde es nicht haben.

If you have to use a pay for tool I would go with keil only because they were bought by arm- Haben Sie die Keil-Compiler ausprobiert? Ich war zumindest von den Werkzeugen des Keil 8051 nicht beeindruckt. Sie fühlen sich im Vergleich zur GCC-basierten Konkurrenz oder der LLVM/Clang-Suite wie Dinosaurier an, IMHO.

Ich verwende Rowley-Software für die ARM- und MSP430-Entwicklung:

http://www.rowley.co.uk

Es ist exzellent. Cortex-M3 wird unterstützt.

Ich versuche die Testversion und ich denke, dass es meine Wahl sein wird. es ist vollständig gut dokumentiert und nicht sehr teuer (persönliche Lizenz für 150 $)
Das Rowley-Toolset ist großartig und der Support ist ausgezeichnet.

Ich verwende Yagarto + Eclipse + J-Link-Edu-Debugger. (Gnu-Toolchain)

http://www.yagarto.de/

Ich hatte ziemlich guten Erfolg mit IAR- Compiler-/Debug-Ketten für meine ARM-Entwicklung. Sie bieten relativ stabile Entwicklungstools komplett mit einer eingebetteten C++-Umgebung (was eher selten erscheint). -- Abhängig von Ihrer Codebasisgröße bieten sie auch großartige Hardware-/Software-"KickStart-Kits" mit auf die Codegröße begrenzten Versionen ihrer Tools an.

IAR ist ausgezeichnet, und wenn Sie kleine Projekte durchführen, gibt es eine kostenlose Kickstart-Edition mit einer begrenzten Codegröße von 32 KB. Größen-Upgrades sind jedoch ein bisschen teuer, glaube ich. Sie enthalten auch jede Menge guter Beispielprojekte, normalerweise mehrere für jede Prozessorfamilie.

Ja, sie haben meine Schule stark gekürzt, es waren immer noch Tausende nach einer Preissenkung von 95 %.

Ich habe die letzten paar Tage damit verbracht, die CodeSourcery GNU-Toolchain vollständig für das EFM32G-Mikro auf OS X einzurichten. Es hat sich gelohnt. Im Vergleich zu vielen der GUI-basierten Debugger, die ich ausprobiert habe (meistens Eclipse-basiert); Makefiles, GCC und GDB sind ein wahr gewordener Traum; Außerdem funktioniert alles von meinem Linux- oder Mac-Terminal aus.

Das einzige, was nervt, ist der in die Platine eingebaute J-Link-Adapter. Das Windows- und Linux-GDBServer-Programm von J-Link ist Closed Source. Noch schlimmer ist, dass die Linux-Version VIEL weiter zurückliegt. Damit GDB funktioniert, muss ich also ein Windows VMWare-Image ausführen, dessen einziger Zweck darin besteht, den GDBServer auszuführen (weil das Linux-Image defekt ist).

Oh, und zusätzlich dazu, dass er nicht richtig funktioniert, bindet sich der Linux-basierte GDB-Server von J-Link an 127.0.0.1 und hört NUR auf Pakete mit diesem Ziel; Daher ist es erforderlich, mit iptables und Weiterleitungen herumzuspielen, um eine Verbindung von einem entfernten Computer herzustellen. Lächerlich; Segger muss sich zusammenreißen.

Ich stimme zu, dass jlink unter Linux ein königlicher Schmerz ist, aber ich denke, Sie können es mit LD_LIBRARY_PATH zum Laufen bringen. Sie können das Problem mit der Bindungsadresse auch beheben, indem Sie entweder eine SSH-Weiterleitung verwenden oder LD_PRELOAD oder ähnliches verwenden, um die Netzwerkaufrufe zu umbrechen und die Netzwerkadresse zu ändern. Aber es ist erbärmlich, wenn teure Tools schwieriger zu handhaben sind als billige wie ST-LINK, für die vollständig offene Treiber rückentwickelt wurden.

Ich verwende QtCreator und GNU Tools ARM Embedded. Funktioniert gut.

Vorteile:

  • Völlig kostenlos (und Open Source)
  • QtCreator ist eine großartige moderne C++-IDE mit funktionierender Codevervollständigung, Symbol-Hyperlinks, Refactoring usw.
  • QtCreator unterstützt Bare-Metal-Debugging (ja - Sie können Haltepunkte grafisch platzieren, Code schrittweise ausführen und Variablen untersuchen). (Erfordert eine JTAG- oder SWD-Verbindung zu Ihrer MCU, aber das war nicht annähernd so schwierig, wie ich dachte.)
  • Nicht Eclipse oder Eclipse-basiert.

Nachteile:

  • Baremetal-Unterstützung ist sehr neu und ich hatte einige Probleme damit - die schließlich mit der hervorragenden Hilfe des Autors auf der QtCreator-Mailingliste überwunden wurden.
  • Vielleicht etwas schwieriger einzurichten als Keil oder Code Red.

Wenn alles richtig eingerichtet ist, kann ich klicken, um einen Haltepunkt in meinem Code zu erstellen, und dann auf die Schaltfläche "Debuggen" klicken. Es wird in etwa 5 Sekunden kompilieren, flashen, ausführen und am Haltepunkt pausieren (und gleichzeitig Sie in Rage bringen, wenn Sie jemals zur Arduino "IDE" zurückkehren müssen).

Ich arbeite an einem Tutorial, wie man dies mit einem anderen ARM-Chip einrichtet - dem Cortex-M0-basierten nRF51822.

Es lohnt sich wahrscheinlich, etwas mehr Details darüber hinzuzufügen, was Ihnen gefällt, ein paar gute Funktionen usw., um die Antwort nützlicher zu machen.
Können Sie einen groben Überblick geben??

Ich verwende CooCox-Tools, es ist ausgezeichnet, aber kostenlos zu verwenden, es gibt keine Beschränkung der Codegröße. http://www.coocox.org/

Ich verwende arm-eabi-gcc und die dazugehörige Toolchain, die über das summon arm toolchain script installiert wird . Das Skript richtet die Umgebung für Bare-Metal-Arbeiten auf dem ARM ein. Es ist kostenlos und Open Source und all das und hat für mich zuverlässig funktioniert. Ich habe dafür auch IAR verwendet, und es ist sicherlich besser, da Sie damit viel freundlicheres Debuggen und Dinge auf IDE-Weise erledigen können, aber im Großen und Ganzen fühle ich mich mit gcc wohler, wenn auch aus keinem anderen Grund, weil ich müssen die Kosten niemandem gegenüber rechtfertigen.

(Ich habe nie wirklich herausgefunden, wie man gdb für irgendetwas verwendet, aber ich war es nie wirklich gewohnt, einen Debugger zu verwenden oder sowieso einen zur Verfügung zu haben, also bin ich mir nicht sicher, ob ich qualifiziert bin, diesen Teil zu beurteilen.)

Ich benutze Emprog ThunderBench . Es ist ausgezeichnet, wahrscheinlich das beste, das ich je benutzt habe.

Was mir am besten gefällt, ist, dass es gleichzeitig ein C/C++ ARM-Cortex-Compiler , ein Debugger und eine IDE ist.

Sieht aus wie eine weitere Kombination aus GCC und Eclipse.