Hallo zusammen, habe mich kürzlich dazu entschieden einen ARM Cortex M4
zu kaufen und mich damit zu beschäftigen, habe auch das Discovery Kit
STM32F4 bestellt, die Bestellung wurde aber storniert. Ich will das als
gelegenheit nutzen um auch über andere Boards nachzudenken.
Es gibt ja jede Menge Empfehlungen hier im Forum, u.a. STM, Keil, gecko,
lpc, infineon, avr .....
Es wäre sehr hilfreich wenn mir jemand aus persönlicher Erfahrung heraus
ein gutes Board/Hersteller empfehlen könnte. Es sollte ein M4 sein,
kleines Grsfikdidplay darf vorhanden sein, aber nur wenn noch genügend
Pins für andere Hardware frei bleiben. Die Pins des Controllers sollen
alle herausgeführt sein. Was spricht dagegen einen M0 statt M4 zu
nehmen, es gibt hier zwei Artikel die eigentlich beides für
Anfängertauglich halten. Einen Arduino möchte ich grundsätzlich nicht
haben.
Was ich mir auch sehr gut vorstellen könnte, nur nen Controller kaufen,
Steckbrettadapter und selbst eine Grundbeschaltung + Hardware dranbauen
(Lerneffekt vorhanden?)
Zu Beginn möchte ich etwas mit Leds, Tastern und Servos und einfachen
Grafikdisplays spielen. Später dann einen Roboter bauen (ja ich weis ich
nehme mir zu viel vor für den Anfang, aber eine Motivation ist halt
nötig)
Nino schrieb:> Es gibt ja jede Menge Empfehlungen hier im Forum, u.a. STM, Keil, gecko,> lpc, infineon, avr .....
Ähem, AVR ist aber kein ARM. ;-) Wahrscheinlich meinst du einen
ARM von Atmel, also im Falle des Cortex-M4 einen SAM4.
> Was spricht dagegen einen M0 statt M4 zu> nehmen, es gibt hier zwei Artikel die eigentlich beides für> Anfängertauglich halten.
Ist halt 'ne reichlich andere Nummer. Im Befehlssatz einfacher,
dadurch nicht die gleiche Leistungsklasse, oft auch in den
Peripherals eine Nummer kleiner gehalten, dadurch einfacher zu
verstehen.
Nino schrieb:>> Und falls ed drauf an kommt: So genannte "minimum system boards" gibt es>> ab 3€.>> Beispiele?
Zwar kein M4, aber immerhin ein M3 : ebay Nr. 391402324033
Dazu braucht man aber noch einen ST-Link wie z.B. 311466266044
Bei den kleinen STM Boards gibt es zwei unterschiedliche Versionen mit
unterschiedlichem Pinout, etc. Ich würde einen Maple-Mini Clone
empfehlen, der kostet nur ein paar Cent mehr.
Hier hatte ich schonmal die Unterschiede aufgezählt:
Beitrag "Re: STM32F103C8T6 ARM STM32 Minimum System Development Board Module For Arduino"
Theoretisch kommt da noch hinzu, dass bei dem STM32-Mini nur 64kB Flash
drauf sein sollten, wobei in der Praxis trotzdem 128kB verfügbar sind.
Eine Garantie dafür hast du allerdings nicht. Steht aber auch alles in
dem Thread.
Das Maple Mini hat einen Bootloader vorinstalliert, bei dem kannst du
über USB flashen. Theoretisch geht es auch ohne Bootloader über die
serielle Schnittstelle aber das habe ich in der Praxis noch nicht
ausprobiert.
Mein Rat: Kauf dir ein Nucleo-F411 und ein Maple-Mini.
Das Maple Mini bekommst du für unter 4€ bei http://www.aliexpress.com
Christopher J. schrieb:> Mein Rat: Kauf dir ein Nucleo-F411 und ein Maple-Mini.
Wenn es etwas mehr Leistung sein darf, dann nimm den Nucleo-F446RE, der
geht auch bis 180MHz. Schau Dir einfach die Unterschiede in der
Peripherie bei ST an. ( http://www.st.com/stm32nucleo )
Bei HBE kostet das Teil €10,92, ist also keine so große Investition.
Nino schrieb:> Ich will eigentlich keine Arduinos.
Arduino-Allergie, oder was? ;-)
Schau dir doch die Hardware an, ob sie dir passt. Ob die nun kompatibel
zu Arduino ist oder nicht, kann dir doch dabei völlig schnuppe sein.
Auch, wenn da „Arduino“ draufsteht, zwingt dich doch deshalb keiner,
deren Software-Framework zu benutzen.
(Nein, ich hab' mir die Nucleos jetzt nicht angesehen.)
Möglicherweise könnte auch die hochgezüchtetere XNucleo Serie
interessant sein?
Bsp. http://www.waveshare.com/xnucleo-F411RE.htm dort auch Vergleich zum
Original NUCLEO-F411RE. Kostet bei ebay aktuell 23,60€, als Bundle auch
mit Display.
Nino schrieb:> Bei den beiden Nucleo Boards wird von Arduino geredet, wie kann ich das> verstehen? Ich will eigentlich keine Arduinos.
Das betrifft nur die Anschlußmöglichkeiten, die haben Steckleisten bei
denen die Belegung und Positionierung zu den arduinoüblichen paßt so daß
man viele der 'Shields' benutzen kann.
Ganz lustig finde ich die neuen kleinen Nucleo-32. Bauform vom Arduino
Nano, STLink/V2 mit drauf und der Große mit dem STM32F303 hat mehr
Rechenleistung als man braucht ;-)
http://www.st.com/web/catalog/tools/FM116/CL1620/SC959/SS1532/LN1847
Nino schrieb:> Hallo zusammen, habe mich kürzlich dazu entschieden einen ARM Cortex M4> zu kaufen und mich damit zu beschäftigen
Das ist ganz allgemein zwar sehr löblich, aber zuvor solltest du dir
selbst ein paar Fragen stellen.
Ganz allgemein:
Was kannst du bereits?
Was willst du damit?
Wie intensiv willst du lernen?
Welchen zeitlichen und finanziellen Rahmen hast du?
Denk jetzt nicht, eine ehrliche Antwort auf diese Fragen wäre unnötig.
Ich formuliere mal ein paar konkretere Fragen:
Kannst du englische Manuals lesen?
Traust du dir zu, dir eine eigene Schaltung zu entwerfen?
Traust du dir zu, dafür auch eine eigene Leiterplatte zu designen?
Kennst du bereits einen Leiterplattenfertiger?
Was hast du bereits an Hilfsmitteln (Labornetzteil, Oszi, Lötkolben,
Multimeter, Programmiergeschirre, Software... usw.)
Kurzum, ein jeder hier in diesem Forum kann dir schreiben "Nimm dieses
Evalboard, das finde ich klasse, also solltest du das auch klasse
finden!" - aber all diese fertigen Evalboards sind eigentlich NICHT für
Leute wie dich gemacht, sondern sie sollen etwaige Interesenten an die
Produlte der jeweiligen Firma anfüttern.
Das ist ne andere Sache.
Genau deshalb die 2. obige Frage.
Natürlich kann man sich irgend ein Discovery oder Nucleo oder Xpresso
usw. zulegen und sich quasi damit nen Ring durch die Nase ziehen lassen
- und sich obendrein über eine ach so tolle "Community" freuen und
selbstverständlich auch all die dort üblichen Libs, IDE's etc. benutzen
und dabei sich selbst festnageln und geistig verkrüppeln. Her gibt es
Herden von solchen Leuten, die an ihrem Discovery-Board noch nie gelernt
haben, ein Pin ohne die ST-Lib wackeln zu lassen - und ebendiese Leute
sind ganz felsenfest davon überzeugt, daß es genau so EINZIGRICHTIG ist.
Also wirklich: frag dich selbst nach dem, was du tatsächlich willst.
Bei Vorliegen von Antworten kann dir dann eher fachgerecht geraten
werden.
W.S.
Fang mit dem kleinsten (einfachsten) ARM an den Du finden kannst. Je
weniger Seiten das Reference Manual hat desto weniger erdrückend die
Einstiegshürde. Es gibt durchaus kleine ARM-Controller die sind nicht
nennenswert komplexer oder schwieriger als ein ATMega. Ich würde also
nicht gleich mit dem dicksten Brocken anfangen den man für Geld kaufen
kann, Du kannst ihn in den nächsten 2 Jahren mit dem typischen
Anfängerübungen eh nicht komplett ausreizen, noch nicht mal ansatzweise.
Auch die kleinen ARMs nicht.
Erst wenn Du irgendwann so weit bist daß Du an konkrete Grenzen stößt
für ein konkretes Problem, erst dann brauchst Du was größeres aber bis
dahin wirst Du reichlich genug Erfahrung angesammelt haben um genau zu
wissen was Du haben willst.
Kommt darauf an. Also Freescale z.Bsp ein FRDM_KL25Z gibt es schon für
8€ Der Vorteil Debugger OpenSDA ist schon mit auf dem Board. Kleine
Spielereien auch :)
Das schöne ist das Freescale auch eine Entwicklungsumgebung und
Beispiele mitliefert. Was bei Atmel recht mangelhaft ist, also in dem
ASF Code als Anfänger durch zuschauen.
Marco H. schrieb:> Kommt darauf an. Also Freescale z.Bsp ein FRDM_KL25Z gibt es schon> für> 8€ Der Vorteil Debugger OpenSDA ist schon mit auf dem Board. Kleine> Spielereien auch :)
Genau, am besten eine Familie bei der die Community noch kleiner ist...
> Das schöne ist das Freescale auch eine Entwicklungsumgebung und> Beispiele mitliefert. Was bei Atmel recht mangelhaft ist, also in dem> ASF Code als Anfänger durch zuschauen.
Das ASF ist auch nicht für Anfänger zum Lernen gedacht. Und Arduino
Anfänger schauen die Libs auch nicht an. Aus guten Grund.
Nunja ich verwende die Arduino Libs nicht. Das hat seine Gründe. Der
Vorteil ist aber das der Code Plattform übergreifend verwendbar ist. So
der Gedanke hinter dem Projekt ;) Das hat aber auch seine Nachteile,
eben genau was im Hintergrund abläuft das zu realisieren.
Der größte Nachteil ist das man sich mit den Basics nicht beschäftigt.
Alle wollen immer möglichst schnell zum Ziel und wenn dies nicht so
funktioniert ist es schlecht.
Ohne Basics wie ein ARM funktioniert wird man vieles nicht verstehen
oder alles hängt dauernd im Hardfault Handler ;)
Marco H. schrieb:> Kommt darauf an. Also Freescale z.Bsp ein FRDM_KL25Z gibt es schon für> 8€ Der Vorteil Debugger OpenSDA ist schon mit auf dem Board. Kleine> Spielereien auch :)
Diese Boards (alle Boards der FRDM-KLxx Reihe) kann man übrigens auch
umflashen auf J-Link (keine Angst, ist umkehrbar), dann verhält es sich
wie ein echter Segger J-Link und man kann dann auch richtiges Werkzeug
verwenden (Segger) und auch unter richtigen Betriebssystemen damit
arbeiten :-)
Bernd K. schrieb:> Fang mit dem kleinsten (einfachsten) ARM an den Du finden kannst.> Je weniger Seiten das Reference Manual hat desto weniger erdrückend die> Einstiegshürde. Es gibt durchaus kleine ARM-Controller die sind nicht> nennenswert komplexer oder schwieriger als ein ATMega. Ich würde also> nicht gleich mit dem dicksten Brocken anfangen den man für Geld kaufen> kann, Du kannst ihn in den nächsten 2 Jahren mit dem typischen> Anfängerübungen eh nicht komplett ausreizen, noch nicht mal ansatzweise.> Auch die kleinen ARMs nicht.
Hört sich vernünftig an. Habe auch kein Problem damit mit einem M0
anzufangen. Wie hier schon erwähnt wurde gibts ja die minimal system
boards für wenig geld, werde mich mal umschauen.
Wo liegt der Unterschied zwischen M3, M4 und M0? Es wird behauptet, dass
die Programmierung fast identisch ist. Ein günstige M3 Boards wurden
hier ja schon empfohlen, könnte mir noch jemand ein gutes M0 board
empfehlen? Würde mir dann mal die Hardware ansehen.
Wenn du nicht gerade in Assembler programmierst, dann ist es für dich
als Anfänger am einfachsten damit erklärt:
M0 - dick
M3 - dicker
M4 - am dicksten
Das gilt vor allem für die Peripherie, also alles was in dem Chip
integriert ist. Du wirst z.B. eher selten einen M0 mit Ethernet oder CAN
Schnittstelle finden, während das bei den M4 fast Standard ist. Servos
ansteuern kannst du mit allen und Sensoren auslesen (I2C, SPI) ebenso.
Selbst mit einem STM32F030 geht das und der kostet beim Aliexpress nicht
mal 50 Cent ;)
Bernd K. schrieb:> Fang mit dem kleinsten (einfachsten) ARM an den Du finden kannst. Je> weniger Seiten das Reference Manual hat desto weniger erdrückend die> Einstiegshürde.
Bernd hat meine volle Zustimmung. Gerade am Anfang ist weniger mehr,
d.h. von den Discovery Boards würde ich unbedingt abraten, weil da schon
alles verbaut ist durch zusätzliche ICs. Das sind Demo-Boards
und es kann einen in den Wahnsinn treiben wenn da ein Pin nicht macht
was er soll, weil da eben schon irgendeine andere Hardware dranhängt die
fröhlich dazwischen funkt.
Hier mal ein paar Gründe für meinen Vorschlag Maple-Mini+NucleoF411:
1. Bei den Maple-Mini Clones hast du ein übersichtliches Board mit ca.
40 Pins, was du in jedes Breadboard stecken oder in einer
Lochrasterplatine verlöten kannst. Sonstige ICs wie bei den Discovery
Boards sind nicht vorhanden und der Chip ist noch relativ übersichtlich
(STM32F103 - Cortex M3).
2. Der Preis ist so niedrig, dass du so ein Teil mit gutem gewissen
dauerhaft in einem Projekt verlöten kannst - ich kenne keine
vergleichbaren Boards mit ähnlichem Preis
3. Das Nucleo hat einen ST-Link an Board. Damit kannst du jeden ARM
Cortex-M flashen/debuggen (Das kann der J-Link Lite von den
Freescale-Boards nicht, nicht mal einen anderen Freescale Chip)
4. Das NucleoF411 hat jede Menge Dampf und kann auch mal herhalten wenn
der F103 nicht mehr ausreicht (Pin-/Flash-/Ram-technisch)
5. Sowohl das Maple-Mini, als auch das NucleoF411 sind schon eine weile
auf dem Markt, so dass du dafür funktionierende Beispiele findest.
W.S. schrieb:> Kurzum, ein jeder hier in diesem Forum kann dir schreiben "Nimm dieses> Evalboard, das finde ich klasse, also solltest du das auch klasse> finden!" - aber all diese fertigen Evalboards sind eigentlich NICHT für> Leute wie dich gemacht, sondern sie sollen etwaige Interesenten an die> Produlte der jeweiligen Firma anfüttern.> [...]> Natürlich kann man sich irgend ein Discovery oder Nucleo oder Xpresso> usw. zulegen und sich quasi damit nen Ring durch die Nase ziehen lassen> - und sich obendrein über eine ach so tolle "Community" freuen und> selbstverständlich auch all die dort üblichen Libs, IDE's etc. benutzen> und dabei sich selbst festnageln und geistig verkrüppeln. Her gibt es> Herden von solchen Leuten, die an ihrem Discovery-Board noch nie gelernt> haben, ein Pin ohne die ST-Lib wackeln zu lassen - und ebendiese Leute> sind ganz felsenfest davon überzeugt, daß es genau so EINZIGRICHTIG ist.> Also wirklich: frag dich selbst nach dem, was du tatsächlich willst.
Naja, die ST-Lib ist schon ein bisschen für die Katz, das macht
Freescale/NXP sicher besser und ist vor allem konsistenter.
Nichtsdestotrotz muss man (bzw. du) sich fragen ob man immer das Rad neu
erfinden will. Genauso notwendig wie ich (langfristig) ein
Grundverständnis der eigentlichen Hardware sehe, gibt es (kurzfristig
bzw. als Anfänger) nichts frustrierenderes als wenn man tagelang damit
verbringt seine eigenen Bugs zu beheben, nur um irgendwelche trivialen
Sachen zum laufen zu bekommen, weil diese Sachen halt für deine Hardware
nicht als Library verfügbar sind. Wenn es dann mal an komplexere Sachen,
wie z.B. Ethernet geht bleibt einem meist gar nichts anderes übrig als
auf fertige Libraries zurückzugreifen. Es geht also sehr wohl um eine
sogenannte "Community". Wenn es dieses Forum nicht gäbe wäre die
Popularität der AVR-Architektur in Deutschland vermutlich nicht einmal
halb so groß. Hier kann man eben mal drei bis vier kryptische Buchstaben
(evtl. mit einer Zahl garniert) einwerfen und jeder weiß sofort welches
Register gemeint ist. Da hat meiner Meinung nach ST momentan in der
ARM-Welt (und auch in diesem Forum) die Nase vorn. Wenn es nicht so wäre
würde ich evtl. auch eher zu Freescale raten.
Mit dem STLink (möglichst V2.1) kann man flashen + debuggen, damit kommt
schon sehr weit, dafür braucht man nichts anderes. Die teuren Tools
können zusätzlich Sachen wie Variablen Live anzeigen und Traces. Als
Studi bekommst du ja den Segger Edu günstig, aber ob der Tracen kann
weiss ich nicht.
Nino schrieb:> Grundsätzlich kann man sagen, dass ich noch einen ST-Link benötige zum> Programmieren/Debuggen. Wäre das hier geeignet oder soll ich lieber den> Seeger Debugger/Programmer kaufen?
Vergiss den ST-Link.
Hol Dir einen Segger J-Link EDU (50€)
* Meiste Auswahl unterstützter Controller überhaupt
* Von jeder IDE unterstützt
* Software für alle gängigen Betriebssysteme kostenlos verfügbar
* De-facto Industriestandard
* Keine technischen Beschränkungen in der EDU-Version, stattdessen
vertraut man Dir daß Dich das Produkt irgendwann ausreichend überzeugt.
* Hohe Qualität, viele Mannjahre stecken in dem Produkt und das merkt
man.
Wenn Du es später kommerziell nutzt kaufst Du Dir einfach das Teil im
schwarzen Gehäuse ohne "EDU".
Mich würde ehrlich gesagt auch die Minimalbeschaltung eines Cortex M
interessieren (mit Programmier/Debuginterface), ist das in den
entsprechenden Datenblättern zu finden, oder gibts da nichts
offizielles?
Nino schrieb:> die Minimalbeschaltung eines Cortex M
Hinreichend viele Abblockkondensatoren. :-)
Alles andere ist optional … Zum Programmieren brauchst die die beiden
SWD-Pins (SWCLK und SWDIO).
Nino schrieb:> Und der STM32F0, zu klein wegen der geringen PINanzahl?
Solange du selbst noch nicht weißt, was du alles damit machen willst,
ist die Wahrscheinlichkeit dass der uC nicht 100% passt ebenso 100%.
Entweder ist er zu groß, zu klein oder irgendein Feature fehlt.
Du hast dich für ARM entschieden, also warum kaufst du nicht den J-Link
wie empfohlen sowie irgendein günstiges ARM Board (z.B.
http://www.ebay.de/itm/STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-For-Arduino-UE-/201533903070?hash=item2eec5b50de:g:XPEAAOSwh-1W179S)
und fängst damit mal an, deine Sensoren und Servos mit Leben zu füllen.
Wenn du dann feststellst, dass der Controller nicht mehr reichen sollte,
nimmst du eben einen anderen.
Ich kenne Frauen, die sind beim Schuhkauf schneller als du beim uC
Jörg W. schrieb:> Hinreichend viele Abblockkondensatoren
Jeweils zwischen V und Gnd ?
Torben K. schrieb:> Ich kenne Frauen, die sind beim Schuhkauf schneller als du beim uC
Da gibts auch nichts zum Überlegen
Nino schrieb:>> Hinreichend viele Abblockkondensatoren>> Jeweils zwischen V und Gnd ?
Ja, natürlich, an jedes entsprechende Pinpaar einen, und an alle
sonstigen Pins, für die es der Hersteller im Datenblatt schreibt.
Nino schrieb:> Bernd K. schrieb:>> Hol Dir einen Segger J-Link EDU (50€)> In Ordnung, habe ich kein Problem damit.
Darf ich hier mal fragen? Ich habe diesen "2,90€ ST-Link V2" und kann
damit alles machen, sowohl mit dem STM8 als auch mit dem STM32. Was habe
ich übersehen, also was kann ich nicht damit machen?
Sogar beim AVR ist Source-Level-Debuggung preiswerter.
Jörg W. schrieb:> Ja, natürlich, an jedes entsprechende Pinpaar einen
Steht auch alles im Datenblatt. Dieses zu lesen und zu verstehen,
empfielt sich sowieso.
Christopher J. schrieb:> Wenn du nicht gerade in Assembler programmierst, dann ist es für dich> als Anfänger am einfachsten damit erklärt:> M0 - dick> M3 - dicker> M4 - am dicksten
nö.
Also hier mal ne Ergänzung:
M4F - der ist am dicksten.
mal ganz im Ernst: solange man es fertig bringt, in den Aufruf der Tools
die richtige CPU-Sorte hinzuschreiben, ist das Programmieren in C für
simple Programme (also ohne DSP und FP) für alle Mxxx gleich.
Allerdings sollte man bei den M4 ganz gründlich hinschauen: die gibt es
nämlich in verschiedenen Ausbaustufen:
M4 ohne alles
M4 mit DSP-Befehlen
M4 mit DSP-Befehlen und mit FP (Gleitkommaprozessor)
Manche Hersteller schreiben ganz klar hin, was tatsächlich drinsteckt,
bei anderen (insbesondere Freescale) muß man bei manchen Chips dreimal
die Doku durchlesen, bis man ne klare Aussage findet, welche M4
Geschmacksrichtung drinsteckt. Bleibt zu hoffen, daß unter der
Federführung von NXP diese gräßlichen Un-Dokus gestrafft und verbessert
werden.
Marco H. schrieb:> Das schöne ist das Freescale auch eine Entwicklungsumgebung und> Beispiele mitliefert.
Und das Häßliche bei Freescale ist, daß die meisten Chips innerlich
verkorkst sind und daß die Doku von Freescale die unleserlichste von
allen ist.
Zur Hardware (Kinetis):
- der interne RC-Oszillator ist zu ungenau für USB
- die FLL ist zu jitterig für USB und auch für I2S
- bei den anschließbaren Quarzen ist man sehr eingeschränkt, weil die
Taktaufbereitung nur wenige Kombinationen zuläßt.
- die Chips enthalten im Gegensatz zu denen von NXP und ST leider
keinen residenten Bootlader im ROM. Deswegen kann man die Dinger eben
nicht über ne serielle Schnittstelle programmieren wie die LPC und die
STM32. Stattdessen ist man auf einen J-Link angewiesen (anderes Zeug wie
Ulink, STlink usw. kann man hier vergessen). Nun und der J-Link-Edu hat
keine Lizenz für JFlash. Das ist ne Einschränkung und ein Ärgernis,
zumal man für den eigentlichen (baugleichen) J-Link prof. rund 500€
berappen muß. Der Basis-J-Link ohne Prof. kostet "nur" ca. 300€, hat
aber auch keine JFlash-Lizenz. Ätsch.
- manche Chips haben nen EZ-Port, womit man sie theoretisch wie ein
serielles Flash programmieren könnte - vorausgesetzt man hätte ein dafür
passendes Programm auf dem PC. Ist aber herzlich un-unterstützt.
- nach all dem Meckern was positives: Die Kinetis gibt es relativ
billig. Zum Beispiel der MK02FN128VLH10, ein 64 poliger M4F mit 100 MHz
und 128K Flash/16K RAM für rund 3.60€ netto. Andere sind da teurer.
Kurzum, für Anfänger kann ich von Freescale nur dringend abraten.
Auch von den XMCxxxx von Infineon muß man abraten, denn ei Infineon ist
der innere Aufbau mit ROM ab null so abartig, daß man zwingend dieses
DAVE benutzen muß, weil man sonst mit dem Startup graue Haare kriegt.
Auch bei den Stellaris oder wie die inzwischen von TI genannt werden,
findet sich kein residenter Bootlader, weswegen bei denen das Gleiche
gilt wie bei Freescale.
Was bleibt, sind NXP's LPC und ST' STM32F, die beide eigentlich
ordentlich aufgebaute und leserliche Dokus haben, auch im Chipinneren
vernünftig aufgebaut sind, mit Quarz und innerer PLL auch ihren USB
versorgen können und die beide einen residenten Bootlader haben, kit dem
man die Chips auch ohne JTAG/SWD-Geschirre programmieren kann.
W.S.
Torsten C. schrieb:> Darf ich hier mal fragen? Ich habe diesen "2,90€ ST-Link V2" und kann> damit alles machen, sowohl mit dem STM8 als auch mit dem STM32. Was habe> ich übersehen, also was kann ich nicht damit machen?
* Andere Controller als STM32
* J-Scope
W.S. schrieb:> und daß die Doku von Freescale die unleserlichste von> allen ist.
Das scheint Geschmackssache zu sein, ich zum Beispiel finde die Doku für
die Kinetis L ausgesprochen gut und einheitlich strukturiert und
vollständig und es reicht ein einziges Dokument (das Refman) für alles
was man bei der Arbeit braucht. Jedes Peripheriegerät wird ausführlich
besprochen und bei komplizierteren ist auch Beispielcode enthalten. Ich
weiß nicht was manche Leute immer für Probleme damit haben, ich komm
damit sehr gut zurecht.
W.S. schrieb:> Nun und der J-Link-Edu hat> keine Lizenz für JFlash.
Die braucht man auch nicht, immerhin gibts auch ein kostenloses
Kommandozeilentool zum Flashen (und zum Speicher-auslesen, Lockbits
setzen, löschen, etc), das ist eh besser ins Makefile zu integrieren
oder in ne Batchdatei als so ein unhandliches GUI-Tool.
W.S. schrieb:> Was bleibt, sind NXP's LPC und ST' STM32F
Und die Fujitsu -> Spansion -> Cypress (FM0/FM3/FM4). Auch sehr gute
Doku, reichlich Beispielcode und dank einer nicht vorhandenen
Abstraktionsbibliothek (STMCube und wie sie noch alle heißen) und keiner
eigenen Eclipsevariante wird man dazu "gezwungen" sich eine Umgebung
einzurichten mit der man dann auch STM32, LPC, XMC und wie sie alle
heißen befeuern kann.
Matthias
Bernd K. schrieb:> Das scheint Geschmackssache zu sein, ich zum Beispiel finde die Doku für> die Kinetis L ausgesprochen gut und einheitlich strukturiert und> vollständig und es reicht ein einziges Dokument (das Refman) für alles> was man bei der Arbeit braucht.
Kann ich nicht nachvollziehen.
Den Satz mit "und einheitlich strukturiert" finde ich aber klasse. So
kann man es auch ausdrücken. Guck dir mal das "K02P64M100SFARM.pdf" an.
Jaja, die Schreiber halten sich eisern an ihr Schema, selbst wenn es
unter Kapitel X, Absatz 1.2.3 nichts zu sagen gibt, wird eben dieser
Absatz gedruckt und enthält dann nur einen Platzhalter.
Ach, ich geb mal ein Beispiel:
Chapter 18 Miscellaneous Control Module (MCM)
18.1 Introduction
NOTE: For the chip-specific implementation details of this module's
instances, see the chip configuration information. The Miscellaneous
Control Module (MCM) provides a myriad of miscellaneous control
functions.
18.1.1 Features
The MCM includes the following features:
• Program-visible information on the platform configuration and revision
18.2 ...
wohlbemerkt, man ist hier gerade im REFERENZMANUAL, wo eigentlich die
"chip-specific implementation details" beschrieben sein sollten. Aber da
dieses RefMan sowohl für die 64K Flash, 128K Flash (usw...) gilt, wird
eben streng formal obige NOTE eingeblendet, auch wenn man im zugehörigen
Chip-Manual darüber nichts findet.
Also, nach heftigem Blättern findet man meist (nicht immer) das
Gesuchte, aber eines ist gewiß: Bei Freescale steht NICHTS dort, wo man
es wirklich braucht und ganz vieles ist ausgesprochen mißverständlich
dargestellt. Die Regel bei Freescale scheint zu sein, daß alles, dem
nicht an irgendeiner_ Stelle in _irgendeinem Dokument ausdrücklich
widersprochen ist, als gegeben anzusehen ist. So nach dem Motto "das
CLOCK-Signal liegt nicht an Pin 1 bis 38 an, es liegt auch nicht an Pin
40 bis 64 an." X-)
W.S.
W.S. schrieb:> wohlbemerkt, man ist hier gerade im REFERENZMANUAL, wo eigentlich die> "chip-specific implementation details" beschrieben sein sollten.
Sind sie auch.
Jedes Reference Manual enthält ein Kapitel "Chip Configuration", da drin
steht dann wieviele von welchen Einheiten dort verbaut sind und wie sie
untereinander verbunden sind (falls zutreffend).
Also:
1. im jeweiligen Kapitel über das Peripheriegerät nachlesen wie es zu
benutzen ist. Die meiste Zeit verbringst Du in "Register Map" und in
"Functional Description".
2. (falls notwendig oder zutreffend) im Kapitel 3 nachlesen wieviele
Instanzen davon in diesem Chip verbaut sind und wie sie angeschlossen
sind (Muxer-Tabellen, Module-Module interconnects, Pinout, Pin-Muxing,
etc)
Immer das selbe Schema. Nach zwei Tagen hast Du das drauf. Entweder es
steht im jeweiligen Kapitel des Peripheriegeräts wenn es um die reine
Funktionsweise und Benutzung geht oder es steht in Kapitel 3 wenn es um
die konkrete Beschaltung des/der konkreten Moduls/Module in diesem in
diesem konkreten Chip geht.
Es hilft wenn Du Dir einen PDF-Reader zulegst der ein ausklappbares
Inhaltsverzeichnis in der Seitenleiste anzeigen kann, dann navigierst Du
nach zwei Tagen jedes JEDES Kinetis Reference Manual (auch solche die
Du nie zuvor gesehen hast) zielsicher mit verbundenen Augen. Es ist
immer Kapitel 3. Irgendwas scheint zu fehlen? In Kapitel 3 wirds
drinstehen. Das nenn ich einheitlich.
W.S. schrieb:> Auch bei den Stellaris oder wie die inzwischen von TI genannt werden
Tiva
> findet sich kein residenter Bootlader
Die werden durch MSP432 ersetzt. Dort findet man das vom MSP430
bekannte, inklusive BSL.
Wow das kostet insgesamt satte 90€. Ich glaube ich versuche zuerst doch
lieber den ST-Link v2 aus China, was ich noch nicht ganz begriffen habe,
muss die IDE den Programmer/Debugger unterstützen? Falls ja, wäre ich
mit dem ST-Link an EM::Blocks (was ja nicht schlechtes wäre, scheint ne
gute IDE zu sein)
Nino schrieb:> muss die IDE den Programmer/Debugger unterstützen?
Ja, na klar.
Andererseits, wenn die IDE OpenOCD unterstützt, dann hast du das
J-Link mit dabei und diverse andere Adapter, von billigen Eigenbauten
bis zu den Tools verschiedener Hersteller.
Ok, Coocox unterstützt zB den ST-Link v2, dann passt das ja, vielen
Dank. Dann hätte ich jetzt zumindest die Hardware zusammen. Freu mich
schon darauf loszulegen.
Nino schrieb:> Ok, Coocox unterstützt zB den ST-Link v2, dann passt das ja
EM::Blocks auch. Jedenfalls alle IDEs, die ich kenne.
Der einzige Unterschied scheint zu sein,
wie Bernd K. schrieb:> * Andere Controller als STM32> * J-Scope
Jörg W. schrieb:> Andererseits, wenn die IDE OpenOCD unterstützt, dann hast du das J-Link> mit dabei
Riskierst halt ne Gesichtslähmung beim Debuggen.
Aber ja, rein formell könnte man durchaus soweit gehen und sagen das
funktioniert in allen wesentlichen Punkten.
Nino schrieb:> Wollte eigentlich auch das Maple-Mini, aber da gab es keine> SWD-Schnittstelle, daher fiel meine Wahl auf das o.g. Board.
Doch hat es:
PA13 - SWDIO
PA14 - SWCLK
siehe angehängtes Pinout bzw. STM32F103 Datenblatt und Reference Manual.
Nino schrieb:> muss die IDE den Programmer/Debugger unterstützen?Nino schrieb:> Ok, Coocox unterstützt zB den ST-Link v2
Du musst bei Debuggern unterscheiden zwischen
- der eigentlichen Hardware (ST-Link, J-Link, uLink2, etc.)
- dem eigentlichen Software-Debugger (meistens GDB)
- der Software, die zwischen GDB und Hardware sitzt (OpenOCD, Segger
GDB-Server, etc.)
Eine IDE hat mit der direkten Debuggerhardware normalerweise nichts am
Hut, sondern kommuniziert über die Software, die dazwischen sitzt
(OpenOCD, Segger GDB-Server) mit deiner Hardware. Du musst dich also nur
fragen ob die IDE deiner Wahl OpenOCD bzw. den Segger GDB-Server
unterstützt und das ist für Coocox, Em:Blocks, Eclipse, QtCreator und
wie sie alle heißen der Fall. Dann ist natürlich noch wichtig, das
OpenOCD bzw. Segger deinen Hardware-Debugger unterstützen und natürlich
sollte dein Hardware-Debugger mit deinem Mikrocontroller kommunizieren
können.
Hier nochmal zur Übersicht wie die Kommunikation zwischen den
Bestandteilen für das Beispiel mit OpenOCD und ST-Link abläuft:
Flashen:
IDE<->OpenOCD<->ST-Link<->STM32
Debuggen:
IDE<->GDB<->OpenOCD<->ST-Link<->STM32
MapleMini habe ich aus versehen auch mal geordert. Verstehe die
wiederholte Empfehlung nicht. Das Pinout ist fürchterlich und scheint
nur mit der angepassten Arduino-Umgebung nutzbar. Für ordentliche
Programmierung muss man sich selber noch eine Tabelle
Pinout-zu-Prozessor-Pin erstellen. Unnötig fehleranfällig.
Die STM32F052-Disco hat nur zwei User-Buttons und eine Dreifarb-LED
verbaut, ist also hervorragend für den Einstieg geeignet. Nicht alle
Discovery-Boards sind überladen.
W.S. schrieb:> Christopher J. schrieb:> Wenn du nicht gerade in Assembler programmierst, dann ist es für dich> als Anfänger am einfachsten damit erklärt:> M0 - dick> M3 - dicker> M4 - am dicksten>> nö.> Also hier mal ne Ergänzung:> M4F - der ist am dicksten
Was ist dann mit M7 ?
Es gibt auch die ARM Cortex R und die A Serie.
Man könnte zum Einstieg auch gleich auf SoC ala Raspy und ko gehen und
hat dann gleich ne embeded Lösung mit Betriebssystem drunter was auch ne
Visualisierung leichter macht als bei den low level frickel controllern
ala cortex m
Bernd K. schrieb:>> Andererseits, wenn die IDE OpenOCD unterstützt, dann hast du das J-Link>> mit dabei>> Riskierst halt ne Gesichtslähmung beim Debuggen.
Schreib' doch bitte nicht über Dinge, die du (zumindest in ihrer
aktuellen Version) nicht kennst.
OpenOCD mag schwieriger konfigurieren zu sein als die Segger-Tools
(logisch, wenn man 50 verschiedene Geräte statt nur eines unterstützt),
aber ansonsten ist das so schnell, wie die Tools es hergeben. Wenn
dein Tool nur ein alter „Wiggler“ ist, ist es natürlich nicht schnell,
aber wenn's ein J-Link oder ein aktueller CMSIS-DAP-Dongle ist, dann
ist es eher das Nachdenken über den Bug, den man sucht, was da Zeit
kostet.
Jörg W. schrieb:> aber ansonsten ist das so schnell, wie die Tools es hergeben. Wenn> dein Tool nur ein alter „Wiggler“ ist,
Das Tool ist ein ST-Link V2.1 orginal von STMicroelectronics auf nem
Nucleo-Board verbaut. Die Lahmarschigkeit dieser Kombination ist weit
jenseits von Gut und Böse und spottet jeder Beschreibung. Am Anfang
hatte ich genau wie Du noch keinen Vergleich und dachte Du daß das
normal ist, aber eines Morgens lag dann endlich der Segger auf meinem
Tisch und ich bekam davon sofort einen GESCHWINDIGKEITSRAUSCH. Lazenz
beim Einzelschritt unterhalb der Wahrnehmungsschwelle! Seither definiert
DAS für mich die Normalität und alles andere sind Krücken.
^ Das liegt aber nicht am STlink sondern an der Software (GDB, OpenOCD
bzw der Kommunikation zwischen den Komponenten).
Mit Crossworks kann ich jedenfalls beim Debuggen keinen Unterschied
zwischen einem JLink und dem STlink feststellen. Beim Einzelschritt
laufen beide ohne Verzögerung. Wenn ich die F11 Taste festhalte flitzt
der Debugger mit der Tasten-Wiederholrate durchs Programm.
Flashen dauert beim STlink aber fast doppelt so lange.
Stefan schrieb:> Flashen dauert beim STlink aber fast doppelt so lange.
Beim Atollic TS dauert das Flashen knapp 10s für 140 kB. In der Config
vom STLink GDB Server habe ich von 8 auf 32 bit parallel mode
umgestellt, vorher hat der download fast 4x so lange gedauert:
# Set flash parallelism mode to 32, 16, or 8 bit when using STM32 F2/F4
microcontrollers
# Uncomment next line, 2=32 bit, 1=16 bit and 0=8 bit parallelism mode
monitor flash set_parallelism_mode 2
Vielleicht kannst du das auch tunen.
Dirk K. schrieb:> Das Pinout ist fürchterlich und scheint> nur mit der angepassten Arduino-Umgebung nutzbar. Für ordentliche> Programmierung muss man sich selber noch eine Tabelle> Pinout-zu-Prozessor-Pin erstellen. Unnötig fehleranfällig.
Verstehe nicht ganz was du meinst. Auf dem Silkscreen sind nicht die
Bezeichnungen aus dem Datenblatt von ST (PAx, PBx,...), sondern
irgendwelche Zahlen. Um zu wissen welcher Pin des F103 nun dahinter
steckt braucht man so etwas wie eine Tabelle bzw. so etwas wie das von
mir angehängte Pinout-Diagramm, da gebe ich dir recht. Das ist aber doch
bei den Nucleos auch nicht anders. Programmieren kann man das Teil
jedenfalls zu 100% ohne irgendeine Arduino Library.
Wenn man den vorhandenen Bootloader nutzen will, benötigt man eben die
entsprechenden Linker-Skripte, man kann das Teil jedoch ganz normal über
SWD flashen.
Dirk K. schrieb:> Die STM32F052-Disco hat nur zwei User-Buttons und eine Dreifarb-LED> verbaut, ist also hervorragend für den Einstieg geeignet. Nicht alle> Discovery-Boards sind überladen.
Hab mir gerade mal das F051-Disco angeschaut. Das sieht in der tat
richtig ordentlich aus. Ist didaktisch vermutlich tatsächlich sinnvoller
als ein Maple-Mini.
Huch, das Attachment hatte ich heute morgen auf dem Tablet nicht gesehen
(ausgefiltert in der Mobilansicht des Forums?). Ok, wenn die fertig
vorhanden ist, passt das ja wieder. Finde es ähnlich wie bei Arduino
Nano/Pro Mini jedoch sehr nervig, den eigentlichen Pin laut Datenblatt
zu finden; die Boards sind schließlich auch besser direkt mit AVR-GCC
nutzbar, wenn man nicht die Arduino-Lib einsetzen will. Das ist bei den
billigeren STM-Mini-Boards durch den namentlich passenden Aufdruck
einfacher gelöst.
Bernd K. schrieb:> Am Anfang hatte ich genau wie Du noch keinen Vergleich und dachte Du daß> das normal ist, aber eines Morgens lag dann endlich der Segger auf> meinem Tisch und ich bekam davon sofort einen GESCHWINDIGKEITSRAUSCH.
STM kenne ich nicht.
Bei uns liegen jedenfalls die Seggers im Schrank, die nimmt keiner.
Nino schrieb:> Ebay-Artikel Nr. 311156408508> ...> Jetzt muss ich mir nur noch das Segger J-Link bestellen, würde ihn hier> bestellen:>> aber das Anschlusskabel sieht komplett anders aus als die Pins auf dem> Board welches ich gekauft habe, brauche ich also ein zusätzliches Kabel?
Ja, das Angebot bei Mouser kenne ich. Ist irgendwie schon seltsam,
gelle?
Ansonsten ist zum Anschlußkabel zu sagen, daß man es sich ganz einfach
selber machen kann. Mir ist es schon seit langem viel zu blöd, so ein 20
(oder neuerdings 16) poligen Ungetüm auf die LP zu setzen. Das ist auch
wirklich nicht nötig. Besorge dir einen auf den Segger passenden
Steckverbinder und führe nur die Leitungen von dort weg, die du wirklich
brauchst. Mal kurz nachdenken: SWDIO, SWCLK, (NRST,) GND, VCC vom Board.
Das reicht eigentlich.
Ansonsten ist das genannte Board mMn. völlig in Ordnung: nen
STM32F103C8T6 (72MHz, 64K Flash, 20K RAM) mit Quarz und USB-Buchse für
rund 3€ is OK. Mit dem USB-Port hast du nen netten Anschluß für einen
VCP zwecks Kommunikation mit deinem PC. µC-Treiber hier bei Bedarf.
W.S.
Ja ich denke für 3 Euro habe ich nichts falsch gemacht (ist immerhin ein
M3!), das stm32f0 disco kostet ca 15 euro, das wäre später zu schade
fest einzubauen, das Chinateil nicht.
Habe mir jetzt doch den J-Link Edu bestellt, vielleicht zahlt es sich ja
doch aus.