Absolut günstigste (einfache) Möglichkeit, die Programmierung auf ARM-Mikrocontrollern zu starten [closed]

18

Ich möchte ARM-Prozessoren verwenden und von PICs migrieren, die ich zu lange verwendet habe. Es gab 8-Bit-Modelle für unter 1 US-Dollar, Programmierer für unter 10 US-Dollar, und ich war von der Einfachheit und den geringen Kosten des Einstiegs verwöhnt. Aber da ihre Leistung von einigen ARM-Chips zum gleichen Preis in den Schatten gestellt wird und die Closed-Source-Software satt ist, möchte ich den Wechsel vornehmen.

Ich würde es vorziehen, keine Entwicklungsplatinen zu kaufen und stattdessen mit einer billigen, generischen Breakout-Platine (1 US-Dollar) und einem Steckbrett zu arbeiten, bei dem alle externen Komponenten verwendet werden, die für den Start erforderlich sind.

Welche Möglichkeiten habe ich, um ARM-Chips auf diese Weise zu programmieren? Gibt es Programmierer wie den PICKit2, die über USB eine Verbindung zu einem PC herstellen und über eine einfache serielle Verbindung (wie ICSP) mit dem Chip programmieren? Wie groß sind die Unterschiede bei den Setups für verschiedene ARM-Hersteller, ARM-Versionen und einzelne Chips? (ST, Atmel ...) Braucht zB jeder Hersteller seine eigenen Compiler, Programmierer, IDE usw.? Oder gibt es gemeinsame Werkzeuge für alle?

EDIT: Okay, nach weiteren Recherchen, glaube ich, dass ich eine relativ billige Lösung gefunden habe, kann ein stm32-Entwicklungsboard mit DAPLINK-Firmware geflasht werden, aber ich glaube nicht, dass die offizielle Github-Firmware nativ funktionieren wird (all dies sind Spekulationen, bis ich bekomme mein stm32 dev board in der mail). Aber ich habe festgestellt, dass auf der im readbear mk20 enthaltenen daplink_usb-Platine ein stm32-Chip ausgeführt wird. Die Firmware muss geändert werden, damit sie mit dem 8-MHz-Kristall kompatibel ist. Ansonsten tauschen Sie den Kristall gegen einen 16-MHz-Kristall aus. Ich werde aktualisieren, sobald ich dies bestätigt habe, wenn mein Entwickler-Kit ankommt.

GITHUB REPO

Gute Forumressource hier .

Redbear Github Gabel

CL22
quelle
4
Es ist gut zu wissen, dass Sie mit 5 US-Dollar einen Raspberry Pi Zero erhalten, der von einem völlig normalen (und kostenlosen!) GCC unterstützt wird. Und wenn Sie den Schock überstanden haben, wie viel schneller ARM-Mikrocontroller sind, wird Sie das RPi erneut verblüffen. Das Hauptproblem IMO ist, dass kein ARM-Hersteller die Meldung unter dem RPi versteht. Sie werden mit ARM-Mikrocontrollern nicht mehr viel verdienen, aber es gibt noch viel mehr zu tun, wenn Sie einsatzbereite CPU-Module liefern.
MSalters
4
Manchmal ist es übertrieben, ein einsatzbereites CPU-Modul in einer eingebetteten Anwendung zu verwenden.
Bence Kaulics
3
@MSalters, RPI ist sperrig ... Ich brauche nur nicht die Extras, mit denen es kommt. Ich benötige Bare-Bones-Produkte auf sehr kompaktem Raum für eine schnelle Echtzeitverarbeitung. Außerdem verbraucht RPI VIEL mehr Strom als akzeptabel wäre.
CL22
3
Klar, aber die meisten Entwickler-Boards werden so sein. Eines der großartigen Dinge an der MCU-Entwicklung ist jedoch, dass die Hardware- und Softwareentwicklung jeweils bis zu einem gewissen Punkt isoliert werden kann.
Ignacio Vazquez-Abrams
2
Erwägen Sie eine kostengünstige Entwicklungsplatine mit integrierter USB-SWD-Brücke. Dadurch erhalten Sie Zugriff auf Debug-Funktionen sowie auf den Code-Download. Sie können den SWD-Zugriff auf jedes andere Ziel aufteilen, wenn es Ihnen passt.
Sean Houlihane

Antworten:

14

