Forum: Mikrocontroller und Digitale Elektronik Einfacher ARM für den Einstieg und Linux Toolchain


von Markus B. (markus_b571)


Lesenswert?

Hi,
ich möchte in die ARM Welt einsteigen und hätte gern eine Empfehlung für 
einen einfachen, kleinen und gut erhältlichen ARM. Ich meine jetzt nicht 
sowas wie einen Raspi Pi sondern eher ein Arduino

Die komplette Toolchain soll unter Linux laufen, auch die 
Programmierhardware.

Welchen Controller würdet ihr mir empfehlen?

Gruß
Markus

von Thomas W. (twust)


Lesenswert?

Markus B. schrieb:
> Ich meine jetzt nicht
> sowas wie einen Raspi Pi sondern eher ein Arduino

Irgendein STM32 Board vielleicht und dann https://elinux.org/STM32

: Bearbeitet durch User
von Markus B. (markus_b571)


Lesenswert?

Thomas W. schrieb:
> und dann https://elinux.org/STM32

Ich hab mich vielleicht etwas ungenau ausgedrückt. Ich meinte mit 
Toolchain für Linux einen Compiler, Software zum Programmieren, 
eventuell Debugger und sowas, kein Linux für den Controller selbst

von Stefan F. (Gast)


Lesenswert?

Schau mal, was ich dazu zusammen geschrieben habe: 
http://stefanfrings.de/stm32/index.html

von Programmierer (Gast)


Lesenswert?

Im Artikel STM32 ist alles erklärt. Da sind auch IDEs und Toolchains 
aufgelistet. Das ganze wurde doch schon 1000x durchgekaut, wer das schon 
wieder fragt war zu faul zum suchen.

von Markus B. (markus_b571)


Lesenswert?

Oder man ist von der Masse an Informationen einfach überfordert und will 
die Parameter erstmal eingrenzen. Es gibt ja nicht nur STM32 sondern 
auch LPC oder SAM.

Ich will erstmal ganz klein anfangen mit einem Cortex M0 anfangen, 
eventuell mit einem SSOP20 oder LQFP32 Gehäuse.

Und während ich das schreibe fällt mir ein, dass ich sogar seit ein paar 
Jahren ein paar Teensy LC Boards hier im Haus liegen habe. An die hab 
ich nicht mehr gedacht. Damit werde ich wohl anfangen.

von Olaf (Gast)


Lesenswert?

> Ich hab mich vielleicht etwas ungenau ausgedrückt. Ich meinte mit
> Toolchain für Linux einen Compiler, Software zum Programmieren,
> eventuell Debugger und sowas, kein Linux für den Controller selbst

Der Compiler heisst gcc. :-) Kannst du vielleicht irgendwo in deinem 
Repository fertig runterladen, kannst du dir aber auch einfach selber 
uebersetzen. Keine grosse Sache. Fuer den gdb gilt dasselbe.

Ausserdem wuerde ich dir empfehlen dir einen j-link zu kaufen. Laeuft 
unter Linux vollkommen problemlos und tiefenentspannt.

Als Entwicklungsumgebung ist alles von vi ueber emacs mit einem umweg 
ueber eclipse bis zu qt-creator verwendbar. Ist halt eine Frage des 
persoenlichen Geschmacks.

Olaf

von Markus B. (markus_b571)


Lesenswert?

Der J-Link ist ein guter Tipp, danke

Edit: uhh, teuer.

: Bearbeitet durch User
von Olaf (Gast)


Lesenswert?

> Edit: uhh, teuer.

Die EDU-Version gibt es fuer 50-60Euro. Das finde ich nicht teuer.
Ausserdem gibt es wohl auch noch eine Platinenversion die noch 
preiswerter ist aber dafuer langsamer.

Olaf

von Markus B. (markus_b571)


Lesenswert?

Super Tipp, danke

von Frank K. (fchk)


Lesenswert?

http://www.ti.com/tool/EK-TM4C123GXL
TI hat eine sehr gute SOftware-Unterstützung.

fchk

von Rudolph R. (rudolph)


Lesenswert?

PlatformIO und VSCode.
Sowas wie ein TrinketM0 ist auch erheblich umfangreich für den Einstieg.
Erst recht wenn man sich da durch die Funktions-Einheiten arbeiten will.

Wobei ich das mit der "ARM Welt" inzwischen etwas nüchterner sehe.
Beim Spielen mit dem Longan-Nano und seinem RISC-V habe ich schnell 
gemerkt, dass der Core als Anwender so ziemlich das letzte ist was einen 
interessiert.
Die Peripherie und die Unterstützung dafür sind viel interessanter.

Hier wird zwar oft, gerne und laut STM32 geschrien, aber weder gibt es 
den STM32, noch sind die hunderte Versionen allesamt so gut wie 
vollmundig angepriesen und am Ende muss man sehr genau hin schauen 
welcher Typ denn nun zur Anwendung passt.

Ich kann die STM32 insgesamt nicht gebrauchen, weil nicht einer von 
denen Automotive qualifiziert zu bekommen wäre.

Nach einem sehr kurzen Blick auf die HAL war ich da bei den STM32F4xx 
angenehm überrascht, nachdem mich das bei den STM32F1xx eher abgestossen 
hat.

Die STM32G441 finde ich zum Beispiel sehr interessant, nur habe ich 
gerade festgestellt, dass da zwar offenbar ein Bosch M_CAN für den 
CAN-FD verbaut ist, allerdings in einer heftig kastrierten Version.
Zwei RX-FIFOs mit je nur 3 Botschaften Tiefe und nur 28 Filter für 
11-Bit und 8 Filter für 29 Bit, dazu nur drei TX-Buffer - nee, dann 
lieber doch nicht.

Und so muss man schauen was man überhaupt braucht, STM32 ist nicht die 
Lösung wie es hier gerne lautstark propagiert wird weil ST gerne mit 
Eval-Boards um sich wirft.

von Programmierer (Gast)


Lesenswert?

Der GCC ARM Embedded ist eine GCC-basierte Toolchain für Cortex-M, die 
auch unter Linux geht. Hat gegenüber den bei den Distros mitgelieferten 
Paketen den Vorteil aktueller zu sein und ist praktisch die 
"Einheits-Version" welche von den meisten IDEs genutzt wird und mit der 
die meisten Projekte funktionieren; die Distributions-Versionen sind da 
teilweise abweichend:

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

IDEs wie das Atollic Studio für STM32 liefern das sowieso mit.

Cortex-M3 sind übrigens einfacher zu programmieren als Cortex-M0, da 
aktueller und leistungsfähiger.

Falls du dich für Assembler interessierst:
ARM-ASM-Tutorial

Rudolph R. schrieb:
> STM32 ist nicht die Lösung wie es hier gerne lautstark propagiert wird
> weil ST gerne mit Eval-Boards um sich wirft.

Das nicht, aber weil es viele Hobby Anwender nutzen gibt es sehr viele 
Einsteiger Informationen dazu. Wenn man sich damit in das ganze ARM 
Ökosystem eingearbeitet hat, ist es einfach auf beliebige andere ARM 
Prozessoren umzusteigen wenn man speziellere Bedürfnisse hat, wie eben 
Automotive.

von Olaf (Gast)


Lesenswert?

> Das nicht, aber weil es viele Hobby Anwender nutzen gibt es sehr viele
> Einsteiger Informationen dazu.

Ich persoenlich koennte euch ja die Silabs-Gecko empfehlen. Aber dann 
bekommen hier wieder alle nervoese Pickel auf der Unterlippe weil sie 
0.5er DFN mit exposed Pad auf ihre Testboards loeten muessen. :-D

Ich wuerde mal sagen das es vollkommen egal ist fuer welchen Typ man 
sich entscheidet. Aus der Sicht von Compiler, Jlink, gdb ist das 
vollkommen egal. Die Unterschiede liegen eher in der Peripherie und der 
Qualitaet der Dokumentation.

Die STM32 sind nur deshalb so beliebt weil die Firma jeden mit 
Demoboards bewirft der irgendwo im Wald steht und nach Entwickler 
aussieht. Bei anderen Firmen musst du mindestens mal 3min mit dem FAE 
reden. .-)

