ARM Cortex (M3-M4): Hersteller- und Entwicklungs-IDE

Ich würde diesen Sommer gerne etwas MCU-Programmierung machen und habe bereits einige unglückliche Erfahrungen mit dem STM32F4 DISCOVERY-Board gemacht, insbesondere die Tatsache, dass es ohne (kostenlose) Software geliefert wurde, die eine unbegrenzte Nutzung ermöglichen würde (mehr als die 16KB oder 32KB von sowohl Keil als auch IAR).

Derzeit plane ich auch, ein paar ATTiny und ATMegas für kleinere Projekte zu kaufen, sowie einen ISP-Programmierer und einen JTAG-Debugger. Das würde mich in Bezug auf Kosten und IDE auf Atmel hinweisen.

Ich habe einen Teil dieser anderen Diskussion gelesen: ARM Cortex-M3-Entwicklungstools? und ich habe gesehen, dass ich etwas ausprobiert habe, auf das dort hingewiesen wurde.

Ich habe auch die CodeSourcery-Toolchain verwendet. Unter GNU/Linux war die einzige Bibliothek, die (für mich) funktionierte, Chibios . Ich habe Eclipse mit dem gnuarm-Plugin eingerichtet. Vielleicht habe ich es einfach nicht richtig gemacht (oder vielleicht habe ich nicht richtig verstanden, wofür es ist). Auch das Hochladen des Codes (4 KB) dauerte etwa 5 Minuten. Es war nicht so schlimm, aber das Debuggen war alles andere als stabil (viele Fehlermeldungen, die ich analysieren sollte, sobald ich Zeit habe: das ist vorerst ein sekundäres Problem).

Ich wollte Coocox ausprobieren, aber es ließ mich den Code nicht hochladen (ich brauchte die Hardware-Schnittstelle, nehme ich an, ihre Chap-JTAG-Schnittstelle).

Die Frage ist daher: Gibt es einen Hersteller, der tatsächlich eine Software anbietet, die kostenlos verwendet werden kann, ohne Einschränkungen hinsichtlich Codezeilen oder Codegröße? Im Moment habe ich nur Atmel gefunden, das jetzt Unterstützung für ARM und AVR in seinem Atmel Studio 6 basierend auf Visual Studio 2010 enthält. ST und NXP scheinen keine zu bieten. TI scheint sein CCStudio [Code Composer Studio] anzubieten, aber es hat auch Einschränkungen hinsichtlich der maximalen Größe des Codes, der produziert werden kann.

Ich hätte kein Problem damit, es unter GNU/Linux zu machen (eigentlich würde ich es vorziehen), aber ich hätte gerne, dass es darunter gut unterstützt wird.

Ich frage mich, ob die anderen Hersteller etwas mehr bieten: Die ARM-Architektur an sich (Cortex M3/M4 oder andere) sollte ziemlich Standard sein. Was eine MCU von einer anderen unterscheidet, sind die Peripheriegeräte um sie herum, wenn ich das richtig verstanden habe (und ich hoffe, dass ein anderer Hersteller als Atmel tatsächlich Software mitliefert, die nicht auf die Codegröße beschränkt ist)? Ich wäre besonders an Hochgeschwindigkeits-ADCs (und auch an der Frequenz von MCUs) interessiert, aber ich habe in einigen Katalogen gesehen, dass es sich von Hersteller zu Hersteller nicht so sehr ändert.

Nur eine Kuriosität: Wenn ich Daten von der MCU über serielle Kommunikation (z. B. USB) an den PC senden möchte, muss die MCU SEHR schnell sein, wenn ich Daten mit voller Geschwindigkeit übertragen möchte (z. B. 480 Mbit / s). : 480 MHz ?) ?

Ich bin offen für Vorschläge. Vielen Dank im Voraus.

