Archiv verlassen und diese Seite im Standarddesign anzeigen : Alternative zu STM32 für ARM-Einstieg
White_Fox
20.03.2017, 14:26
Hallo Allerseits
Wer als ARM-Anfänger den Einstieg mit STM32 versucht hat kennt das Problem: Wie und mit was programmiert man die Teile? ST schmeißt einem die Hardware förmlich hinterher (so ganz out-of-the-box funktioniert das dann auch mit nur einem Nucleo nicht mangels Peripheriehardware), aber dann ist man mehr oder weniger auf sich allein gestellt.
Wenn man dann Google bemüht oder in Foren (wie hier) nachfragt bekommt man stets nur eine weitere Antwort, aber bis man es dann hat dauerts echt ne Weile und erfordert auch einige Ausdauer. Jeder machts anders, jeder klaubt sich von irgendwo ein anderes Tool zusammen...irgendein Ecplise-Verschnitt, wo man aber noch irgendwelche Bibliotheken von sonstwo her importieren muß, ein anderer nutzt den eifnachen Texteditor, irgendeinen separaten Kompiler und schreibt was von einem Makefile-und propagiert dies als besonders einfache Lösung.
Ich wollte euch daher mal an meiner Erfahrung von der Embedded World teilhaben lassen. Ich konnte zwei Boards von Renesas ergattern. Zugegeben, Renesas ist mit Hardware nicht so spendabel wie ST. Für das eine hab ich mich mit einem Renesas-Mitarbeiter ne Weile unterhalten (und hab nur zufällig gesehen das Renesas solche Boards hat weil ein Mitarbeiter gerade neben mir in einem Schrank rumgewühlt hat), aber dann hat er auf Nachfrage doch noch je eines für mich und meine Leute rausgerückt. Ist ihm sichtlich schwergefallen. ;)
Für ein anderes Board hab ich mir eine Stunde Vortrag über das Renesas Synergy Dingsbums angehört. Der Vortrag war informativ, allerdings zwischen 1430 und 1530, und Vorträge zu einer solchen Uhrzeit...naja.
Was ich aber sehr bemerkenswert finde: Renesas schmeißt einem nicht einfach nur die Hardware vor die Füße wie Futter vor den Hund, sondern ich hab zu jedem Kit noch eine ausführliche Toolchain-Anleitung bekommen. Da wird auf knapp 100 Seiten beschrieben und erklärt wie und warum man was installieren muß um zu eigenen Projekten zu kommen. Die Projekterstellung und Bibliothek-Einbindung wird an drei kleinen Projekten gezeigt (eines davon nutzt sogardie USB-Schnittstelle). Die knapp 100 Seiten bestehen zu drei Vierteln aus Bildern, so wild ist das also nicht. Und es ist wirklich idiotensicher erklärt, auch für Leute, die noch nie mit Eclipse zu tun hatten (bei ST hatte ich immer den Eindruck, daß das quasi vorrausgesetzt wird).
Sollte sich der ein oder andere überlegen, künftig mit ARMs einzusteigen kann ich sehr empfehlen, sich lieber mal die CPUs von Renesas anzusehen. Würde ich mich jetzt neu in ARMs einarbeiten-ich würde lieber mit diesen anfangen als mit den STM32.
Meine persönliche Erfahrung bezieht sihc jetzt Hauptsächlich auf Atmels SAM L (Beruflich) und SAM D (Hobby) Reihen. Aber ich habe auch schon an anderen ARMs arbeiten dürfen, STM32 war da auch dabei.
Atmel bietet mit seiner start.atmel.com Webseite ein komfortables Tool zur Konfiguration eines Projektes an, welches man dann in unterschiedlichen IDEs einbinden kann.
Der Code der dort generiert wird hat ordentlich Struktur, allerdings ist das auf Treiberebene mit der Struktur schon wieder so ne Sache ... da beschränkt es sich dann schon stark auf Makros und das schmeckt mir nicht so sehr, ist aber bisher stabil. (DEUTLICH besser als das alte Atmel Software Framework, obwohl es darauf basiert)
Die Datenblätter der SAMs sind aber extrem Umfänglich und teils nicht gut beschrieben.
PS: Habe mich bisher nur intensiver mit der Peripherie der Atmels auseinandergesetzt, aber was ich für absolut herausraegnd halte sind z.B. Dinge wie die Möglichkeit Teile der Peripherie intern zu verdrahten (Glue Logic) um nach Außen hin deutlich Pins zu sparen
Eine für mich wichtige Frage: Kann man für die Chips auch unter Linux Code kompilieren und flashen? Und vorallem bei Projekten mit mehreren Leuten: muss man die Hersteller eigenen Tools verwenden, oder kann man auch den freien arm-gcc-none-eabi in Kombination mit Makefiles/CMake verwenden?
Da hat der STM32 bisher immer gepunktet. (Lässt sich sogar mit GDB debuggen)
Es gibt eine Linux toolchain von Atmel, ja.
Auf deine Frage im speziellen spuckt mir Google folgende Seite aus
https://www.acmesystems.it/yarm_asf_linux
sieht ziemlich exakt nach der Antwort auf die Frage aus !?
Das war mehr eine allgemeine Anmerkung zu dem Thema. Aber trotzdem Danke für deine Antwort, dass Atmel das unterstützt war mir schon bekannt. Interessanter ist die Frage glaube ich jedoch bezüglich der im 1. Post genannten Chip Serie.
White_Fox
21.03.2017, 20:44
Das Renesastool (und auch das ST-eigene AC6 System Workbench) basieren auf Eclipse-von daher sollte das unter Linux funktionieren.
Bisher hab ich hauptächlich mit dem Embedded Studio von Segger gearbeitet und kann es wärmstens empfehlen. Das basiert auf Crosscore, und läuft ebenfalls unter Linux. Und das frißt auch alle Bibliotheken und prügelt die in die jeweiligen Chips rein, Renesas müßte da auch dabei sein. Das Schöne: Segger hat ein recht gutes Supportforum, da hatte ich bisher stehts bis spätestens kurz nach 1600 eine Antwort von einem Segger-Mitarbeiter.
Wer als ARM-Anfänger den Einstieg mit STM32 versucht hat kennt das Problem: Wie und mit was programmiert man die Teile? ST schmeißt einem die Hardware förmlich hinterher (so ganz out-of-the-box funktioniert das dann auch mit nur einem Nucleo nicht mangels Peripheriehardware), aber dann ist man mehr oder weniger auf sich allein gestellt.
Ich benutze ganz gerne Arduino-artige Frameworks.
Da gibt es einige bei
http://www.stm32duino.com/index.php
Beim STM32GENERIC Framework
https://github.com/danieleff/STM32GENERIC
gibt es momentan die meiste Entwicklung und es werden viele Boards von STM unterstützt.
oderlachs
13.06.2017, 13:26
Hallo Stochri !
ich wollte jetzt auch auf STM32Ardu Pfaden wandeln, aber es ist beim Wollen geblieben. Ich bekomms einfach nicht gebacken, nicht etwa den Code oder Einrichtung der IDE...nein ich kapiere gar nicht wie und mit was ich den wohl(?) erforderlichen Bootloader drauf brennen soll...
Ich habe mir mal so ein STM32F103C8 Minimum Board angeschafft, weil die Discovery Bord STM32 wie auch STM8 Version liegen seit ihrem Erscheinen in der Hintersten Schublade....
Ja mit KEIL MDK bzw µVersion habe ich mal ne LED blinken lassen können....fragt mich aber nicht wie...
Vielleicht weiss ja wer mal einen Link wo das auch mit der "Verdrahtung" zw.. Bootloaderflash beschrieben ist....
Gruss
Gerhard
Nachtrag : Da nun heute ein "gartenfreier Tag" Tag war , wegen dem Wetter habe ich mich nochmals mit dem Minimum-Board STM32F103C8 und der Arduino IDE auseinander gesetzt, nach dem Entwirren von vielen Wirrwar der verschiedenen Webbeschreibungen habe ich es doch geschaft wenigstens die LED per ArduinoIDE blinken zu lassen.
Ein ST-Link V2 dient als Upload-Helfer.
Nun will ich mal noch versuchen ob ich mit der Lite Version von Atollic auch was schaffen kann...
Achim S.
13.06.2017, 16:44
Hallo Gerhard
Bin gerade dabei vom Atmega128 auf den ARM D21 umzusteigen. Bin noch im totalen Blindflug was die programmierung angeht. Werde beim AVR Studio 7 bleiben. Damit geht es ja. Leider finde ich keinerlei Angaben oder Tuts oder so was wie man das macht.
achim
oderlachs
13.06.2017, 16:58
Hallo Achim !
Ich war bis heute eigentlich auch im Blindflug in Sachen STM8/32, aber wie schon gesagt hatte ich mit dem Discovery-Board ..F0 , ja schon alter Kaffee, etwas Erfolg mit der Keil IDE, weil ich damit schon 8051 u.ä. programmiert hatte. So richtig verstanden habe ich es auch nicht was da so abgehet.
AVR-Studio 7 benutze ich gar nicht, auf meinem Programmier - PC Linux/Win7 ist es zu Ressourcen lastig. Da läuft für mich voll ausreichend die letzte Version von 4.xx. Ich habe sonst auch nur Linux in Verwendung, mit "Geany, Eclipse, und MPLabX-IDE(PIC). Mit Atollic für STM versuche ich mich gerade.
Nun, da ja per Arduino - IED es einigermaßen zu programmieren geht, will ich aber auf andere C/C++ IDE s übergehen, weil mir Arduino etwas zu engstirnig/eigensinnig ist.
Gerhard
Nachtrag 14.06.2017:
Musste heute feststellen das unter Win7 64Bit prof. das Programmieren über den ST-Link V2 mittels Arduino IDE gar nicht geht.
Da ich unter Windows mit Keil MDK gerabeitet hatte, wollte ich das Programmieren des STM32 Minimal-Boards auch unter Windows mittels Arduino-IDE versuchen..leider kein Erfolg :(
White_Fox
15.06.2017, 20:29
@oderlachs:
Wenn du schon Eclipse hast, dann lad dir das Plugin von ST runter-das ist genau für deine Zwecke gebaut worden.
Nennt sich System Workbench 4 STM32 oder so...
Um dir den Einstieg zu vereinfachen solltest du dir auch CubeMX ansehen.
https://www.youtube.com/watch?v=LiNFseOYHfw
oderlachs
18.06.2017, 12:16
Hallo WF!
Danke Dir ...habe ich gemacht, aber mein Eclipse kommt aus den Fehlermeldungen gar nicht raus...:(
Mit dem Cube da komme ich gar nicht zurecht, denke aber das liegt an meinen English-Unkenntnissen ;)
Na gut, ich habe noch zwingend die Version 3.8 unter Linux zu laufen. Kann sein das es daran liegt.
Debian 9 soll dieser Tage öffentlich als stable Version z.V. stehen, mal sehen was das dann dazu sagt...muss ja nichts übereilen...
Gruss und Dank
Gerhard
White_Fox
20.06.2017, 21:39
Hui, wie liest du denn dann ein Datenblatt? ;)
Der Cube generiert dir ein Projekt, das du z.B. in Keil oder einer anderen IDE weiterentwickeln kannst. Der Cube sammelt dir alle notwendigen Bibliotheken in deinem Projekt zusammen und stellt ein paar praktische Kleinigkeiten bereit. Außerdem generiert dir der Cube die ganze Hardware-Initialisierung. Während du beim AVR bloß das PIN- und das Datenrichtungsregister zu konfigurieren hast, so mußt du beim STM32 immerhin schon die Taktversorgung einstellen, wählen ob Pull-down- oder Pull-up-Wiederstände aktiviert oder der Pin als Push-Pull-Stufe konfiguriert werden soll, Alternativfunktion ja/nein, Eingang oder Ausgang, und für was das SPEED-Register war hab ich schon wieder vergessen.
Timer, UART, AD-Wandler usw. sind ähnlich umfangreicher als die Pendants auf dem AVR.
Und diesen ganzen Konfigurationsquatsch...den erledigt die Cube für sich. Die fertige main() in einem Cube-Projekt ruft am Anfang z.B. eine handvoll Funktionen auf, dann kommen zwei Kommentare worin steht:
//...User-Code...
Zwischen diesen Kommentaren kommt dann dein eigentliches Hauptprogramm. Deine konfigurierten Pins kannst du sofort als solche verwenden, konfigurieren mußt du da nix mehr. Gleiches gilt für Timer und den Rest.
Ach ja...bleib beim programmieren unbedingt in den Bereichen, die dir der Cube mit den Kommentaren vorgibt (und lösche die Kommentare nicht). Dann kannst du die Konfiguration auch im Cube ändern, ohne daß dein eigentliches Programm angerührt wird.
Und willst du bestimmten Hardware-Komponenten einen eigenen Namen geben...auch kein Problem. Dann nennste PinA13 z.B. in PIN_LCD_En um oder so. Auch das fummelt der Cube dir zurecht...
oderlachs
21.06.2017, 16:04
Hallo WF,
Recht vielen Dank für die ausführliche Erklärung !!
Ja beim Datenblatt kann ich mich gerade so "durchwurschteln" ;), ja es ist leider so. Meine Ansprüche für private Anwendungen , sind dem fast immer zu Genüge getan.
Bei PIC bin ich ja auch erst Einsteiger, beim AVR Chip konnte ich mich durch Hilfe guter deutscher Fachbücher und Web Foren so durch mogeln .
Nun ist ja wieder Sommerzeit und da ist man nicht so oft am PC und PIC/STM/AVR und die Gieskanne im Garten braucht weder PIC noch Datenblatt... ;)
Ich brauch mal wieder ein paar Regentage um fast ganztägig am PC was zu machen ich denke es wird mit der zeit dann besser.
Gruss und Dank
Gerhard
Jetzt habe ich leider eine ganze Weile nicht im Forum gelesen und deshalb die Diskussion etwas verpasst.
Nachtrag : Da nun heute ein "gartenfreier Tag" Tag war , wegen dem Wetter habe ich mich nochmals mit dem Minimum-Board STM32F103C8 und der Arduino IDE auseinander gesetzt, nach dem Entwirren von vielen Wirrwar der verschiedenen Webbeschreibungen habe ich es doch geschaft wenigstens die LED per ArduinoIDE blinken zu lassen.
Wenn das mit dem Blinken geklappt hat, bist Du schon ziemlich weit. Ich nehme mal an, Du hast das BluePill Board (http://wiki.stm32duino.com/index.php?title=Blue_Pill).
Das Menue "Examples" ist nämlich Kontext sensitive. Das bedeutet, die Bespiele werden erst angezeigt, wenn man das richtige Board ausgwählt. hat.
Da das Blinken aber geklappt hat, dürften da jetzt ziemlich viele Beispiele für fast alles sichtbar sein.
Hier sind die Beipiele auf Github, (https://github.com/rogerclarkmelbourne/Arduino_STM32/tree/master/STM32F1/libraries) die sollten dann in den Examples in der Arduino-IDE sichtbar sein.
Dazu kommt dann noch, dass man viele Libraries über Library-Manager (https://learn.sparkfun.com/tutorials/installing-an-arduino-library/using-the-library-manager)installieren kann. Das funktioniert aber nur, wenn die Libraries nicht nur für AVRs gemacht sind.
Mit STM-Cube würde ich lieber nicht anfangen. Wenn man das nur gelegenheitsmässig macht, wird man wahnsinnig.
Da ist die Arduino-Version 1000x besser.
Übrigens: möglicherweise funktioniert jetzt sogar die serielle USB-Schnittstelle auf Deinem STM32F103 Board,. Allerdings muss man noch den fehlbestückten 1.5K Widerstand nachrüsten, wie beim BluePill Board beschrieben.
Nach dem ersten flashen des Blink-Beispiels sollte der Treiber dafür installiert sein.
steffinuss
21.09.2017, 23:09
Ich glaube, meine Notizen zum STM32 könnten hier hilfreich sein.
http://stefanfrings.de/stm32/index.html
nur interessehalber, weil ich ja bereits den Arduino Due, ebenfalls mit ARM Cortex M3, seit Jahren erfolgreich verwende:
Was sind die Vorteile des STM32 gegenüber dem Due?
Immerhin hat dieser 84MHz cpu Takt, 92kB RAM, >60 GPIOs, 4 U(S)ARTs, SPI, 2 I2C, 12 ADC, 2 DAC, angeblich sogar CAN, er wird voll durch die Arduino-IDE unterstützt, und kostet als Klon nur knapp über 10 EUR (versandkostenfrei über Ebay)
steffinuss
22.09.2017, 12:20
Das Arduino Due Board ist mit einem anderen Mikrocontroller, nämlich dem AT91SAM3X8E bestückt.
> Was sind die Vorteile des STM32 gegenüber dem Due?
Das kommt ganz drauf an, mit welchem konkreten STM32 Modell und Board du vergleichen möchtest.
Bei meinem aktuellen Kandidaten (dem Bluepill Board) mag ich, daß es auf ein Breadboard passt und problemlos auf Lochrasterplatinen gelötet werden kann.
Die große Menge I/O Funktionen, die du gerade genannt hast, braucht eich so noch nie. Aber das kann sich ändern.
Jedenfalls enthalten beide Serien einen ARM Kern.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.