mikrocontroller.net

Forum: Compiler & IDEs Debuggen mit VSCode und Cortex-Debug Extension


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
Zum debuggen diverser Cortex-M benutze ich mittlerweile am liebsten 
VSCode und die Cortex-debug Extension. Das funktioniert einigermassen 
gut, aber es gibt einige Unschärfen und Unterschiede bei den 
verschiedenen möglichen Interfaces.

BMP:
funktioniert schnell und gut, wenig Konfigaufwand weil die debug probe 
smart ist. Manchmal klemmt der gdb, will viel Speicher haben und startet 
dann nicht. Passiert recht selten, manchmal hilft mehrmals starten 
probieren, VScode neustart oder target ins Boot-ROM starten.
BMP benutze ich als Alternative Firmware auf einem billig STLink Clone, 
bei Boards mit integrierten STLink müsste man die Firmware 
umprogrammieren.

Stutil:
Habe den gleichen Code jetzt auf einem ST DISCO board getestet und 
wollte da den integrierten STLink V2 benutzen (Disco STM32F769NI). Dafür 
gibt es das texane/stutil. Code flashen geht sehr fix, aber steppen 
nicht richtig. Wenn ich auf einen BP laufe und dann mit step over über 
eine Funktion springen möchte passiert nix. Mit setp into lande ich in 
einem Interrupt Handler, da kann ich dann weiter steppen. Wenn ich Run 
ausführe lande ich wieder auf meinem BP. Ich muss den BP löschen und 
eine Zeile weiter setzen, dann kann ich da hinlaufen.
Das stutil das als Installversion vorliegt hat die Version 1.3.0, ich 
habe mühselig die 1.5.1 kompiliert aber das Verhalten bleibt gleich. 
Kann das irgendeine gdb Einstellung sein die anders ist? Ganz habe ich 
das stutil noch nicht durchschaut, hat das auch ein Stück gdb mit drin?

pyOCD:
funktioniert auch, aber seeehr lahm. Flashen langsam (wird 32 Bit 
Operation nicht unterstützt oder muss man das aktivieren?) und auch 
steppen ist sehr langsam. Für den F7 gibt es ein Problm das MCU .pack zu 
laden, ich hatte das aber schon vorher mal geladen und dann mit 
manuellen Eingriffen installiert bekommen. Auch pyOCD hat manchmal 
Startprobleme, ist auf der Github Seite auch dokumentiert. Dann ist erst 
ein flash erase nötig, ist bei 2 MB auch lästig.

openOCD:
hatte auch funktioniert, möchte ich aber wegen der MCU abhängigen Konfig 
in launch.json vermeiden.

jlink:
müsste auch funktionieren, aber man muss den integrierten STLink 
umprogrammieren. Und der jlink Treiber erinnert täglich daran das er 
gerne gekauft werden möchte, auch lästig.

Wie sind eure Erfahrungen, gibt es zu den genannten Problemen Lösungen?

: Bearbeitet durch User
von Vincent H. (vinci)


Bewertung
0 lesenswert
nicht lesenswert
Johannes S. schrieb:
> jlink:
> müsste auch funktionieren, aber man muss den integrierten STLink
> umprogrammieren. Und der jlink Treiber erinnert täglich daran das er
> gerne gekauft werden möchte, auch lästig.

Benutz ich unter Unix und funktioniert relativ problemlos. Wenn mal was 
nicht geht dann weil Segger die Treiber schießt...

Glücklicherweise hats die Kauf-Erinnerung nicht in den Unix-Build vom 
JLink geschafft.

von Johannes S. (jojos)


Bewertung
0 lesenswert
nicht lesenswert
ja, habe deinen Blog Beitrag auch schon gelesen:
https://higaski.at/vscode-arm-cortex-m-debugging/
Da habe ich noch die preRestartCommands entdeckt, die habe ich in der 
Configbeschreibung nicht gesehen:
https://marcelball.ca/projects/cortex-debug/cortex-debug-launch-configurations/
Das STutil wäre sonst auch sehr einfach weil es wenig Konfiguration 
braucht.

Zum pyOCD ist mir noch aufgefallen das die Extension pyocd-gdbserver 
benutzt was als deprecated marktiert ist. Aber die Entwicklung von 
Cortex-debug läuft langsam, der Autor hat da wohl nicht viel Zeit für.

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.