Olaf

von Programmierer (Gast)


Lesenswert?

Olaf schrieb:
> Die STM32 sind nur deshalb so beliebt weil die Firma jeden mit
> Demoboards bewirft der irgendwo im Wald steht und nach Entwickler
> aussieht. Bei anderen Firmen musst du mindestens mal 3min mit dem FAE
> reden. .-)

Für Privatpersonen durchaus ein Argument. Warum soll ich Leute 
überzeugen mir was zu verkaufen, wenn die Konkurrenz bei eBay zu finden 
ist...

Olaf schrieb:
> Die Unterschiede liegen eher in der Peripherie und der Qualitaet der
> Dokumentation.

Genau, und für STM32 gibt's einfach Unmengen an Tutorials.

In der Fahrschule bin ich auch mit einem hässlichen übermotorisierten 
SUV rumgefahren. So ein Auto würde ich mir nie kaufen, aber zum lernen 
war's gut.

von jones (Gast)


Lesenswert?

1bitsy + blackmagicprobe

von Olaf (Gast)


Lesenswert?

> Genau, und für STM32 gibt's einfach Unmengen an Tutorials.

Ich fand aber gerade die Dokumentation von ST nicht so toll weil sich 
immer alles auf mehrere PDFs verteilt und man jedesmal raetzeln muss ob 
der aktuelle Controller jetzt noch timer5 und uart3 enthaelt oder eher 
nicht. Da finde ich Renesas und auch Silabs viel besser wo man alles in 
einem File hat. Und von dem unheimlich kranken gebastel das ST einem als 
Softwarelibarie aufdraengt rede ich da noch gar nicht. Aber das muss 
(und sollte) man ja auch nicht nutzen.

Olaf

von Olaf (Gast)


Lesenswert?

Da wir ja hier gerade so nett plaudern...

Hat hier schonmal jemand Erfahrungen mit einem PSOC4 unter Linux 
gemacht?
Damit wollte ich mich auch schon immer mal beschaeftigen, allerdings
ist mir noch nicht so ganz klar wie ich unter Linux ohne die 
Originalumgebung den analogen Kram im IC konfiguriere. (Hab ein 
CY8CKIT-049-42xx PSoC4 rumliegen)

Olaf

von Nucer (Gast)


Lesenswert?

Ich mag die Nucleos von STM, lassen sich einfach an den USB-Port stecken 
und mit den Toolchains und IDEs von ST kann man sofort loslegen.

Man ist dann eben nicht der große Held weil man nicht 4 Wochen harte 
Arbeit gebraucht hat um das erste Programm auf den µc zu kriegen.

Und niemand hindert dich daran auch damit zu frickeln und mit jeden Bit 
auf der Kiste schon mindestens 10 mal Geschlechtsverkehr gehabt zu 
haben.

von CortexUser (Gast)


Lesenswert?

Schau mal unter http://www2.keil.com/mdk5/selector

siehe unten

Dort gibt es für die sonst 5000,-€ teure IDE kostenlose
Entwicklungsumgebungen für verschiedene Drivate.

Mit einem Eval-Board wo auch der Debugger drauf ist, kann
man schnell starten und hat kurzfristig Erfolgserlebnisse.

----------------------------------------------------------

https://platformio.org/

Platformio (Visual Studio Code + mbed + evt. STM32) ist eine
2. relativ einfache Möglichkeit.
Allerdings auch nicht ganz unkompliziert, wenn man tiefer einsteigt
und sehr volatile was Änderungen und Doku betrifft. Man kann dort
schon viel Zeit investieren.

Ingesamt erfordert es aber ein erhebliches Investment in
Zeit und Wissensaufbau.

-----------------------------------------------------------------

MDK for Holtek Cortex-M0+:
The MDK for Holtek Cortex-M0+ is a license paid by Holtek. It is 
free-to-use for software developers working with Holtek devices based on 
the Arm Cortex-M0+ cores.

MDK for Nuvoton Cortex-M0/M23:
The MDK for Nuvoton Cortex-M0/M23 is a license paid by Nuvoton. It is 
free-to-use for software developers working with Nuvoton devices based 
on the Arm Cortex-M0 and Arm Cortex-M23 cores.

MDK for STMicroelectronics STM32F0, STM32G0, and STM32L0:
The MDK for STMicroelectonics STM32F0, STM32G0, and STM32L0 is a license 
paid by STMicroelectronics. It is free-to-use for software developers 
working with STM32 devices based on the Arm Cortex-M0 and Arm Cortex-M0+ 
cores

von Olaf (Gast)


Lesenswert?

> Mit einem Eval-Board wo auch der Debugger drauf ist, kann
> man schnell starten und hat kurzfristig Erfolgserlebnisse.

Hast du das subject gelesen?

Olaf

von Stefan F. (Gast)


Lesenswert?

Markus B. schrieb:
> Ich will erstmal ganz klein anfangen mit einem Cortex M0 anfangen

http://stefanfrings.de/stm32/stm32l0.html

> Der J-Link ist ein guter Tipp, danke....Edit: uhh, teuer.

Schau Dir meine Empfehlungen auf der Seite an. Die sind (ab 2,50€) nicht 
teuer.

von W.S. (Gast)


Lesenswert?

Markus B. schrieb:
> ich möchte in die ARM Welt einsteigen und hätte gern eine Empfehlung für
> einen einfachen, kleinen und gut erhältlichen ARM.

Was verstehst du unter "einsteigen"? Dieses Wort ist eigentlich extrem 
unklar, wird aber von vielen Leuten gebraucht, wenn sie eine IDE und 
eine Toolchain und ein Hersteller-Lib suchen, um ein wenig mit dem 
Programmieren in C und Debuggen per SWD/JTAG anfangen wollen.

Also schreib erstmal, was genau du denn anzielst.

Ich kann ja verstehen, daß du für den Anfang nicht viel Geld ausgeben 
willst und daß du auch nicht einen zu umfänglichen und damit 
unübersichtlichen Chip haben willst.

Aber wie gesagt, der Anfang ist anders, denn der geht normalerweise von 
irgend einer Idee aus, also von etwas, das du basteln willst. Und daher 
frag dich zuvörderst, was du für deine Ideen an Peripherie des 
Controllers benötigst und suche dir eine Reihe dafür geeignet 
erscheinender µC aus. Das wäre der 1. Schritt von allem.

Wenn du dafür noch keinerlei Idee hast, dann gebe ich dir hier mal eine:
Stell dir vor, du machst eine Frontplatte für ein Gerät, wo du folgendes 
drauf hast:
- ein monochromes (billiges) Grafik-LCD mit 128x64 Pixeln
- einen Drehgeber
- zwei Tipptasten
- und alle anderen Controller-Anschlüsse sind an Pins oder 
Steckverbinder geführt.

Der 2. Schritt wäre, daß du dir die Referenzmanuals deiner ausgesuchten 
µC anschaust. Zum allerersten, ob du mit diesem Manual klar kommst oder 
eher nicht und danach, wie das Einstellen der Pin-Funktionalität des µC 
aussieht, also wie man festlegt, ob so ein Pin nun Port oder UART oder 
Counter-Input oder sonstwas sein soll. Bei manchen geht das easy, bei 
anderen ist das eher eine Kröte, die man nur ungern schluckt.

So. Und wenn du bis hierher durchgehalten hast, dann ist der Rest keine 
große Hürde mehr.

W.S.

von Markus B. (markus_b571)


Lesenswert?

Ich hab viel mit AVR gemacht, also sind Mikrocontroller nicht neu für 
mich.

Ein spezielles Projekt habe ich noch nicht. Ich will nur erstmal mit ein 
paar Pins wackeln und ein paar Daten zum PC senden können.

von Johannes S. (Gast)


Lesenswert?

Markus B. schrieb:
> Die komplette Toolchain soll unter Linux laufen, auch die
> Programmierhardware.
>
> Welchen Controller würdet ihr mir empfehlen?

Als Toolchain würde ich mbed-cli empfehlen, dann kannst du die ganze 
Palette von M0...H7 nutzen.
Das mbed-cli ist Multi Kulti und läuft unter Windows, Linux und MacOS. 
Zum Einstieg:
https://github.com/ARMmbed/mbed-os-example-blinky