USB-Full-Speed ​​beträgt 12 Mbit/s
Wollte USB 2.0 sagen (obwohl es logisch war). Ich suche [noch] nicht nach USB 3.0-Geschwindigkeiten. Was ist mit der USB-Geschwindigkeit im Vergleich zur MCU-Geschwindigkeit?
Haben Sie jemals ein Projekt entwickelt, das die 32-kB-Codegrößenbeschränkung des IAR-Compilers überschritten hat? Oder haben Sie nur das Gefühl, dass Ihr Projekt größer sein könnte?
Nur ein Gefühl. Ich würde lieber nicht auf 31 KB kommen und plötzlich etwas Code hinzufügen und an diesem Punkt den Compiler, die IDE und all das Zeug ändern.
Schon gelesen: siehe meinen ersten Beitrag.
Ich würde immer noch gerne hören, ob es jemand tatsächlich geschafft hat, es unter GNU/Linux mit Open-Source-Tools zum Laufen zu bringen. Das ist vielleicht doch die einfachste Lösung.
Die ST-Armteile funktionieren gut mit GCC, und es gibt mehrere Open-Source-Projekte, um mit den 10-Dollar-Eval-Boards von Stlink (buggy V1 und besser V2) (die Sie auch zum Programmieren Ihrer eigenen Ziele verwenden können) von Linux oder was auch immer zu sprechen. Ich würde sagen, ein 48K-Download dauert vielleicht 10 Sekunden. Der Haken bei der Verwendung von GCC ist, dass Sie sich etwas Zeit nehmen müssen, um Code zu übersetzen, den Sie vom Hersteller oder anderswo abholen, hauptsächlich um das Build-System zu organisieren.
@ChrisStratton: Gut zu wissen. Als ich es mit dem Stlink-Code-Tool probiert habe, hat es SEHR lange gedauert, ein 4KB-Projekt auf die MCU auf dem Entwicklungsboard zu übertragen. Könnten Sie bitte angeben, welche Open Source Sie verwenden, damit ich sie ausprobieren kann?

Antworten (5)

Auf die Gefahr hin, wie eine kaputte Schallplatte zu klingen...

PSoC5 ist Ihre Antwort! (Es ist erstaunlich, wie oft PSoC die Antwort ist)

PSoC5

Die PSoC5-MCU verfügt über einen ARM Cortex M3-Kern und eine Reihe weiterer brillanter Funktionen, die praktisch keine andere MCU hat. Im Gegensatz zu anderen MCUs macht das Einrichten der Peripheriegeräte so viel Spaß wie Eis essen, und Sie können in Verilog sogar Ihr eigenes erstellen! Die IDE ist ziemlich gut und völlig kostenlos.

PSoC-Ersteller

Das Development Kit ist großartig und voller Funktionen und wird mit dem Programmierer geliefert, den Sie für Ihre zukünftigen Projekte verwenden können. Es ist nicht zu teuer.

Haben Sie etwas dagegen, die "und eine Reihe anderer brillanter Funktionen, die praktisch keine andere MCU hat" zu klären? Ich sehe, dass der grafische Editor für die Hardwareschaltung nützlich sein könnte (können Sie bei Bedarf tatsächlich und einfach neue Teile erstellen?). Das Entwicklungskit ist ziemlich teuer für das, was ich tun werde (nur ein bisschen studieren, um ein paar kleine Projekte zu machen). Ich hätte gerne etwas mehr im Bereich von 50 $ - 100 $, wenn möglich.
@m.Alin: Können Sie eine bessere Alternative anbieten, wenn Sie so denken? Ich stimme zu, dass ihr Entwicklungsboard ziemlich teuer ist und ihre MCUs etwas teurer sind als TIs, aber ich würde gerne einige (bessere) Alternativen hören (falls vorhanden).
@ user51166 - Das Beste ist, dass Sie jedes Signal mit jedem Pin verbinden können, indem Sie es einfach in den Schaltplan zeichnen. Sie können auch die grundlegenden Komponenten, Gates, Flip-Flops usw. miteinander verbinden. Je nach gewähltem Gerät können Sie auch DACs, Operationsverstärker und Komparatoren verwenden. Es ist so nützlich, wesentliche Hardwareänderungen einfach durch Ändern der Firmware vornehmen zu können. Das hat mich mehr als einmal aus Schwierigkeiten herausgeholt.
@user51166 - Die andere großartige Sache ist, dass Sie eine große Freiheit bei den Peripheriegeräten haben, die Sie haben. Willst du 32 PWM-Kanäle? 10 SPI-Ports? 5 Quadratur-Decoder? Digitale Filter? Andere MCUs versuchen, eine Handvoll Peripheriegeräte bereitzustellen, von denen sie glauben, dass sie für den durchschnittlichen Entwickler nützlich sein könnten. PSoC gibt Ihnen alles, was Sie wollen.
Nun, viele SPI-Ports können manchmal nützlich sein (um einen Multiplexer zu vermeiden). Ich denke, ich kann mir ohne Probleme ein paar MCUs kaufen. Es ist nur so, dass das Entwicklungsboard so viel kostet!
Nun, Sie können immer Ihre eigene Leiterplatte für sie entwerfen und sie ziemlich billig herstellen lassen. Einige Leiterplattenhersteller bieten einen Prototypenservice an, der nur aus zwei Schichten besteht, ohne Lötstopplack. Günstig und schnell. Verwenden Sie das TQFP-Paket, und Sie können es selbst löten.
Keine so schlechte Idee. Obwohl ich denke, dass es mehr Versandkosten kosten wird als die Platine selbst. 2 Schichten sollten reichen. Aber für häufige kleine Projekte dachte ich, dass es besser wäre, mein Löt- und PCB-Labor zu Hause zu machen.

