Absolut billigste, (einfache) Art, mit der Programmierung auf ARM-Mikrocontrollern zu beginnen [geschlossen]

Ich möchte mit der Verwendung von ARM-Prozessoren beginnen und von PICs migrieren, die ich zu lange verwendet habe. 8-Bit-Modelle waren für unter 1 $ erhältlich, Programmierer für unter 10 $, und ich war verwöhnt von der Leichtigkeit und den niedrigen Kosten für den Einstieg. Aber da ihre Leistung von einigen ARM-Chips zum gleichen Preis in den Schatten gestellt wird und ich die Nase voll von Closed-Source-Software habe, möchte ich umsteigen.

Ich würde es lieber vermeiden, Entwicklungsboards zu bekommen, und stattdessen direkt mit einer billigen generischen Breakout-Leiterplatte (1 US-Dollar) und auf einem Steckbrett mit allen externen Komponenten beginnen, die für den Start unerlässlich sind.

Welche Möglichkeiten habe ich, ARM-Chips auf diese Weise zu programmieren? Gibt es Programmierer wie das PICKit2, die USB verwenden, um eine Verbindung zu einem PC herzustellen und über eine einfache serielle Verbindung (wie ICSP) mit dem Chip zu programmieren? Wie viel Unterschied in den Setups ist für verschiedene ARM-Hersteller, ARM-Versionen und einzelne Chips erforderlich? (ST, Atmel...) Braucht zB jeder Hersteller seine eigenen Compiler, Programmierer, IDE etc? Oder gibt es gemeinsame Tools für alle?

BEARBEITEN: In Ordnung, nach mehr Recherche glaube ich, dass ich eine relativ billige Lösung gefunden habe, ein stm32-Entwicklungsboard kann mit DAPLINK-Firmware geflasht werden, aber ich glaube nicht, dass die offizielle Github-Firmware nativ funktionieren wird (all dies ist Spekulation, bis ich erhalten Sie mein stm32-Entwicklungsboard per Post). Aber ich habe festgestellt, dass auf dem daplink_usb-Board, das im readbear mk20 enthalten ist, ein stm32-Chip läuft, sie haben die Firmware veröffentlicht, die eine Zeile ändern muss, um sie mit dem 8-MHz-Kristall kompatibel zu machen (detailliert im unten verlinkten Forumsbeitrag). Ansonsten den Quarz gegen einen 16 MHz tauschen. Ich werde aktualisieren, sobald ich dies bestätigt habe, wenn mein Entwicklungskit ankommt.

GITHUB-REPO

Gute Forum-Ressource hier .

Redbear Github-Fork