Vorletzte Woche habe ich das mal zum Spaß auf einem RPi4 installiert, 
läuft auch. Obwohl, etwas unter Linux zu installieren ist nicht wirklich 
Spaß... Ich musste mehrmals Phython Module von Hand installieren. Ein 
requirement sind die ARM cmsis packs, da fand jemand es toll die in Rust 
zu schreiben. Für den RPi habe ich die nicht als binary gefunden und 
selbst nach einem 'sudo apt-get install rust*' und stundenlangen 
compilierorgien gabs noch Fehler. Aber diese packs waren nicht wirklich 
nötig und 'mbed compile' funktionierte.

Mit dem aktuellen mbed-os kann man auch wieder die 'kleinen' µC benutzen 
(für meine LPC824 kompiliert es auch wieder), das eingebaute RTX RTOS 
ist optional und kann einfach (ok, das config system ist nicht soooo 
einfach) abgeschaltet werden. Nach oben hin ist Support für die 
Standardschnittstellen, Ethernet, USB, Filesystem(e), Eventqueues, viel 
Funk Gedöns uvm drin.

von Bauform B. (bauformb)


Lesenswert?

Johannes S. schrieb:
> Als Toolchain würde ich mbed-cli empfehlen, dann kannst du die ganze
> Palette von M0...H7 nutzen.

Der GCC und die binutils unterstützen natürlich die ganze Palette. Je 
mehr "Toolchain" drum herum gepackt wird, umso eingeschränkter wird die 
Palette?

> Obwohl, etwas unter Linux zu installieren ist nicht wirklich Spaß...

Naja, kommt stark drauf an, was und aus welcher Quelle man installiert. 
Unter Debian ist ein Original-Debian-Paket vollkommen stressfrei, jede 
bessere Distributionen sollte das genauso gut können.

Besonders interessant ist archlinux. Deren Pakete sind sehr aktuell, 
auch in 32-Bit verfügbar und das Beste: man kann die 
arm-none-eabi-Pakete einfach in irgendein Verzeichnis (z.B. /opt/arch/) 
entpacken und loslegen, ohne Installation, auf jedem Linux (na gut, nur 
mit Debian getestet).

Also, mir scheint, manche Leute machen sich das Leben freiwillig schwer.

von Johannes S. (Gast)


Lesenswert?

'toolchain' ist für mbed-cli natürlich nicht die richtige Bezeichnung, 
hätte ich gleich in Anführungszeichen setzen sollen. Buildsystem trifft 
es eher. Quelle in ein Verzeichnis packen, 'mbed compile' und fertig, 
kein Stress mit makefiles.
archlinux: läuft sowas auch auf dem RPi? Ja, wenn Pakete binär für die 
Zielplattform vorhanden sind ist apt auch bequem. Aber wehe wenn nicht. 
Windows: Installer starten, fertig.

von Markus B. (markus_b571)


Lesenswert?

Ich habe mir gerade Manjaro KDE auf einem Odroid N2 installiert. 
arm-none-eabi-gcc gibt es da direkt aus den Paketquellen.

Mal schauen, ob ich von da auch ein Programm auf den Teensy LC bekomme

Danke schonmal für die Hilfe

von Olaf (Gast)


Lesenswert?

> Naja, kommt stark drauf an, was und aus welcher Quelle man installiert.
> Unter Debian ist ein Original-Debian-Paket vollkommen stressfrei, jede
> bessere Distributionen sollte das genauso gut können.

Das ist sicherlich so. Allerdings kommen hier ja Leute zusammen die 
einen Mikrocontroller <blink> programmieren <blink off> wollen. Da 
sollte man doch eine gewisse Minimalkompetenz voraussetzen koennen. 
Damit ist es auch kein Problem sich den gcc, die libs und den gdb 
passend zur Zielplattform selber zu uebersetzen. Ich hab das z.b gemacht 
weil ich ein halbes dutzend unterschiedlicher Zielplattformen mit 
demselben Compiler bedienen moechte. (SH(A),ARM,M16C, R8C,68k) Man muss 
es nicht, aber man kann es und es ist kein Problem.

Probleme treten erst auf wenn man die schoenen Schickimickittools wie 
z.B Eclipse und aehnliches nutzen will die darauf aufbauen. Die sind 
naemlich neue und wurden von Leuten geschaffen die sich im 
Informatikstudium gelangweilt haben. Ab da braucht es ploetzlich fuer 
jedes kleinste Tool eine eigene Programmiersprache, am besten noch in 
einer speziellen Version, irgendein make-derivat oder was ganz anderes, 
wenigstens drei Scriptsprachen und lustige Pakete die bei der 
Installation aus dem Netz runtergeladen werden wollen am besten noch 
jede Woche auf einem anderen Versionsstand. Ab da kann es dann kacke 
werden wenn man Linux nicht auf Gurulevel drauf hat.

Aber keine Angst. Fuer Dummen oder Verzweifelten unter euch, man drueckt 
das natuerlich netter aus, gibt es jetzt Linux als monolitischen 
schreibgeschuetzten rundum Sorglosklotz. :-) (siehe aktuelle c't von 
morgen)

Olaf

von Np R. (samweis)


Lesenswert?

Johannes S. schrieb:
> kein Stress mit makefiles
Was genau ist jetzt stressig an makefiles?

Johannes S. schrieb:
> Ja, wenn Pakete binär für die
> Zielplattform vorhanden sind ist apt auch bequem. Aber wehe wenn nicht.
Wenn es kein Binärpaket ist, dann ist es wohl ein Quellpaket.
Und wo ist dann das Problem?

Wäre es eventuell möglich, dass Deine Probleme mit Linux 
Software-Installationen daher rühren, dass Du versuchst Software mit der 
Brechstange zu installieren statt mit den dafür vorgesehenen Tools?

von Stefan F. (Gast)


Lesenswert?

Markus B. schrieb:
> Ein spezielles Projekt habe ich noch nicht. Ich will nur erstmal mit ein
> paar Pins wackeln und ein paar Daten zum PC senden können.

Siehe http://stefanfrings.de/mikrocontroller_buch2/index.html

von Stefan F. (Gast)


Lesenswert?

Johannes S. schrieb:
> archlinux: läuft sowas auch auf dem RPi?

Warum fragst du das, willst du auf dem Raspberry Pi die Entwickler-Tools 
laufen lassen? Dafür ist das Ding nicht gedacht, lass das mal besser.

Arbeite lieber mit einem PC oder Laptop, meinetwegen auch in einer 
virtuellen Maschine oder dem Linux Subsystem von Microsoft.

von Np R. (samweis)


Lesenswert?

Markus B. schrieb:
> Die komplette Toolchain soll unter Linux laufen, auch die
> Programmierhardware.
gcc-arm-none-eabi gibt's in jeder größeren Distribution.
Wenn einem die Version der Distribution nicht neu genug ist (warum 
eigentlich, wenn man noch nicht weiß, mit welchem Controller man 
überhaupt arbeiten will?), dann
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

Danach wird's dann konfessionsabhängig. Je nach Deiner Glaubensrichtung 
make, eclipse, libopencm3, ChibiOS, FreeRTOS, ... bis hin zu den 
Hersteller-abhängigen LPCXpresso, CubeMX,...  (wobei das eine jeweils 
das andere nicht ausschließt, es sei denn man ist vernagelt.)

Markus B. schrieb:
> Welchen Controller würdet ihr mir empfehlen?
Den, der zu Deiner Anwendung passt.

Wenn's ums Geld geht, glaube ich nicht, dass man unter ein China STM32 
Bluepill und einen STLink Clone drunter kommt. Oder auch ein STM32F0 Dev 
Board.
Auch bei z.B. TME, Reichelt, usw. und kleinen Stückzahlen sehe ich eher 
STM32 (z.B. die G0) am unteren Preisrand.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Warum fragst du das, willst du auf dem Raspberry Pi die Entwickler-Tools
> laufen lassen? Dafür ist das Ding nicht gedacht, lass das mal besser.

