ARM Cortex-M3-Entwicklungstools?


36

Ich habe vor, auf die NXP Cortex M3-Architektur umzusteigen, und bin ein wenig verloren zwischen den vorhandenen Entwicklungstools.

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 es scheint gut und nicht teuer. Jeder, der es ausprobiert hat oder davon weiß, kann mir weitere Informationen geben?


Es ist der Compiler, der mit den LPCXpresso-Karten geliefert wird, und verwendet gcc mit der Eclipse-IDE. Die Rowley CrossWorks-Tools sind viel besser.
Leon Heller

2
Inwiefern sind sie besser? Ich frage, weil ich die LPCXpresso-Platine habe und die Tools gut zu funktionieren scheinen. Ich frage mich, wie die anderen Tools besser sind.
John Burton

Können wir das nicht zu einem CW machen?
Stevenvh

Die meisten Möglichkeiten sollten 2012 überdacht werden, da Microsoft Visual Studio 2012 ARM als erstklassiges Ziel unterstützt.

Für kleine Projekte ist die Testversion des Keil-Compilers kostenlos.
Simon Richter

Antworten:


17

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

Ein Kollege, der in der Vergangenheit professionell mit ARM micros gearbeitet hat, sagte mir, dass er mit der IAR-Toolchain zufrieden sei, obwohl ich nicht weiß, wie hoch die Kosten sind und wie der Cortex-Support ist.


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

16

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

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

Lade die Toolchain herunter (jede Version reicht aus, aber ich benutze diese)

Installieren Sie Java Runtime Environment (für das verdammte Installationsprogramm)

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 Verzeichnis cross compiler bin 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.

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


Ich verwende die CodeSourcery-Tools auch in einer meiner Klassen mit dem Stellaris LM-3s6965-Entwicklungskit. Unser Wiki (Link zur Toolchain) ist hier: claymore.engineer.gvsu.edu/egr326/… (Siehe auch die Anweisungen zur Installation von MacOS X weiter unten.) Das Kit enthält eine zeitlich begrenzte Demo der GUI-Tools, jedoch den Befehl Linienwerkzeuge sind nicht begrenzt.
Kevin Vermeer

9

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

http://mbed.org/

Fünf Minuten nach dem Öffnen der Box hatte ich ein Beispiel für ein Blinky-Programm (die "Hallo-Welt" der verheirateten Welt), das folgendes lieferte:

#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 KB Flash und 32 KB RAM). Die Online-Entwickler-Tools 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 etc

Auch wenn ich viel Erfahrung mit eingebetteten Systemen habe (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC usw.), fand ich dies ein erfrischend einfaches System, mit dem ich mich mit ernsthaften Fähigkeiten auseinandersetzen konnte.

Nachdem ich anfangs auf einem einfachen Steckbrett damit gespielt hatte, kaufte ich ein Basisbrett von diesen Jungs: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Dieser verfügt über eine Vielzahl von E / A-Geräten (einschließlich einer kleinen OLED und eines 3-Achsen-Beschleunigungsmessers). Von der gleichen Stelle habe ich auch eine der LCPExpresso-Prozessorkarten gekauft, die billig ist, weniger Strom / Speicher als das MBED, aber perfekt für kleinere Jobs (hämmert immer noch den Mist von PIC / Atmega-Prozessoren). Die Basisplatine unterstützt sowohl den LCPExpresso als auch den MBED. Durch den Kauf der LCPExpress-Prozessorkarte erhielt ich auch einen beigefügten 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 Erfahrung mit dem MBED gesammelt haben.

In Bezug auf meine ursprüngliche Bemerkung, dass der MBED-Controller viel leistungsfähiger ist als der LPCExpresso-Controller, ABER die Bedienung und das Erlernen ist viel einfacher.


Es gibt auch Adam Green's exzellentes gcc4mbed-Projekt, mit dem Sie offline kompilieren können (auf Kosten eines größeren Codes): github.com/adamgreen/gcc4mbed
Kevin Chen

9

Code Sourcing Lite ist gut, oder verwenden Sie Emdebian. Wenn Sie keine vollständige C- oder GCC-Bibliothek benötigen, können Sie dies problemlos tun, aber es ist etwas schwieriger. Zuerst brauchen Sie keinen thumb2-fähigen Compiler, da thumb nach einer Toolchain sucht, die Ihnen gefällt.