Es ist gut zu wissen, dass Sie für 5 $ einen Raspberry Pi Zero erhalten, der von einem ganz normalen (und kostenlosen!) GCC unterstützt wird. Und wenn Sie gerade den Schock überwunden haben, wie viel schneller ARM-Mikrocontroller sind, wird Sie das RPi wieder verblüffen. Das Hauptproblem ist meiner Meinung nach, dass kein ARM-Hersteller die Botschaft unter dem RPi versteht. An ARM-Mikrocontrollern wird man nicht mehr viel verdienen, aber durch die Lieferung von gebrauchsfertigen CPU-Modulen ist noch viel mehr zu machen.
Manchmal ist es übertrieben, ein gebrauchsfertiges CPU-Modul in einer eingebetteten Anwendung zu verwenden.
@MSalters, RPI ist sperrig ... Ich brauche einfach nicht die Extras, mit denen es geliefert wird. Ich brauche Bare-Bones-Zeug auf sehr kompaktem Raum für schnelle Echtzeitverarbeitung. Außerdem verbraucht RPI VIEL mehr Strom als akzeptabel wäre.
Sicher, aber die meisten Entwicklungsboards werden so sein. Aber eines der großartigen Dinge bei der MCU-Entwicklung ist, dass die Hardware- und Softwareentwicklung jeweils bis zu einem gewissen Punkt isoliert werden können.
@MSalters Das RPi ist wirklich eine ganz andere Plattform als ein Bare-Bones-Mikrocontroller.
@IgnacioVazquez-Abrams, das ist einer der Gründe, warum ich auch keine Entwicklerboards wollte :)
Erwägen Sie die Anschaffung eines kostengünstigen Entwicklungsboards mit integrierter USB-SWD-Bridge. Dadurch erhalten Sie Zugriff auf Debug-Funktionen sowie den Code-Download. Sie können den SWD-Zugang auf jedes andere Ziel aufteilen, wenn es Ihnen passt.
Wenn Sie auf einem Steckbrett bestehen, siehe hackaday.com/2013/10/15/… : obwohl natürlich der allererste Kommentar jemand sagt, dass er stattdessen ARM -> PIC gegangen ist.
@Jodes Bitte lesen Sie electronic.stackexchange.com/help/how-to-ask für Hilfe, um keine breiten Fragen zu schreiben. Danke
@laptop2d, was schadet diese Frage?
@Jodes - Diese Frage ist stark meinungsbasiert (sehen Sie sich nur die Antworten an), auch könnten die Informationen in einem Jahr ihren Wert verlieren, weil sich die Branche so schnell vorwärts bewegt.
@BenceKaulics, welche Technologie nicht? Antworten können überarbeitet, neue hinzugefügt werden. Tatsache ist, dass diese Antworten heute und für einige Zeit nützlich sind.
Ich habe neulich ein ARM-Entwicklungsboard für 3 $ gefunden. Und ich dachte, meins sei billig, als ich es für 10 Dollar bekam ...

Antworten (8)

Die stm32F0- und stm32L0-Linien haben Discovery-Boards, die etwa 10 US-Dollar kosten, und Keil wird eine voll funktionsfähige IDE für diese Linie zum Nulltarif bereitstellen.

Die Installationsanweisungen für Keil Free Pro MDK finden Sie HIER

Außerdem hat ARM ein weißes Blatt zur Migration von PIC zu Cortex M3, das Sie möglicherweise hilfreich finden

+1 Erwähnenswert ist jedoch auch, dass die meisten (alle) Discovery-Boards über einen integrierten STLINK verfügen, mit dem auch eigenständige Geräte durch Konfigurieren von Jumpern programmiert werden können.
@RogerRowland - toller Punkt. Ich habe die Onboard-Programmierer schon früher für meine eigenen Boards verwendet. Discovery ist im Allgemeinen eine großartige Linie. Ich wünschte, sie hätten Befestigungslöcher!
Würden Sie Nucleo oder Discovery empfehlen? Sie scheinen den gleichen Preis zu haben und beide verfügen über ST-LINK.
@david, habe das Nucleo nicht verwendet, aber ich kann sagen, dass die Entdeckungen mir gute Dienste geleistet haben. Holen Sie sich zu diesem Preis einen von jedem (obwohl ich mit zwei Entdeckungen gehen würde!)

Der einfachste Weg: Geben Sie > 10.000 USD für einen voll funktionsfähigen Keil Pro-Compiler aus und kaufen Sie den JLINK-Debugger (weitere 1.000 USD vielleicht - es gibt billigere mit einigen Einschränkungen). IAR ist eine weitere teure Möglichkeit (Beispiele werden für den STM32F7 Cortex M7-Prozessor bereitgestellt, der in der 30-tägigen IAR-Demo funktioniert).

Günstigster Weg - Laden Sie eine (kostenlose) GCC-ARM + Eclipse-Toolchain mit JLINK-Debugger-Plugins herunter und installieren Sie sie. Holen Sie sich einen JLINK-Klon für etwa 20 US-Dollar, der meiner Meinung nach in Ordnung sein wird - noch nicht getestet - zum Debuggen.

Für letztere gibt es im Netz ausführliche Anleitungen, die allerdings von gewissen Annahmen ausgehen. Erwarten Sie, dass Sie einen Tag oder länger damit verbringen, es zum Laufen zu bringen, insbesondere unter Windows. Erwarten Sie nicht, dass Sie viele der bereitgestellten Beispiele für andere IDEs ohne etwas Arbeit verwenden können. Beeindruckend ist, dass die kostenlose Toolchain „Packs“ verwenden kann (derzeit „experimentell“).