Na nicht aus Armut, einen Arbeits PC hAbe ich schon noch. Den RPi hatte 
ich gerade installiert und dachte das cli geht mal eben so. Einen GCC 
8.x gibt es, aber eben nicht alle Python libs. Pip sucht binärfiles und 
kompiliert selber wenn nötig. Nur die Rust Quellen Arm-pack-Manager 
waren eine zu harte Nuss.

WSL benutze ich auch, auf dem RPi wollte ich da einfach Sachen unter 
Linux testen. Der 4er ist sehr fix, auch mit VSCode als Editor/IDE kann 
man brauchbar arbeiten.

Aber mir ging es nicht um Linux, sondern darum das Mbed eine sehr gute 
Alternative ist.

von Bernd K. (prof7bit)


Lesenswert?

Thomas W. schrieb:
> Irgendein STM32 Board

Er sagte einfach, und da empfiehlst Du den ARM mit der verknotetsten 
verkorkstesten Peripherie auf diesem Planeten überhaupt!

von Np R. (samweis)


Lesenswert?

Bernd K. schrieb:
> da empfiehlst Du den ARM mit der verknotetsten
> verkorkstesten Peripherie auf diesem Planeten überhaupt!

Ich vermute, dem TO wäre mehr damit geholfen, wenn Du einen 
unverknoteten Controller mit völlig unverkorkster Toolchain und 
Linux-kompatibler Programmierhardware vorschlügest, der leicht und 
günstig in kleinen Stückzahlen aufzutreiben ist.

von Bernd K. (prof7bit)


Lesenswert?

Np R. schrieb:
> Bernd K. schrieb:
>> da empfiehlst Du den ARM mit der verknotetsten
>> verkorkstesten Peripherie auf diesem Planeten überhaupt!
>
> Ich vermute, dem TO wäre mehr damit geholfen, wenn Du einen
> unverknoteten Controller mit völlig unverkorkster Toolchain und
> Linux-kompatibler Programmierhardware vorschlügest, der leicht und
> günstig in kleinen Stückzahlen aufzutreiben ist.

Kinetis

von Markus B. (markus_b571)


Lesenswert?

Leute, ich steige gleich auf Risc-V um wenn ihr euch wegen ARM die Köppe 
einschlagt

PS: günstig ist im übrigen nicht so entscheidend. Es ging mehr um 
einfach und leicht verfügbar. Mich haben nur die J-Link Preise von 250€ 
aufwärts überrascht

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Ja, beim RISC-V ist die Qual der Wahl erträglich :)
STM32 funktionieren trotzdem und haben viel Peripherie, ich denke bei 
ADC, Grafik und Speichermenge sind die weit vorne. Wenn du lieber die 
Register selber ansprechen möchtest finde ich die LPC zB auch deutlich 
freundlicher. Aber hinter einer Abstraktionsschicht sind sie alle 
gleich.
Bei den Herstellern findet man auch Übersichten zu den Familien.

von Bauform B. (bauformb)


Lesenswert?

Markus B. schrieb:
> günstig ist im übrigen nicht so entscheidend. Es ging mehr um
> einfach und leicht verfügbar. Mich haben nur die J-Link Preise von 250€
> aufwärts überrascht

Dann schau mal da:
https://github.com/blacksphere/blackmagic/wiki
https://1bitsquared.de/products/black-magic-probe

von W.S. (Gast)


Lesenswert?

Markus B. schrieb:
> Mich haben nur die J-Link Preise von 250€
> aufwärts überrascht

Tja. So isses eben.

Da mußt du dich eben entscheiden:

Entweder..
.. du hältst den Ball flach und wählst dir einen µC mit eingebautem 
Bootlader aus (LPCxxx und STM32Fxxx) und kannst dann mit einem popligen 
USB/Serial-Konverter für zwofuffzig deinen Chip programmieren, aber 
nicht per SWD debuggen

oder..
.. du greifst in deine Haushaltskasse und kaufst einen J-Link in der 
Amateur-Ausführung (J-Link edu), die zwar baugleich ist zum normalen 
J-Link, aber weniger an Lizenzen enthält (da du nicht Krösus heißt, 
wirst du den 'richtigen' J-Link garantiert nicht kaufen)

oder..
.. du greifst zu einem herstellerabhängigen Ding (ST-Link, Nu-Link, wie 
das Ding bei LPC Expresso heißt hab ich vergessen).

Jede von all diesen Geschmacksrichtungen hat ihre Nachteile.

Lies ein bissel in diesem Forum:
Die Mehrzahl der Leute brauchen den Debugger häufiger als alles Andere, 
die programmieren halt mit dem Debugger und sind immer wieder 
überrascht, was der Compiler aus ihrer Quelle gemacht hat. Wenn das 
deiner Intention nahe kommt, dann kauf dir den J-link.

Wenn du es dir hingegen zutraust, wenigstens einigermaßen fehlerfreien 
Code zu schreiben, ohne per Debugger nachschauen zu müssen UND das 
ReferenzManual lesen kannst, dann reicht auch die Bootladerversion als 
die billigste Variante, aber damit sind Freescale-µC (Kinetis) und 
Nuvoton und andere außen vor.

W.S.

von Olaf (Gast)


Lesenswert?

> Warum fragst du das, willst du auf dem Raspberry Pi die Entwickler-Tools
> laufen lassen? Dafür ist das Ding nicht gedacht, lass das mal besser.

Hm..warum eigentlich nicht. Ich weiss jetzt nicht ob es die 
Jlinksoftware fuer Arm gibt, wenn man vom Raspberry flashen kann sehe 
ich keinen Grund es nicht zutun. Was mich an den Raspberry fasziniert 
ist das man fuer ein Taschengeld eine Kiste bekommt die in jeder 
Beziehung besser ist als der teure Desktopcomputer mit dem ich damals 
mit Linux angefangen habe. Okay, auf Eclipse sollte man vermutlich aus 
Geschwindigkeitsgruenden verzichten. :)


> .. du greifst in deine Haushaltskasse und kaufst einen J-Link in der
> Amateur-Ausführung (J-Link edu), die zwar baugleich ist zum normalen
> J-Link, aber weniger an Lizenzen enthält (da du nicht Krösus heißt,
> wirst du den 'richtigen' J-Link garantiert nicht kaufen)

Hast du schonmal mit dem J-Link edu unter Linux gearbeitet? So wie ich 
das sehe ist die einzige Einschraenkung das jflash nicht unterstuetzt 
wird und das kann man ersetzen.

Ich hab zum Beispiel das hier in meinem Makefile stehen:

download:
        JLinkExe -if SWD -speed 1000  -commanderscript ./burn.jlink

more burn.jlink
device EFM32GG230F1024
speed 4000
loadbin LCD_Tester.bin 0
r
g
exit 0

Damit reicht dann ein make download und der Controller ist gebrannt.
DEbuggen mit gdb geht auch.

Aus Eclipse raus geht auch alles.

Uebergabe von Daten (printf) ueber den Debugger funktioniert.

Ich hab mir sogar mal ihr Tool fuer Linux nach programmiert mit dem ich 
zur Laufzeit Variablen beobachten kann.

Geht alles mit dem EDU problemlos. Wenn man langweile haette koennte man 
jflash vermutlich relativ schnell nachprogrammieren. :-D

Olaf

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

W.S. schrieb:
> Die Mehrzahl der Leute brauchen den Debugger häufiger als alles Andere,
> die programmieren halt mit dem Debugger und sind immer wieder
> überrascht, was der Compiler aus ihrer Quelle gemacht hat. Wenn das
> deiner Intention nahe kommt, dann kauf dir den J-link.
>
> Wenn du es dir hingegen zutraust, wenigstens einigermaßen fehlerfreien
> Code zu schreiben, ohne per Debugger nachschauen zu müssen UND das
> ReferenzManual lesen kannst, dann reicht auch die Bootladerversion als
> die billigste Variante, aber damit sind Freescale-µC (Kinetis) und
> Nuvoton und andere außen vor.