Die Produktreihen stm32F0 und stm32L0 haben Discovery-Boards für etwa 10 US-Dollar, und Keil wird eine IDE mit allen Funktionen für diese Produktreihe zum Nulltarif anbieten.

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

Außerdem verfügt ARM über ein White Sheet zur Migration von PIC auf Cortex M3, das möglicherweise hilfreich ist

Scott Seidman
quelle
7
+1 Beachten Sie jedoch auch, dass die meisten Discovery-Boards über einen integrierten STLINK verfügen, mit dem auch eigenständige Geräte durch Konfigurieren von Jumpern programmiert werden können.
Roger Rowland
@ RogerRowland - toller Punkt. Ich habe die On-Board-Programmierer bereits für meine eigenen Boards verwendet. Discovery ist im Allgemeinen eine großartige Angelegenheit. Ich wünschte, sie hätten Befestigungslöcher!
Scott Seidman
Würden Sie Nucleo oder Discovery empfehlen? Sie scheinen den gleichen Preis zu haben und beide verfügen über ST-LINK.
David
@ David, habe den Nucleo nicht benutzt, aber ich kann sagen, die Entdeckungen haben mir gute Dienste geleistet. Zu diesem Preis bekommen Sie jeweils einen (obwohl ich mit zwei Entdeckungen gehen würde!)
Scott Seidman
Dave Jones hat kürzlich ein EEVblog-Video über ein Entwicklungsboard für eine ARM32-MCU mit geringem Stromverbrauch gemacht . Vielleicht ist relevant.
Lorenzo Donati unterstützt Monica
7

Am einfachsten ist es,> 10.000 USD für einen voll funktionsfähigen Keil Pro-Compiler auszugeben. Kaufen Sie den JLINK-Debugger (weitere 1.000 USD, möglicherweise gibt es günstigere mit einigen Einschränkungen). IAR ist eine weitere teure Möglichkeit (Beispiele für STM32F7 Cortex M7-Prozessoren, die für die 30-Tage-IAR-Demo verwendet werden können)

Günstigster Weg: Laden Sie eine (kostenlose) GCC-ARM + Eclipse-Toolchain mit JLINK-Debugger-Plugins herunter und installieren Sie sie. Besorgen Sie sich einen JLINK-Klon für etwa 20 US-Dollar, der meiner Meinung nach einwandfrei funktioniert - für das Debuggen noch nicht getestet.

Für letztere gibt es detaillierte Anweisungen im Netz, die jedoch bestimmte Annahmen treffen. Erwarten Sie, dass Sie einen Tag oder mehr damit verbringen, es in Gang zu bringen, insbesondere unter Windows. Erwarten Sie nicht, dass Sie viele der für andere IDEs bereitgestellten Beispiele ohne Arbeit verwenden können. Beeindruckend ist, dass die kostenlose Toolchain "Packs" verwenden kann (derzeit "experimentell").

Es gibt andere Systeme wie Rowley Crossworks (die, glaube ich, gcc verwenden), 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 Codebedarf weniger als 32 KB beträgt, können Sie dasselbe Keil-System kostenlos verwenden (codebeschränkte Version). Beachten Sie jedoch, dass der Upgrade-Pfad einfach, aber ziemlich teuer ist. Beispielsweise werden die einfachen Ethernet-Beispiele für SAME70 nicht kompiliert. Gut, wenn Sie PICs oder AVRs durch Low-End-ARMs ersetzen, aber nicht so gut, wenn Sie mit ARM arbeiten, 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 zu beeinträchtigen 32K-Grenze, ich habe diesen bestimmten Winkel nicht untersucht).

Spehro Pefhany
quelle
7

Folgendes verwende ich:

  • STM32F103 "Minimum System Board" (siehe zB hier , Cortex-M3 - Kern ), läuft auf 3,3V oder USB - Stromversorgung ohne externe Komponenten, Klone kommen für etwa US $ 3 pro Person . Dies passt gut zu Ihrer Forderung, "mit einer billigen, generischen Breakout-Platine und auf einem Steckbrett direkt hineinzukommen".
  • Der ST-Link V2 USB-Programmier-Klon (sieht aus wie dieser ) kostet ab etwa 2 US-Dollar und unterstützt auch das On-Chip-Debugging.
  • EmBitz (ehemals Em :: Blocks) als IDE mit gcc Toolchain, US $ 0
  • STM CubeMX , um Hilfe bei neuen Projekten, US $ 0 die ersten Schritte