Es gibt andere Systeme wie Rowley Crossworks (das gcc verwendet, glaube ich), die finanziell weniger schmerzhaft sind. Atmel Studio ist ein anderes, aber ich hatte bittere Beschwerden von meinem sehr erfahrenen Firmware-Entwickler darüber (habe selbst nur kurz damit gespielt).

Wenn Ihr Code weniger als 32 KB benötigt, können Sie dasselbe Keil-System kostenlos verwenden (codebeschränkte Version), aber seien Sie sich bewusst, dass der Upgrade-Pfad einfach, aber ziemlich teuer ist. Beispielsweise werden die einfachen Ethernet-Beispiele für den SAME70 nicht kompiliert. Gut, wenn Sie PICs oder AVRs durch Low-End-ARMs ersetzen, aber nicht so toll, wenn Sie ARM verwenden, weil Sie tatsächlich mit LCD-Displays sprechen und komplexe Kommunikationsprotokolle ausführen müssen (möglicherweise können vorkompilierte Module enthalten sein, ohne die 32K-Grenze, ich habe diesen speziellen Winkel nicht untersucht).

Folgendes verwende ich:

  • STM32F103 "minimale Systemplatine" (siehe zB hier , Cortex-M3-Kern ), läuft mit 3,3 V oder USB-Stromversorgung ohne externe Komponenten, Klone kosten jeweils etwa 3 US-Dollar. Dies passt gut zu Ihrer Anforderung, "mit einer billigen generischen Breakout-Leiterplatte und auf einem Steckbrett direkt darauf einzugehen".
  • ST-Link V2 USB-Programmierer-Klon (sieht so aus ) , kostet ab etwa 2 US-Dollar und unterstützt auch On-Chip-Debugging.
  • EmBitz (früher Em::Blocks) als IDE mit gcc-Toolchain, 0 US$
  • CubeMX von STM , um den Einstieg in neue Projekte zu erleichtern, 0 US-Dollar

Der einfachste Anfang ist wahrscheinlich eines der Clone-Boards von Drittanbietern. Zufälliges Beispiel von ST . Das erfordert einen Programmierer, der das 'SWD'-Protokoll verwendet. ST stellt 'ST-LINK'-Marken her, ich bin mir nicht sicher, ob Sie ST-LINK-Geräte mit ST-Geräten verwenden müssen oder ob es wirklich generisch ist.

Eine Kombination aus SWD und JTAG spielt die Rolle von ICSP auf ARM-Systemen und bietet Ihnen Programmier- und Debug-Funktionen.

Softwaretechnisch ist es normalerweise möglich, mit GCC und OpenOCD auf den meisten Chips zu arbeiten. Die Details sind bei jedem Gerät etwas anders. Profis nutzen oft die recht teure Toolchain von Keil.

Einige Geräte (z. B. der Kinetis-Serie) haben USB-Bootloader: Das Gerät erscheint als Massenspeicher, man lädt eine BIN-Datei darauf herunter und drückt einen Knopf. Einfachste Lösung, kein Programmierer erforderlich. Atmel AT91 verfügt über einen USB-Bootloader, der mit einem proprietären Protokoll namens SAM-BA arbeitet.

Die ST Discovery- und Nucleo-Boards haben einen Stlink und kosten 30 % weniger als die eigenständigen Stlink-Dongles. Außerdem erhalten Sie mindestens eine MCU zum Spielen. Es ist immer noch gut, einen Stlink zu bekommen, und Sie können ihn mit openocd verwenden, um sich über swd mit anderen st- oder nicht-st-Cortex-m-Chips zu verbinden.
Interessant ist der Kenetisis-Chip, den ich ausprobiert habe. Ich kann ihn (noch) nicht verwenden, da er keinen Bootloader hat, nur swd ist und keine Verbindung über einen Stlink herstellt, brauche angeblich einen CMSIS-DAP. Ebenso enthält der samd21 keinen Bootloader mehr, Sie können einen hinzufügen, aber er befindet sich im Wesentlichen im Anwendungs-Flash-Speicherplatz und ist ziemlich trivial, um ihn versehentlich zu löschen. stm32s haben immer noch einen Bootloader, genau wie nxp, vielleicht verschwindet das auch ...