Ah, der Narzisst mit Profilneurose ist wieder da.
Guck doch mal in den USB Thread, da wurden mithilfe eines Debugegrs 
einige Bugs in deinem USB VCP Code gefunden ;)
-> Beitrag "Re: USB CDC von Stefan Frings und WS"
Also halt dich erstmal selber an deine eigenen Regeln bevor du mal 
wieder andere beschimpfst!

von Frank K. (fchk)


Lesenswert?

Markus B. schrieb:
> Leute, ich steige gleich auf Risc-V um wenn ihr euch wegen ARM die Köppe
> einschlagt

Dann mach das doch.

Im Ernst: Du wirst nur ganz selten in eine Situation kommen, wo Du den 
Prozessorkern unter Dir merkst. Ob Du jetzt nun ARM, MIPS, Risc-V oder 
PPC programmierst, ist eigentlich egal. Der gcc deckt das alles 
weitgehend zu.

Von daher kannst Du genauso gut einen PIC32MX250F128B (MIPS M4K Kern mit 
50 MHz) im SDIP28 nehmen, dazu einen PICKIT3-Clone vom Chinamann für 
20€, MPLABX, XC32 und Harmony vom Microchip-Server ziehen, und bist 
sofort im Geschäft. Läuft hervorragend unter Linux. Ja, da gibts die 
Ideologen, die Dir sagen wollen, dass der XC32 unfrei und veraltet und 
beschnitten ist, was zwar irgendwo auch stimmt, für Dich aber keine 
wirklichen Auswirkungen hat. Es funktioniert einfach, und alles passt 
zusammen.

Und wenn Du später mal Geld hast, und einen JLink (die Kosten sind zu 
90%  für die Firmware, die Hardware hat einen Wert von 20€) haben 
willst, dann kann der neben ARM auch MIPS, RISC-V und irgendwelche 
Renesas-Architekturen.

fchk

PS:
https://www.amazon.de/ARM-Emulator-32-Bit-64-Bit-Downloader-STM32-Unterst%C3%BCtzung-Hochgeschwindigkeits-Download/dp/B07SFWCLBT/ref=sr_1_1?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=jlink&qid=1583049159&sr=8-1

von Giloper (Gast)


Lesenswert?

Ganz einfach: Windows + STM32CubeIDE. Denn:

Nucer schrieb:
> Ich mag die Nucleos von STM, lassen sich einfach an den USB-Port stecken
> und mit den Toolchains und IDEs von ST kann man sofort loslegen.
>
> Man ist dann eben nicht der große Held weil man nicht 4 Wochen harte
> Arbeit gebraucht hat um das erste Programm auf den µc zu kriegen.

Vollste Zustimmung. Ich nutze ganz einfach die Software, die offiziell 
vorhanden ist. Dazu gehört auch ein Betriebssystem. Auf dieses Gefrickel 
mit Toolchains habe ich schon seit über 10 Jahren keinen Bock mehr. 
Warum tut man sich das noch an? Weil man ein Windows / Linux Fanboy ist?

Wenn es nur eine offizielle Toolchain für Linux gibt, dann nutze ich 
diese. Wenn nur für Windows, dann diese. Peng aus!

von Bernd K. (prof7bit)


Lesenswert?

Olaf schrieb:
> Ich hab mir sogar mal ihr Tool fuer Linux nach programmiert mit dem ich
> zur Laufzeit Variablen beobachten kann.

Kannst Du ein bisschen mehr dazu sagen, ich trage mich auch mit dem 
Gedanken sowas zu tun? Hast Du vielleicht sogar ein paar Schnipsel Code 
die zeigen wie das geht oder kannst Du grob umreißen was dazu nötig ist?

von Bernd K. (prof7bit)


Lesenswert?

Giloper schrieb:
> Wenn es nur eine offizielle Toolchain für Linux gibt, dann nutze ich
> diese. Wenn nur für Windows, dann diese. Peng aus!

Es gibt die offizielle ARM-Toolchain für alle Betriebssysteme, und sie 
hat ihre Wurzeln in der Linux-Welt. Und das merkt man. Wenn jemand 
lieber mit Linux arbeitet dann liegt das daran daß letzteres im 
Gegensatz zu Windows von Grund auf für die Zielgruppe Softwareentwickler 
maßgeschneidert ist und so unendlich viele Dinge dort einfacher zu 
bewerkstelligen sind als unter Windows.

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?

Du startest den gdb-server von Segger und redest mit ihm.

Ich haenge mal meine Methoden dafuer an..

Damit kann man dann beliebige Adressen aus dem Controller auslesen.

Als naechstes muss man nur noch wissen auf welche Adressen die Variablen 
im Controller liegen.

Dafuer hab ich noch das hier im Makefile:

        @nm -n -S BoardTest |grep '^2' |grep ' 0000' |grep -v '__' 
>variable.txt

Das gibt dann im Prinzip so ein File:

 more variable.txt
20000000 00000004 d SystemLFXOClock
20000004 00000004 d SystemHFXOClock
20000008 00000001 d rs232.5882
20000009 00000001 d lcd.5881
2000000a 00000001 D char_color
2000000c 00000004 d lcdreset
20000010 00000002 b cmuStatus
20000014 00000018 b i2cTransfer
[..]

Das kann man dann in seinem Programm einlesen und so Variablen 
auswaehlen und ihren Inhalte auslesen.

Ich empfehle ausserdem noch das hier zu lesen:

https://www.huihoo.org/mirrors/pub/embed/document/debugger/ew_GDB_RSP.pdf

Segger selbst hat auch noch einiges an Doku zu ihrer Software die man 
lesen sollte. Ein laufender Wireshark ist bei der Entwicklung 
hilfreich...

Olaf

von Axel S. (a-za-z0-9)


Lesenswert?

Giloper schrieb:
> Ganz einfach: Windows + STM32CubeIDE.
>
> Ich nutze ganz einfach die Software, die offiziell
> vorhanden ist. Dazu gehört auch ein Betriebssystem.

Ähhm. Dir ist aber schon aufgefallen, daß es die STM32CubeIDE auch für 
Linux gibt? Ganz offiziell? Tatsächlich sind die meisten Teile der IDE, 
die nicht Java (und damit sowieso plattformunabhängig) sind, 
ursprünglich mal auf einem unixoiden Betriebssystem entwickelt worden. 
Z.b. gcc oder openocd. Sogar Java und Tcl sind das. Das ist alles erst 
nachträglich auf Windows portiert worden.

Wie kommst du da auf das schmale Brett, man müsse für die Benutzung 
dieser Software ein Windows erdulden?

von Giloper (Gast)


Lesenswert?

Axel S. schrieb:
> Ähhm. Dir ist aber schon aufgefallen, daß es die STM32CubeIDE auch für
> Linux gibt? Ganz offiziell? Tatsächlich sind die meisten Teile der IDE,
> die nicht Java (und damit sowieso plattformunabhängig) sind,
> ursprünglich mal auf einem unixoiden Betriebssystem entwickelt worden.
> Z.b. gcc oder openocd.

Tut mir leid euer Ehren. Ich habe eben auf st.com kurz nachgesehen und 
habe nur etwas von Windows gelesen. Schein ich überlesen zu haben.

Aber noch besser! Dann kann er sich ja das STM32CubeIDE unter Linux 
download und nutzen. Fertig! ?

von Bernd K. (prof7bit)


Lesenswert?

Olaf schrieb:
> Das kann man dann in seinem Programm einlesen und so Variablen
> auswaehlen und ihren Inhalte auslesen.

Bei laufendem Programm in Echtzeit, so wie JScope?

: Bearbeitet durch User
von Olaf (Gast)


Lesenswert?

> Bei laufendem Programm in Echtzeit, so wie JScope?

Yep.

Olaf

von Bernd K. (prof7bit)


Lesenswert?

Olaf schrieb:
>> Bei laufendem Programm in Echtzeit, so wie JScope?
>
> Yep.

Na dann hab ich ja jetzt mal ne Aufgabe: Ein JScope mit vernünftigem UI 
das so ist wie es eigentlich immer hätte sein sollen anstatt einen in 
den Wahnsinn zu treiben und das auch noch für Linux.

von Np R. (samweis)


Lesenswert?