llvm ist eine andere gute (benutze 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 die aktuelle gcc. Ich habe bei der Arbeit an meinem Daumenemulator (thumbulator.blogspot.com) einen Fehler auf der Daumenseite gefunden, der umgehend behoben wurde. Das Beste an llvm ist, dass es sich standardmäßig um einen Cross-Compiler handelt, für den keine zusätzliche Arbeit oder Bauerfahrung erforderlich ist. In den nächsten Jahren sehe ich sie tiefer in gcc hineinschneiden und gcc für das Cross-Compilieren / Embedded vorbeiführen.

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. ymmv. Wenn Sie ein kostenpflichtiges Tool verwenden müssen, würde ich mich nur für keil entscheiden, weil sie von Arm gekauft wurden und ein Teil des Pakets der rvct-Compiler ist. Natürlich ist Code-Sourcing auch dann eine bezahlbare Sache, wenn Sie die Einschränkungen der Lite-Version nicht einhalten oder sich für Support entscheiden. Als GCC hat es bei weitem die beste Unterstützung für alle Compiler. Vor nicht allzu langer Zeit, als ich in der Lage war, sie zu testen, und Armes Werkzeuge haben gcc in Bezug auf die Qualität des erzeugten Codes umgehauen. gcc ist auf und ab, einige Versionen von 3.x produzieren besseren Code als 4.x, sie scheinen sich nicht bei jeder Veröffentlichung zu verbessern, aber sie haben vor nicht allzu langer Zeit Unterstützung für thumb2 hinzugefügt, was die 3.x-Versionen nicht tun Ich werde 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? Zumindest von den Keil 8051-Werkzeugen war ich nicht beeindruckt. Sie fühlen sich wie Dinosaurier im Vergleich zu GCC-basierten Wettbewerben oder der LLVM / Clang-Suite, IMHO.
Morten Jensen

8

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

http://www.rowley.co.uk

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


1
Ich versuche die Testversion und ich denke, dass es meine Wahl sein wird. Es ist komplett gut dokumentiert und nicht sehr teuer (persönliche Lizenz für 150 $)
mba7

Das Rowley-Toolset ist großartig und der Support hervorragend.
Radian


5

Ich hatte ziemlich gute Erfolge mit IAR- Compiler / Debug-Ketten für meine ARM-Entwicklung. Sie bieten relativ stabile Entwicklungstools mit einer Embedded C ++ - Umgebung (die eher selten zu sein scheint). - Abhängig von Ihrer Codebasisgröße bieten sie auch hervorragende Hardware- / Software-KickStart-Kits mit codegrößenbeschränkten Versionen ihrer Tools an.


4

IAR ist exzellent, und wenn Sie kleine Projekte durchführen, gibt es eine kostenlose, auf 32 KB begrenzte Kickstart-Edition. Größen-Upgrades sind jedoch meiner Meinung nach ein bisschen teuer. Sie kommen auch mit Tonnen von guten Beispielprojekten, in der Regel mehrere für jede Prozessorfamilie.


2
Ja, sie haben meine Schule ziemlich gekürzt, sie war immer noch zu Tausenden, nach einer 95% igen Preissenkung.
Kortuk

4

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

Der einzige Teil, der nervt, ist der in die Platine integrierte J-Link-Adapter. Das Windows- und Linux-GDBServer-Programm von J-Link ist Closed Source. Schlimmer noch, die Linux-Version ist VIEL weiter hinten. Damit GDB funktioniert, muss ich ein Windows VMWare-Image ausführen, dessen einziger Zweck darin besteht, den GDBServer auszuführen (da der Linux-Server defekt ist).

Oh und obendrein funktioniert der Linux-basierte GDB-Server von J-Link nicht richtig. Er bindet sich an 127.0.0.1 und hört NUR Pakete mit diesem Ziel ab. Um eine Verbindung von einem Remote-Computer herzustellen, müssen Sie also mit iptables herumspielen und weiterleiten. Lächerlich; Segger muss sich zusammenreißen.


Ich bin damit einverstanden, dass jlink unter Linux ein großer 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 Netzwerkanrufe zu beenden und die Netzwerkadresse zu ändern. Es ist jedoch erbärmlich, wenn die Arbeit mit teuren Werkzeugen schwieriger ist als mit billigen Werkzeugen wie ST-LINK, für die vollständig offene Treiber rückentwickelt wurden.
Chris Stratton

4

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

Vorteile:

  • Völlig kostenlos (und Open Source)
  • QtCreator ist eine großartige moderne C ++ - IDE mit Arbeitscode-Vervollständigung, Symbol-Hyperlinks, Refactoring usw.
  • QtCreator unterstützt das Bare-Metal-Debugging (ja - Sie können Haltepunkte grafisch platzieren, Schrittcodes erstellen und Variablen überprüfen). (Erfordert eine JTAG- oder SWD-Verbindung zu Ihrer MCU, aber das war bei weitem nicht so schwierig, wie ich dachte.)
  • Nicht Eclipse oder Eclipse-basiert.

Nachteile:

  • Baremetal-Support ist sehr neu und ich hatte einige Probleme damit - schließlich mit der hervorragenden Hilfe des Autors auf der QtCreator-Mailingliste.
  • 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 kompiliert, flashen, ausführen und am Haltepunkt in ca. 5 Sekunden pausieren (und Sie gleichzeitig wütend machen, 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.


5
Es lohnt sich wahrscheinlich, ein bisschen mehr Details über das hinzuzufügen, was Ihnen gefällt, ein paar gute Funktionen usw., um die Antwort nützlicher zu machen.
PeterJ

Können Sie einen groben Überblick geben?
Scott Seidman


1

Ich verwende arm-eabi-gcc und die dazugehörige Toolchain, die über das Summon-Arm-Toolchain-Skript installiert wird . Das Skript richtet die Umgebung für Bare-Metal-Arbeiten am ARM ein. Es ist kostenlos und Open Source und das alles und hat für mich zuverlässig funktioniert. Ich habe auch IAR dafür verwendet, und es ist sicherlich besser, dass Sie damit viel benutzerfreundlicher 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 Sie müssen die Kosten niemandem gegenüber rechtfertigen.

(Ich habe nie wirklich herausgefunden, wie man gdb für irgendetwas einsetzt, aber ich bin 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, dieses Bit zu beurteilen.)


1

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

Am besten gefällt mir, dass es sich gleichzeitig um einen C / C ++ ARM-Cortex-Compiler , einen Debugger und eine IDE handelt.


1
Sieht aus wie eine weitere GCC + Eclipse-Kombination.
Chris Stratton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.