An der IDE-Front stellt Silicon Labs Simplicity Studio bereit , das auf Eclipse basiert . Es wird standardmäßig mit GCC geliefert.

Es gibt eine integrierte Unterstützung für alle Starter-Kits, die sie verkaufen, was den Einstieg relativ schmerzlos macht.

Die Programmierung verwendet einen Segger J-Link-Treiber für die Starterkits (kostenlos). Schließen Sie das Kit einfach an USB an und los geht's.

Atmel hat sein Studio , das auf der Visual Studio IDE basiert und sich mit jedem der Atmel-Debugger verbinden kann. Dies wird auch mit GCC geliefert.

Beide Anbieter haben zahlreiche (sehr zahlreiche) Beispiele, um ihre Geräte anzutreiben.

Ich habe beide benutzt und obwohl die Dokumentation nicht perfekt ist (sie ist es nie), war sie sicherlich ausreichend, um mich relativ schmerzlos zum Laufen zu bringen.

Viele der ST-Kits (und andere) sind mbed- fähig.

Cypress stellt PSOC-4200-basierte (ARM Cortex M0) Breakout-Boards mit einem DIP-40-Formfaktor her, die einen USB-basierten Programmieradapter in einem Break-off-Teil enthalten. Der Preis für das Breakout-Board und den angeschlossenen (abnehmbaren) Programmieradapter beträgt satte 3,99 US-Dollar von Digi-Key.

Ich würde CooCox empfehlen - es ist die gleiche GCC + Eclipse-Kombination, aber Sie müssen die Toolchain nicht manuell konfigurieren, installieren Sie sie einfach und beginnen Sie mit dem Codieren.

Sieht gut aus, ich denke, Atmel wird nicht unterstützt. Wird der ST M7-Core unterstützt?
Anscheinend wird Atmel nicht unterstützt, es gibt einige Bibliotheken für die STM32F7-Serie in Komponenten. Ich muss sagen, dass die Zukunft von CoIDE nicht klar ist - die Website ist chaotisch, Updates sind jetzt selten, aber immer noch eine gute Wahl für den Einstieg in die ARM-Programmierung (insbesondere mit STM32).

Meiner Meinung nach spielen TI, NXP (bestehend aus NXP + Freescale) und ST eine wichtige Rolle in der Welt von Cortex M, insbesondere ST und NXP bieten wirklich wettbewerbsfähige Tools für Neueinsteiger. Ein weiterer wichtiger Parameter ist die Popularität in der Open-Source-Community, die eine Menge verursacht Tutorials, Bibliotheken, Gerätetreiber, Tools & etc.

dann :

  1. mbed Online-Compiler + ein mbed-Board
  2. Ein STM32 Discovery Board (wie STM32F407discovery) + eingebauter St-Link Debugger + SPL oder HAL (STM CUBE) Framework + kostenlose Lizenz keil IDE.
  3. Ein LPC-Discovery-Board + LPC-Link 2-Debugger + LPCOPEN-Framework + LPCXPRESSO-IDE mit kostenloser Lizenz.

Nummer 2 & 3 sind eine bessere Wahl für die Oberstufe als für Hobby. Denken Sie auch daran, dass Sie mit der Verwendung einer kostenlosen Lizenz für professionelle Tools wie IAR, Keil oder sogar LPCXPRESSO weniger Schmerzen haben, wenn Sie in den professionellen Bereich wechseln.

Die mcu-Bibliotheken und die Toolchain von ARM sind mbed- siehe [ developer.mbed.org][developer.mbed.org]