Bernd K. schrieb:
> Np R. schrieb:
>> Ich vermute, dem TO wäre mehr damit geholfen, wenn Du einen
>> unverknoteten Controller mit völlig unverkorkster Toolchain und
>> Linux-kompatibler Programmierhardware vorschlügest, der leicht und
>> günstig in kleinen Stückzahlen aufzutreiben ist.
>
> Kinetis

Interessanter Vorschlag. MCUXpresso läuft ja unter Linux.
Aber für den Einsteiger wären ja noch ein paar andere Dinge interessant:
- günstige Bezugsquellen für kleine Stückzahlen? (Reichelt und TME 
fallen da schon einmal aus)
- günstige Entwicklungsboards?
- Tutorials und Beispielprojekte? (Auf Mikrocontroller.net leider keine)

Und für die Glaubensrichtung, die sich nicht von einer Hersteller-IDE 
abhängig machen will: Was sind die Alternativen zu MCUXpresso? Und wie 
"einfach" werden die dann? (libopencm3 geht ja leider nicht)

Bitte nicht als Kritik an Deiner Entscheidung verstehen. Aber um diese 
Entscheidung auch Ein-/Umsteigern schmackhaft zu machen, fehlt doch noch 
etwas.
Von der perfekt "unverknoteten" Peripherie merkt ein Einsteiger, der 
irgendeine Abstraktionsschicht nutzt, doch erst einmal gar nichts.

von Johannes S. (Gast)


Lesenswert?

Np R. schrieb:
> Was sind die Alternativen zu MCUXpresso?

mbed-cli, hatte ich ja schonmal genannt, das unterstützt auch einige 
LPCXpresso Boards. Die LPC und Boards bekommt man bei Mouser oder 
anderen Distris. Viele der Boards wurden von EmbeddedArtists gebaut, auf 
deren Website findet man einiges an Doku. ST ist mit seinem Marketing 
deutlich aggressiver, die haben da viel mehr in den Markt geworfen. ST 
hat geschickterweise viele µC pinkompatibel gebaut, damit haben die 
recht wenig Aufwand schnell ein Board mit einem neuen µC rauszubringen.
Das mbed-cli lässt sich gut in VSCode als IDE benutzen. Das ist etwas 
aufwändiger als eine 1-Klick Installation wie andere IDE, aber wer Linux 
benutzt sollte das auch hinbekommen. Um den Compiler aufzurufen genügen 
ein paar Einträge in die tasks.json, den Debugger (Cortex-Debug 
Extension) kann man über launch.json einbauen.
Mit LPC/MCUXpresso habe ich auch lange gerne gearbeitet, aber für einen 
STM32 brauchte man dann SW4STM32, Atollic oder Eclipse mit den 
gnuarmeclipse Plugins. Dann kommt ein neues Eclipse Release und wieder 
viele Updates für viele IDE. Das ist mit VSCode jetzt für mich vorbei, 
damit kann ich STM32/LPC/Nordic/TI/GD und andere benutzen. Wenn es eine 
neue ARM gcc toolchain gibt kann ich die auch sofort benutzen oder durch 
umschalten des Suchpfades eine beliebige ältere Version.

von Stefan F. (Gast)


Lesenswert?

W.S. schrieb:
> Die Mehrzahl der Leute brauchen den Debugger häufiger als alles Andere
> die programmieren halt mit dem Debugger

Wirklich? So könnte ich nicht effizient arbeiten.

von Bauform B. (bauformb)


Lesenswert?

Zwecks Bezugsquellen für Kinetis und LPC muss ich mal an Farnell und 
Develektro erinnern. Farnell hat z.B. 62 verschiedene Kinetis M0+ im 
Bastler-freundlichen Gehäuse auf Lager (und zum Vergleich 129 STM32 
Typen); also, man könnte die durchaus einzeln kaufen, nicht nur bei 
Mouser oder Arrow.
Geheimtipp falls die Suche bei Develektro hakelt: bei Farnell suchen und 
die Farnell-Bestellnr. bei Develektro eingeben.

von Bernd K. (prof7bit)


Lesenswert?

Np R. schrieb:
> Interessanter Vorschlag. MCUXpresso läuft ja unter Linux.

Man braucht kein MCUXpresso oder dergleichen. Bei Kinetis sind die 
Register so übersichtlich organisiert und einfach zu benutzen, da 
braucht man keine HAL und Codegeneratoren wie bei STM die das erst mal 
entknoten muß. Die programmieren sich so einfach und straightforward wie 
ATMega, sogar noch einfacher weil noch logischer und geordneter.

Er hat auch explizit nur verlangt daß die Toolchain unter Linux läuft, 
und die ist ja gleich für alle ARM Cortex. Nur noch ein möglichst simpel 
gestricktes Beispiel-Makefileprojekt aus dem Netz ziehen, nen Blick 
drauf werfen wie das innerlich tickt, RefMan griffbereit daneben legen 
und los gehts.

Immerhin will er einsteigen(!) und nicht nur schnell streifen, also auch 
von daher wäre sowas wie MCUXpresso oder vergleichbares dem Lernerfolg 
eher abträglich.

: Bearbeitet durch User
von Markus B. (markus_b571)


Lesenswert?

Brauche ich für diese Nucleos Boards die CubeIDE oder geht das auch mit 
den "normalen" Tools?

Dann würde ich mir vielleicht Mal ein oder zwei bestellen

von Alex D. (daum)


Lesenswert?

Markus B. schrieb:
> Brauche ich für diese Nucleos Boards die CubeIDE oder geht das auch mit
> den "normalen" Tools?
>
> Dann würde ich mir vielleicht Mal ein oder zwei bestellen

Funktioniert auch mit allen anderen Tools, da ist auch nur ein der 
Microcontroller + Programmer (STLinkv2, bei den G4 nucleos sogar ein 
STLinkv3) mit USB-UART Wandler drauf.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

@Bernd K:
Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?
Damit wäre dem TE ja schonmal geholfen, dann muss er keine Register 
abtippen.

von Axel S. (a-za-z0-9)


Lesenswert?

Markus B. schrieb:
> Brauche ich für diese Nucleos Boards die CubeIDE

Natürlich nicht. Du brauchst den gcc und binutils für Cortex-M (das sind 
die *-arm-none-eabi Versionen) und optional noch gdb und die newlib. 
Außerdem sinnvoll ist openocd zum Download/Debuggen per SWD/JTAG. Wenn 
es ein STM mit ST-Link Adapter ist, alternativ das 'stlink' Programm. 
Bis auf letzteres hat das jede vernünftige Linux-Distro schon dabei.

Der Charme der Nucleos besteht darin, daß sie den ST-Link SWD Adapter 
schon mitbringen. Einfach an den USB stöpseln und schon kanns losgehen. 
Den ST-Link kann man auch abtrennen und anderweitig verwenden. Durchaus 
auch für Cortex-M von anderen Herstellern. Die Intelligenz steckt nicht 
im Adapter, sondern in der Software auf dem PC.


Mw E. schrieb:
> Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?

Die kann man sich aus den SPL bzw. Cube-HAL Paketen extrahieren.

: Bearbeitet durch User
von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Axel S. schrieb:
> Mw E. schrieb:
>> Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?
>
> Die kann man sich aus den SPL bzw. Cube-HAL Paketen extrahieren.

Bernd redet aber über die Kinetis.
Die STM32 CMSIS Header liegen aber auch auf vielen Github Projekten frei 
rum.
Die Kinetis werden bei Hobbyisten jetzt nicht so oft genutzt.
Google mit "CMSIS Kinetis" brachte jetz nich so viel zu Tage.

von Axel S. (a-za-z0-9)


Lesenswert?

Mw E. schrieb:
> Axel S. schrieb:
>> Mw E. schrieb:
>>> Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?
>>
>> Die kann man sich aus den SPL bzw. Cube-HAL Paketen extrahieren.
>
> Bernd redet aber über die Kinetis.

Tja. Wenn es doch nur eine Möglichkeit gäbe, den Post zu zitieren, auf 
den man sich beziehen will. Das wäre so praktisch!!1!elf

von Olaf (Gast)


Lesenswert?

