ST kaufte das Atollic TrueStudio auf, reduzierte es auf STM32 Controller und machte daraus dann die Cube IDE, indem Funktionen von CubeMX integriert wurden. Wer das Atollic Truestudio bereits kennt, wird sich daher in der Cube IDE sofort zurecht finden.
Download: STM32 Cube IDE
Die Cube IDE kann Projekte von der System Workbench importieren, umgekehrt geht es nicht.
Bei Verbindungsproblemen kann es hilfreich sein, den Bootloader mittels Boot0=High und Reset-Impuls zu starten, da dieser auch die SWJ Schnittstelle eingeschaltet lässt.
Modus | Beschreibung | Einschränkung |
---|---|---|
Connect Under Reset (Vorgabe) | Der Programmieradapter löst einen Hardware-Reset aus und verbindet sich während dessen. | Wenn die NRST Leitung nicht verbunden ist, muss man manuell den Reset Knopf gedrückt halten und beim Verbinden loslassen. |
Software System Reset | Über die SWJ Schnittstelle wird ein Reset-Kommando abgesetzt, danach verbindet er sich. | Funktioniert nicht, wenn das Programm die SWJ Schnittstelle deaktiviert hat oder in einen Schlafmodus gegangen ist. |
Hardware Reset | Der Programmieradapter löst einen Hardware-Reset aus, danach verbindet er sich. | Benötigt eine Reset-Leitung zwischen Programmieradapter und dem NRST Pin des Mikrocontrollers. Funktioniert nicht, wenn das Programm direkt nach dem Start in einen Schlafmodus geht oder die SWJ Schnittstelle deaktiviert. |
Core Reset | Über die SWJ Schnittstelle wird ein Reset-Kommando nur an den ARM Kern (nicht an die Peripherie) abgesetzt. Danach verbindet er sich. | Funktioniert nicht, wenn das Programm die SWJ Schnittstelle deaktiviert hat oder in einen Schlafmodus gegangen ist. |
None | Der Debugger verbindet sich ohne Reset mit dem laufenden Programm. | Setzt voraus, dass auf dem Mikrocontroller bereits genau das Programm läuft, das gerade im Editor geöffnet ist. Funktioniert nicht, wenn das Programm die SWJ Schnittstelle deaktiviert hat oder in einen Schlafmodus gegangen ist. |
Zum Ändern, klicke mit der rechten Maustaste auf den kleinen Pfeil neben dem grünen Käfer, dann auf "Debug Configurations...". Gehe in dem folgenden Dialog in den Debugger Tab, wo du die Einstellung ändern kannst:
Wenn du stattdesen den alternativen "OpenOCD" verwendest, kannst du die Einstellung im Abschnitt "Configuration Script" vornehmen. Klicke dort auf die Schaltfäche "Show generator options".
Die Verbindungsoptionen kannst du wie oben beschrieben einstellen. Der Debugger hält das Programm am Anfang der main() Funktion an. Danach kannst du es über Schaltflächen und Funktionstasten fortsetzen. Am linken Rand des Texteditors (vor den Zeilennummern) kannst du Unterbrechungspunkte setzen.
Neben dem grünen Käfer ist ein kleiner Pfeil, der nach unten Zeigt. Klicke darauf und dann auf "Debug Configurations...". Aktiviere im Debugger Tab die rot markierte Option und stelle die Taktfrequenz des Mikrocontrollers ein:
Nun starte den Debugger durch Klick auf den grünen Käfer. Das Programm pausiert zunächst ganz am Anfang der main() Funktion. Jetzt gehe in das Menü Window/Show View/Other... und wähle "SWV ITM Data Console". Dieses Fenster ist zunächst leer. Klicke in der rechten oberen Ecke des Fensters auf das Werkzeug-Symbol.
Schalte im nächsten Dialog den "ITM Stimulus Port" Nummer 0 ein.
Direkt neben dem Werkzeug-Symbol ist ein roter Punkt mit der Beschriftung "Start Trace". Klicke darauf. Danach klicke am oberen Rand der IDE auf den Resume-Knopf.
Nun sollten in dem "SWV ITM Data Console" Fenster alle Trace Meldungen erscheinen, die das Programm auf dem Mikrocontroller erzeugt.
Nun öffne dieses "Configuration Script" im Texteditor und hänge ganz unten zwei Zeilen an:
tpiu config internal /tmp/debug.txt uart off 8000000 itm port 0 on
Bei der nächsten debug Sitzung werden die Trace Meldungen dann in die Datei /tmp/debug.txt geschrieben. Zur fortlaufenden Anzeige benutze ich unter Windows den Befehl tail -f debug.txt in einem CygWin Fenster:
Die Datei enthält zwischen den Buchstaben nicht darstellbare Steuerzeichen. Falls tail diese unerwünscht anzeigt, kann man sie so heraus filtern: tail -f debug.txt | tr -dc '[:print:]\n'
Man kann die Schnittstelle auch so konfigurieren, dass sie die Meldungen im gleichen Format ausgibt, wie ein normaler serieller Port:
monitor tpiu config external uart off 8000000 2000000 itm port 0 on
Die Zahl 8000000 muss der CPU Taktfrequenz entsprechen, die Zahl 2000000 ist die serielle Baudrate - maximal 1/4 des CPU Taktes. Nun kann man die Ausgabe mit einem gewöhnlichen USB-UART Adapter empfangen.