JimmyB
quelle
5

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

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

In Bezug auf die Software ist es normalerweise möglich, mit GCC und OpenOCD auf den meisten Chips zu arbeiten. Die Details sind für jedes Gerät leicht unterschiedlich. Profis verwenden häufig die Keil-Toolchain, die recht teuer ist.

Einige Geräte (z. B. der Kinetis-Serie) verfügen über USB-Bootloader: Das Gerät wird als Massenspeichergerät angezeigt, Sie laden eine BIN-Datei darauf herunter und drücken eine Taste. Einfachste Lösung, kein Programmierer erforderlich. Das Atmel AT91 verfügt über einen USB-Bootloader, der mit einem proprietären Protokoll namens SAM-BA arbeitet.

pjc50
quelle
die st discovery und nucleo boards sind mit einem stlink versehen und kosten 30% weniger als die eigenständigen stlink dongles. außerdem bekommst du mindestens eine mcu zum spielen. Es ist immer noch gut, einen stlink zu bekommen, und Sie können ihn mit openocd verwenden, um über swd eine Verbindung zu anderen st- oder nicht-st-cortex-m-Chips herzustellen.
old_timer
1
Interessant ist der Kenetisis-Chip, den ich ausprobiert habe. Ich kann ihn (noch) nicht verwenden, da er keinen Bootloader hat. Er ist nur swd-fähig und wird nicht über einen stlink verbunden. Ebenso enthält der samd21 keinen Bootloader mehr. Sie können einen hinzufügen, aber er befindet sich im Wesentlichen im Flash-Speicher der Anwendung und ist nicht unbedingt aus Versehen zu löschen. stm32s haben immer noch einen Bootloader wie nxp, vielleicht geht das auch weg ...
old_timer
3

Auf der IDE Front, Silicon Labs bietet Einfachheit Studio , das auf Basis von Eclipse . Bei GCC ist dies Standard.

Alle Starter-Kits, die sie verkaufen, sind mit einer integrierten Unterstützung ausgestattet, sodass der Einstieg relativ einfach ist.

Für die Programmierung wird ein Segger J-Link-Treiber für die Starter-Kits verwendet (kostenlos). Schließen Sie das Kit einfach an USB an und los geht's.

Atmel haben ihr Studio das auf der Visual Studio-IDE basiert und mit jedem der Atmel-Debugger verbunden werden kann. Dies wird auch mit GCC ausgeliefert.

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

Ich habe beides benutzt und obwohl die Dokumentation nicht perfekt ist (es ist nie perfekt), hat sie sicherlich ausgereicht, um mich relativ schmerzfrei zum Laufen zu bringen.

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

Peter Smith
quelle
2

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

Superkatze
quelle
1

Ich würde CooCox empfehlen - es ist dieselbe GCC + Eclipse-Kombination, aber es ist nicht erforderlich, die Toolchain manuell zu konfigurieren. Installieren Sie sie einfach und starten Sie die Codierung.

Flanker
quelle
Sieht gut aus, ich denke, Atmel wird nicht unterstützt. Wird der ST M7 Core unterstützt?
Spehro Pefhany
Scheint, Atmel wird 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 selten, aber immer noch eine gute Wahl für den Einstieg in die ARM-Programmierung (speziell mit STM32).
Flanker
1

Meiner Meinung nach spielen TI, NXP (bestehend aus NXP + Freescale) und ST eine wichtige Rolle in der Cortex-M-Welt. Insbesondere ST und NXP bieten ein wirklich wettbewerbsfähiges Tool für Newcomer Tutorials, Bibliotheken, Gerätetreiber, Tools & etc.

dann :

  1. mbed online compiler + ein mbed board
  2. Ein STM32-Discovery-Board (wie STM32F407discovery) + integrierter St-Link-Debugger + SPL- oder HAL-Framework (STM CUBE) + freie Lizenz keil IDE.
  3. Ein LPC Discovery Board + LPC-Link 2 Debugger + LPCOPEN Framework + LPCXPRESSO freie Lizenz IDE.

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

Mahmoud Hosseinipour
quelle
1
Die mcu-Bibliotheken und die Toolchain von ARM sind mbed- siehe [ developer.mbed.org] [developer.mbed.org]
Sean Houlihane,