> Außerdem sinnvoll ist openocd zum Download/Debuggen per SWD/JTAG. Wenn
> es ein STM mit ST-Link Adapter ist, alternativ das 'stlink' Programm.

Also ich arbeite nicht bei Segger, aber ich moechte trotzdem dringend 
empfehlen sich einen originalen Jlink zu besorgen. Ich hab mit den 
ST-Link auch mal unter Linux rumgespielt und das war immer irgendwie 
wackelig. Es ging schon irgendwie, aber auch nur irgendwie. Nicht gerade 
das was sich ein Anfaenger zumuten will.

Allerdings gibt es ja mittlerweile die Moeglichkeit die Testboards von 
Segger auf Jlink umzuflashen. Ich hab aber keine Erfahrung wie 
zuverlaessig das unter Linux laeuft. Allerdings wird man damit dann 
wieder nur ST Zeugs flashen und debuggen koennen und nicht jeden 
beliebigen Arm der einen ueber den Weg laeuft.

Olaf

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Axel S. schrieb:
> Tja. Wenn es doch nur eine Möglichkeit gäbe, den Post zu zitieren, auf
> den man sich beziehen will. Das wäre so praktisch!!1!elf

@Bernd K war eindeutig genug ;)

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Olaf schrieb:
> Also ich arbeite nicht bei Segger, aber ich moechte trotzdem dringend
> empfehlen sich einen originalen Jlink zu besorgen. Ich hab mit den
> ST-Link auch mal unter Linux rumgespielt und das war immer irgendwie
> wackelig.

Nicht wackelig, sondern langsam.
Beim Durchsteppen merkt man eine Bedenkzeit beim STLink.
Beim JLink merkste keine Verzögerung.

von Alex D. (daum)


Lesenswert?

Olaf schrieb:
> Allerdings gibt es ja mittlerweile die Moeglichkeit die Testboards von
> Segger auf Jlink umzuflashen. Ich hab aber keine Erfahrung wie
> zuverlaessig das unter Linux laeuft.

Naja, das umflash script läuft nur unter Windows (funktionierte bei mir 
in einer VM), danach lässt sich der JLink einwandfrei benutzen. Mit wine 
hab ich das reflash script nicht dazu gebracht das Nucleo board zu 
finden.

von Tomaß (Gast)


Lesenswert?

Markus B. schrieb:
> Dann würde ich mir vielleicht Mal ein oder zwei bestellen

Es gibt eine Variante der Nucleos eines anderen Herstellers:

https://www.waveshare.com/product/mcu-tools-2/core-boards-compact-boards/stm32-nucleo/xnucleo-f411re.htm

https://www.waveshare.com/wiki/XNUCLEO-F411RE

von Stefan F. (Gast)


Lesenswert?

Bernd K. schrieb:
> da braucht man keine HAL und Codegeneratoren wie bei STM

Die braucht man bei STM auch nur, wenn man sie sich aufschwatzen lässt.

von Stefan F. (Gast)


Lesenswert?

Markus B. schrieb:
> Brauche ich für diese Nucleos Boards die CubeIDE oder geht das auch mit
> den "normalen" Tools?

Die Cube IDE ist ein normales Tool.

Genau gesagt ist eine Eclipse IDE mit ziemlich gewöhnlichen Plugins, die 
auch andere Entwickler für ihre Mikrocontroller nutzen.

ST hat da lediglich das Cube MX integriert. Das kannst du nutzen, musst 
du aber nicht.

Alternativ gibt es zum Beispiel die "System Workbench for STM32", 
basiert auch auf Eclipse kommt aber nicht von ST und enthält kein Cube 
MX.

von Stefan F. (Gast)


Lesenswert?

Mw E. schrieb:
> Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?

Die sind in den Sogenannten "Firmware Packages" von ST enthalten. Kannst 
du einfach dort heraus ziehen. Oder meine Kollektion benutzen. Schau Dir 
mal diese Seiten an: http://stefanfrings.de/stm32/index.html

von Bauform B. (bauformb)


Lesenswert?

Stefan ⛄ F. schrieb:
> Mw E. schrieb:
>> Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?
>
> Die sind in den Sogenannten "Firmware Packages" von ST enthalten.

Die gibt es auch einzeln, ohne Email-Adresse und trotzdem original:
https://github.com/STMicroelectronics/STM32CubeL0/tree/master/Drivers/CMSIS/Device/ST/STM32L0xx/Include
https://github.com/STMicroelectronics/STM32CubeL4/tree/master/Drivers/CMSIS/Device/ST/STM32L4xx/Include
usw.

von Stefan F. (Gast)


Lesenswert?

Bauform B. schrieb:
> Die gibt es auch einzeln, ohne Email-Adresse und trotzdem original

Interessant, gut zu wissen.

von Axel S. (a-za-z0-9)


Lesenswert?

Olaf schrieb:
>> Außerdem sinnvoll ist openocd zum Download/Debuggen per SWD/JTAG. Wenn
>> es ein STM mit ST-Link Adapter ist, alternativ das 'stlink' Programm.
>
> Also ich arbeite nicht bei Segger, aber ich moechte trotzdem dringend
> empfehlen sich einen originalen Jlink zu besorgen. Ich hab mit den
> ST-Link auch mal unter Linux rumgespielt und das war immer irgendwie
> wackelig.

Details?

> Es ging schon irgendwie, aber auch nur irgendwie. Nicht gerade
> das was sich ein Anfaenger zumuten will.

Details?

Ich bin jetzt zwar nicht unbedingt ein Anfänger, was Computer oder Linux 
oder µC betrifft. Aber ich war durchaus ein Anfänger mit Cortex-M, als 
ich mit einem STM32F030 und dann mit einem Bluepill Board und dann mit 
einem Nucleo L073 rumgemacht habe. Und ich hatte da genau gar keine 
Probleme mit dem ST-Link. Sogar den verschrienen China-Klones 
(eigentlich für den STM8 angeschafft). Sowohl mit Texane stlink als auch 
mit openocd. Flashen ging. Debuggen ging (nicht STM8, wohl aber STM32).

Ich zweifle nicht, daß ein J-Link toll ist. Ich glaube auch unbesehen, 
wenn jemand sagt, er sei besser als ein ST-Link. Was ich aber absolut 
bezweifle ist, daß man einen J-Link dringend braucht, um mit einem 
Cortex-M µC loslegen zu können. Noch dazu, wenn das ein STM32 ist und 
man den ST-Link auf einer Ecke des Nucleo-Boards praktisch 
hinterhergeworfen bekommt.

> Allerdings gibt es ja mittlerweile die Moeglichkeit die Testboards von
> Segger auf Jlink umzuflashen. Allerdings wird man damit dann
> wieder nur ST Zeugs flashen und debuggen koennen und nicht jeden
> beliebigen Arm der einen ueber den Weg laeuft.

Und welche Relevanz hat das? Wenn man doch den ST-Link auf einem STM32 
Nucleo nutzt? Darf ich nochmal auf den Betreff dieses Threads hinweisen? 
Markus sucht eher nicht die eierlegende Wollmilchsau, mit der er alle 
jetzt und in Zukunft am Markt existierenden ARM-basierenden µC auf die 
bestmögliche Art flashen/debuggen kann. Er sucht den Einstieg. Ein 
Nucleo-Board von ST ist IMNSHO eine gute Möglichkeit dafür. Das Geld für 
einen J-Link (oder vielleicht besser ein BMP?) kann er danach ja immer 
noch in die Hand nehmen.

von Root (Gast)


Lesenswert?

ARM uns einfach schließt sich aus

von Programmierer (Gast)


Lesenswert?

Axel S. schrieb:
> Und welche Relevanz hat das? Wenn man doch den ST-Link auf einem STM32
> Nucleo nutzt

Der vorhandene ST-Link ist halt langsam und verbuggt. Manche haben da 
mehr Probleme mit, manche weniger. Scheint von der Mondphase abzuhängen 
ob er funktioniert oder kryptische Fehler wirft (selbst mit der Original 
ST Software). Beim STM32F746 Discovery ist es mir bspw. überhaupt nicht 
gelungen, den ST-Link dazu zu bewegen, irgendwas sinnvolles zu machen. 
Weder mit dem ST-Link Utility, noch mit SW4STM32 noch mit texane 
st-link.

