[STM32] Zweite Schritte

In der Theorie sah CubeMX gut aus, in der Praxis nicht wirklich … Vorallem generierte es Code mit einem Logikfehler, der dazu führte, dass die System-Clöcke (^^) nicht eingestellt werden konnten und der Controller stets in eine while (1) {} Error-Behandlungs-Loop hängen blieb. (hätte mein STLinkV2-Debugger nicht schon funktioniert, hätte ich den Fehler niemals gefunden!)

Zudem gefiel mir der Workflow zum Erstellen des Makefiles nicht und der Code war durchsetzt mit Kommentaren, wo man User-Funktionen, Methoden, Variablen reinschreiben darf … Das hat natürlich nur eine Relevanz, wenn man den Code nochmal mit CubeMX überarbeiten möchte, weil man z.B. eine neue Peripherie verwenden möchte, die man zuvor noch nicht konfiguriert hatte.

Das Kompilat ergab 20kB Code, ohne dass etwas gemacht wurde. Das erschien mir schon sehr aufgeblasen.

Und ein weiteres großes Manko: Viele Tutorial verwenden ST’s HAL nicht, weshalb man Code-Schnippsel ständig übersetzen müsste, worauf ich keine Lust habe.

Also flog der Kram mit HAL wieder raus und es wurde sauber ein Blinky-Projekt mit dem ARM-Eclipse-Plugin erstellt und das angepasst.

Erfreulicherweise geht die CMSIS-Standard-Library schon von einem externen 8Mhz Quartz aus, weshalb man nur noch ein Define auf 48MHz setzen musste und voila, der HSE (High-Speed-External-Clock) und die PLL sind richtig gesetzt.

Ich konnte die Firmware auch schon auf meinem „custom-Board“ testen … Es gibt ein git-Repository mit einem st-flash Tool, das zum Flashen über einen USB STLinkV2 (für 2EUR beim Chinesen) verwendet werden kann. Eine Anleitung gibt es hier

Auf den Seiten des ARM-Eclipse-Plugins folgte ich heute der Anleitung, wie man Eclipse mit OpenOCD konfiguriert und ich muss sagen, das funktioniert super! Endlich richtiges Debuggen mit Breakpoints und allem, was dazu gehört 🙂 Und das funktioniert sogar unter Linux 😉

Nach etwas Googeln konnte ich die ersten 2 PWM-Generatoren auf meinem Board in Betrieb nehmen … Morgen kommen die Schieberegister für das LED-Dot-Matrix-Display dran usw …

Morgen gibt es dann auch mal ein Foto von dem Dings, das ich überhaupt bastel …^^

STM32F103 – Erste Schritte

Lang lang ist es her, dass ich mal produktiv mit µCs gearbeitet hab. Sträflich vernachlässigt hab ich eines meiner liebsten Hobbies.

Nachdem so viel Zeit vergangen ist, hat sich auch wieder viel geändert. Die AVR 8Bit-Controller gibt es immer noch … Da hat sich erstaunlich wenig getan. Offensichtlicher sind die Entwicklungen im ARM-Bereich. Da scheinen sich die Cortex Cores stark durchgesetzt zu haben. Atmel spielt nur noch eine Nebenrolle (damals der SAM7Sxxx war der letzte, den ich noch verwendete) und von den LPCxxx hört man auch nicht mehr viel. Damals war ich auf einer Präsentation von Renesas bzgl Cortex M3 und sah die Relevanz dieser Kerne nicht. Cortex hat sich durchgesetzt und von Renesas hört man auch nichts mehr.

ST scheint wohl derzeit in zu sein, weshalb die Wahl auf die STM32-Controller fiel.

Der Controller der Wahl war schnell gefunden … Die Bauteilsuche des Shops meines vertrauens nach STM32 gefragt und nach Preis sortiert und voila da war er: Der STM32F103C8T.

Einer der Schwachbrüstigen, aber dafür günstig 😉

Mir fiel ein, dass ich ja sogar noch ein STM32F4xx-Discovery-Board irgendwo rumliegen habe, d.h. ich hatte tatsächlich schonmal etwas damit gemacht … Und tatsächlich, hatte ich da sogar mal etwas gepostet 🙂 Damals … Vor 2 Jahren^^ (Und ahja, da war noch was … Mit EM::Blocks hatte ich den Okarina-Klanggenerator schon auf dem Board laufen und wusste das kaum noch^^)

Ich denke, damals hatte ich CooCox verwendet … Das glaube ich, gibt es aber nur für Windows.

Für Linux gibt es aber ein CubeMX-Tool von ST, mit dem die ganze Peripherie-Konfiguration erschlagen werden kann. Grafisch anklicken, was man wie konfiguriert haben möchte und es erzeugt ein C-Code-Framework, das man nur noch kompilieren muss.

Das werde ich mir jetzt gleich mal anschauen 🙂

Schnell installiert und selbsterklärend, was man machen muss … Das gefällt mir schon mal! Da wird einiges an Datenblatt-lesen durch eine GUI ersetzt 🙂

Spectacle.TJ1506

Das CubeMX ist wohl nur zur Erzeugung eines C/C++ Frameworks. Es kann einige Projektfiles erzeugen, die von IDEs diverser Hersteller gelesen werden können (z.B. Keil), aber das Ziel ist der arm-gcc.

Hierfür gibt es netterweise ein Konvertierungs-Script, mit dem ein mit CubeMX erstelltes SW4STM32-Projekt in ein Makefile umgewandelt werden kann, welches dann von Eclipse mit ARM-Plugin importiert werden kann.

Zu guter letzt: Die IDE der Wahl ist natürlich Eclipse. Man installiert sich die C++/C-Variante (mit CDT) und anschließend das ARM-Eclipse-Plugin und die ARM-GCC-Toolchain. Dann lässt sich das zuvor erstellte Makefile importieren, kompilieren und (voraussichtlich) debuggen 🙂

 

Memo an mich selbst

Fokus-Schift Elektronik

Hah, ich hatte ja noch einen Blog … und den schon ziemlich lange.

Ich denke, ich werde den wieder öfters mal nutzen … Schwerpunkt-Thema dieses mal Elektronik-Entwicklung 🙂

Da erfahrungsgemäß das Interesse und die Resonanz in meinem Umfeld bezüglich solcher Themen recht bescheiden ist, gibt es vlt hier ein paar Leser, die sich dafür interessieren 🙂

Bald geht’s los, ich hab ein paar Projekte in meiner Pipeline 😀

Linux Multimedia Studio

Wieder mal getestet und wieder schockiert … Piano Roll ohne Undo-Funktion! D.h. man kann etwas löschen und es nicht mehr rückgängig machen!

Was es alles gibt … Glaub, ich geb doch mal Geld für Fruity Loops aus …

Ansonsten ist es nicht schlecht und funktioniert … naja … tut schon, was es einigermaßen soll und gibt auch viele Sample-Projekte …

Neue Kamera

Hab mir eine neue Kamera gegönnt … Eine Sony NEX5T 🙂

Gleich ein paar Test-Aufnahmen durchgeführt und erstmalig mit tollen Tools wie Lightroom nachbearbeitet 🙂

DSC00478-2 DSC00290-2 DSC00298-2 DSC00320-2 DSC00408-2 DSC00441-2

Lightroom kann man in der Testversion 30 Tage uneingeschränkt nutzen. Danach kostet es um die 100EUR oder so … Das Geld ist das Programm wirklich wert!