Eine Plattform mit kostenlosem Compiler/IDE fällt mir ein:

  • mBed-Plattform . Es basiert auf einem Cortex-M3-Mikrocontroller: NXP LPC1768 . Es hat einen Online - Compiler/IDE. Programmiersprache: C/C++

Als Nachteil hat der Mikrocontroller einen vorprogrammierten Bootloader, der etwas Platz im Programmspeicher beansprucht. Auf der anderen Seite müssen Sie kein zusätzliches Geld ausgeben, um einen Programmierer zu kaufen.

Ich hätte mir auch einen minimalen Platzverbrauch gewünscht. Daher ist ein Entwicklungsboard zum Experimentieren in Ordnung, aber ich möchte danach auf eine einzelne MCU umsteigen.

Ich bin mir nicht sicher, warum Maple-Entwicklungsboards nicht so beliebt sind, aber sie sind sehr einfach zu bedienen: LeafLabs
Sie packen einen ARM Cortex-M3, der mit 72 MHz läuft, mit vielen E / A und Peripheriegeräten. Das Beste ist, dass sie mit der Arduino IDE kompatibel sind, wodurch sie sehr einfach zu programmieren sind. Mir ist keine andere Einschränkung bekannt als die, auf die der Mikrocontroller selbst beschränkt ist. LeafLabs hat die Open-Source-Arduino-IDE so portiert, dass sie spezifisch für ihre Entwicklungsboards ist.

Geben Sie hier die Bildbeschreibung ein

Sie haben auch die Möglichkeit, mBed LPC1768 von NXP zu verwenden , wie m.Alin betonte. Es hat auch einen ARM Cortex-M3, der mit 96 MHz läuft. Ich habe es vorher benutzt und es ist ziemlich mächtig. Es hat eine Online-IDE und einen Compiler auf seiner Website, was bedeutet, dass Sie mit dem Internet verbunden sein müssen, wenn Sie es codieren und / oder das Board programmieren möchten. NXP bietet auch eine sehr nützliche API und jede Menge Referenzcode.

Geben Sie hier die Bildbeschreibung ein

Probieren Sie EM::Blocks aus. Es basiert auf Code::Blocks und funktioniert hervorragend. Ich hatte den Testcode, den sie auf der EMB-Site haben, in etwa 10 Minuten auf dem STM32F4Disco-Board zum Laufen gebracht, einschließlich der Installation, und ich bin ein kompletter Dummkopf. Es gibt keine Grenzen und verfügt über die meisten Funktionen von Keil und unterstützt alle aktuellen STM32Fxxx-Teile, die CooCox nicht unterstützt. Verschwende deine Zeit nicht mit Eclipse.

Ich habe mBed für das Prototyping und emBlocks verwendet, falls ich weiter graben muss - z. B. Offset zum Flash-Speicher hinzufügen, falls ich einen benutzerdefinierten Bootloader erstelle, der erfordert, dass mein Hauptprogramm mit einem bestimmten Offset gestartet wird.

Normalerweise verwende ich das STM32 Nucleo-Board, das mit dem STLink-Programmierer geliefert wird, um schnelle Prototypen zu erstellen. emBlocks haben auch einen netten Debugger, der meinen Lieblingsdebugger, den Segger JLink, unterstützt.

Mit mBed ist der Wechsel vom Nucleo-Board zum benutzerdefinierten Board ein Kinderspiel, schließen Sie einfach die SWD-Schnittstelle vom STM32 Nucleo-Board an, entfernen Sie alle Jumper und Sie können Binärdateien per Drag & Drop vom Computer auf Ihr benutzerdefiniertes Board über STLink ziehen. Im Falle von mBlocks können Sie die Programmierschnittstelle verwenden - sie kann den STLink erkennen.