JLink ist da einfach zuverlässiger, der Segger Marketing Spruch "It 
simply works" stimmt schon. Außerdem ist die Linux Software besser. Ich 
habe das o.g. Discovery Board umgelötet um einen JLink anschließen zu 
können - hat sofort funktioniert. Das Umflasehen gabs damals noch nicht. 
Jetzt hab ich aber alle meine ST Boards auf JLink umgeflasht und dafür 
extra nochmal Windows gestartet...

Axel S. schrieb:
> Was ich aber absolut bezweifle ist, daß man einen J-Link dringend
> braucht, um mit einem Cortex-M µC loslegen zu können

Nö. Wenn man aber plant viel mit ARM zu machen, ist das definitiv eine 
sinnvolle Investition. Ist halt ein solides Werkzeug und kann nebenbei 
nahezu alle ARM Prozessoren, auch die großen Cortex-A.

von Stefan F. (Gast)


Lesenswert?

Programmierer schrieb:
> Der vorhandene ST-Link ist halt langsam und verbuggt.

Er ist um Welten schneller, als Debug Wire bei AVR. Man kann damit gut 
arbeiten.

Verbuggt? Meine funktionieren tadellos. Ich war von Bugs noch nicht 
betroffen.

ST bietet Firmware-Upgrades an - auch für die ST-Link 2.0 kompatiblen 
Klone.

von Olaf (Gast)


Lesenswert?

> Details?

Was erwartest du da als Antwort? Es war halt einfach unzuverlaessig.
Ausserdem ist das schon >5Jahre her seitdem nutze ich nur noch den EDU.

Und wie ich schon sagte, ich nutze nicht nur ST sondern auch ARMs 
anderer Hersteller.

Olaf

von Axel S. (a-za-z0-9)


Lesenswert?

Programmierer schrieb:
> Axel S. schrieb:
>> Und welche Relevanz hat das? Wenn man doch den ST-Link auf einem STM32
>> Nucleo nutzt
>
> Der vorhandene ST-Link ist halt langsam und verbuggt.

Details? "Langsamer im Einzelschrittbetrieb" überzeugt mich irgendwie 
gar nicht. Einzelschrittbetrieb soll langsam sein. Das ist ja der Punkt 
dabei.

> Manche haben da mehr Probleme mit, manche weniger.

Wenn du das Problem nicht zeigen kannst, gehe ich vorsichtshalber 
erstmal davon aus, daß es nicht existiert. Wenn es um Computer und 
Software geht, sitzt in 95% der Fälle das Problem sowieso vor der 
Tastatur.

>> Was ich aber absolut bezweifle ist, daß man einen J-Link dringend
>> braucht, um mit einem Cortex-M µC loslegen zu können
>
> Nö. Wenn man aber plant viel mit ARM zu machen, ist das definitiv eine
> sinnvolle Investition.

Na dann warten wir doch erstmal, ob es dazu kommt. Wenn du dein Kind zur 
ersten Stunde Geigenunterricht schickst, kaufst du ihm dafür ja auch 
keine Stradivari.

von Bernd K. (prof7bit)


Lesenswert?

Mw E. schrieb:
> @Bernd K:
> Gibts denn die CMSIS Header für die Periph irgendwo frei verfügbar?

Header gibts für jeden ARM in den jeweiligen Pack-Datei (auch DFP 
genannt, ist ein umbenanntes .zip) entweder direkt vom Hersteller oder 
wenn es dort zu gut versteckt ist dann bei Keil welche die alle hier an 
einer Stelle sammeln:

https://www.keil.com/dd2/


Darin befindet sich neben den fertigen Headern und anderen nützlichen 
Dateien auch immer eine .svd-Datei (Registerdefinitionen als xml) aus 
der man sich die Header selbst generieren kann im gewünschten Format 
(Flat, Structs, Structs und Enums, etc.) mit dem tool svdconv (gibts für 
Linux und Windows)

In vielen Fällen findet man auch Startup-Code und Linkerscript, 
mindestens für Keil, manchmal auch für gcc.

> dann muss er keine Register abtippen.

Das musste noch keiner jemals, das wäre ja vollkommener Irrsinn, der 
einzige von dem überliefert ist daß er sowas je gemacht hat ist W.S. und 
der Himmel allein weiß warum.

Was Du manchmal/oft machen musst ist das generische gcc 
Beispiel-Linkerscript an den jeweiligen Controller anpassen falls kein 
solches im pack zu finden ist (ist ja vorwiegend auf keil zugeschnitten) 
und ebenso den Startup-Code, mit etwas Übung (wenn man sowas einmal 
gemacht hat) geht das aber ratzfatz.

Wenn man zum Beispiel den Startup nur für Keil hat, aber irgendwo in 
seiner Sammlung einen anderen Startup für gcc kann man letzteren mit dem 
was man im Keil-Assembler finden kann leicht passend machen. Ebenso 
einfach lässt sich ein existierendes Linkerscript passend machen.

In vielen Fällen kann man sich aber auch die fehlenden Puzzlestücke 
(Linkerscript, Startup) online zusammensuchen.

: Bearbeitet durch User
von Programmierer (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Verbuggt? Meine funktionieren tadellos. Ich war von Bugs noch nicht
> betroffen.

Glück gehabt. Bei anderen ist das nicht so.

Stefan ⛄ F. schrieb:
> ST bietet Firmware-Upgrades an - auch für die ST-Link 2.0 kompatiblen
> Klone.

Hat bei mir nie geholfen.

Axel S. schrieb:
> Details? "Langsamer im Einzelschrittbetrieb" überzeugt mich irgendwie
> gar nicht. Einzelschrittbetrieb soll langsam sein. Das ist ja der Punkt
> dabei.

Wenn ich durch einen längeren Algorithmus durchsteppen will, und öfter 
mal 3-10 Zeilen überspringen will, drücke ich in Eclipse 3-10x auf F6 
für "Step Over". Das geht mit dem JLink instant, mit dem ST-Link dauert 
das jeweils 1-2 Sekunden. Nervig. Natürlich könnte man auch jedes Mal 
"Run to Cursor" benutzen, aber da mit der Maus zur jeweiligen Zeile 
navigieren dauert auch wieder.

Axel S. schrieb:
> Wenn du das Problem nicht zeigen kannst, gehe ich vorsichtshalber
> erstmal davon aus, daß es nicht existiert.

Ich krame jetzt nicht den ganzen Kram raus nur um für dich Beweis-Fotos 
und -Screenshots zu machen. Ich erinnere mich aber noch deutlich an die 
enorm hilfreiche Fehlermeldung vom ST-Link-Utility "Internal Command 
Error". Dazu kommt der übliche Schluckauf wenn man die "WFI" Instruktion 
nutzt. Mit dem JLink hat das jedenfalls immer alles wunderbar 
funktioniert.

von TriHexagon (Gast)


Lesenswert?

Axel S. schrieb:
> Programmierer schrieb:
>> Axel S. schrieb:
>>> Und welche Relevanz hat das? Wenn man doch den ST-Link auf einem STM32
>>> Nucleo nutzt
>>
>> Der vorhandene ST-Link ist halt langsam und verbuggt.
>
> Details? "Langsamer im Einzelschrittbetrieb" überzeugt mich irgendwie
> gar nicht. Einzelschrittbetrieb soll langsam sein. Das ist ja der Punkt
> dabei.

Dass man bei jedem einzelnen Schritt ein oder zwei Sekunden warten muss, 
ist definitiv nicht nötig. Und ja es kann wirklich nerven.

Stefan ⛄ F. schrieb:
> Verbuggt? Meine funktionieren tadellos. Ich war von Bugs noch nicht
> betroffen.

Bei mir hängt sich der ST-Link regelmäßig nach N Flash-/Debugvorgängen 
auf. Danach muss man den ST-Link aus- und wieder einstecken.

Wegen den beiden Problemen hab ich mir einen JLink EDU gegönnt. Hab's 
nicht bereut. Aber für den Anfang ist's nicht nötig.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.