Forum: Mikrocontroller und Digitale Elektronik STM32 STLinkV2 CubeIDE Debuggen


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 Anonymous U. (gastt)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich versuche mich gerade in der Programmierung eines STM32L451 
auf einem selbst designtem Board. Ich habe mehr oder weniger die selbe 
Vorgehensweise wie in diesem Video gewählt:
Youtube-Video "STM32 + SWD + ST-Link + CubeIDE | Debugging on Custom Hardware Tutorial"

Hier die wichtigsten Punkte:
-BOOT0 ist auf low.
-Ich habe ein neues Projekt mit der CubeIDE erstellt.
-Konfiguration der .ioc Datei:
  -in SYS ist bei Debug das Serial Wire aktiviert (in der Pinout view 
sehe ich SWCLK und SWDIO aufgrund dessen grün eingefärbt)
  -in RCC habe ich PH0 und PH1 für einen Quarz aktiviert.
  -in der Clock Configuration habe ich eine SYSCLK von 80MHz (im Prinzip 
sind hinten alle Clocks auf 80MHz konfiguriert)
-Ich habe einen GPIO als Ausgang definiert. Da hängt eine LED dran.
-In die main.c habe ich in der Main-Loop einen Testcode geschrieben, der 
die LED blinken lässt.
-In der Run Configuration habe ich bei dem Reiter 'Debugger' als 
Interface SWD ausgewählt.

Wenn ich nun auf Run drücke, dann wird fehlerfrei kompiliert, die 
Firmware übertragen und das Programm läuft (die LED blinkt). Allerdings 
verliert der Debugger die Verbindung:
STMicroelectronics ST-LINK GDB server. Version 5.5.0
Copyright (c) 2019, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled
        InitWhile                  : Enabled

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                       STM32CubeProgrammer v2.4.0                  
      -------------------------------------------------------------------

ST-LINK SN  : 34FF6E065250343820161043
ST-LINK FW  : V2J36S7
Voltage     : 3.22V
SWD freq    : 4000 KHz
Connect mode: Under Reset
Reset mode  : Hardware reset
Device ID   : 0x462
Device name : STM32L45x/L46x
Flash size  : 256 KBytes
Device type : MCU
Device CPU  : Cortex-M4

Memory Programming ...
Opening and parsing file: ST-LINK_GDB_server_a19152.srec
  File          : ST-LINK_GDB_server_a19152.srec
  Size          : 6196 Bytes
  Address       : 0x08000000 

Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 3]
Download in Progress:

File download complete
Time elapsed during download operation: 00:00:00.540

Verifying ...
Download verified successfully 

Debugger connection lost.
Shutting down...

Wenn ich mich mit der STLink-Utility auf den Chip verbinde funktioniert 
alles. Deshalb und auch weil das Programm läuft gehe ich davon aus, dass 
die Hardware soweit fehlerfrei ist. Ich denke, ich habe eine Einstellung 
in der CubeIDE übersehen. Kann mir da jemand weiterhelfen?

von Mitlesa (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Anonymous U. schrieb:
> Kann mir da jemand weiterhelfen?

Die SWD-Pins sollte dein Programm nicht "anrühren". Das ist
ein oft gemachter Fehler, vielleicht suchst du mal danach.

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Anonymous U. schrieb:
> Ich habe einen GPIO als Ausgang definiert.

Vielleicht hast du da zufällig die SWD-Pins mit erwischt.

von Viktor B. (coldlogic)


Bewertung
0 lesenswert
nicht lesenswert
Die Pins müssen in dem STCube explizit als SWD Interface eingestellt 
werden. Ansonsten werden sie beim Hochfahren des µC als Input/Hochohmig 
geschaltet.

von Anonymous U. (gastt)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Reaktion. Die einzige Änderung, die ich im Code 
vornahm waren die markierten Zeilen.

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Anonymous U. schrieb:
> Die einzige Änderung, die ich im Code
> vornahm waren die markierten Zeilen.

Beachte Viktors Beitrag.

Viktor B. schrieb:
> Die Pins müssen in dem STCube explizit als SWD Interface eingestellt
> werden.

von Anonymous U. (gastt)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mitlesa schrieb:
> Anonymous U. schrieb:
>> Die einzige Änderung, die ich im Code
>> vornahm waren die markierten Zeilen.
>
> Beachte Viktors Beitrag.
>
> Viktor B. schrieb:
>> Die Pins müssen in dem STCube explizit als SWD Interface eingestellt
>> werden.

Ich nehme an mit dem .ioc Reiter in der CubeIDE? Das habe ich gemacht 
(siehe Anhang).

von Mitlesa (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Anonymous U. schrieb:
> Ich nehme an mit dem .ioc Reiter in der CubeIDE?

Nein, die Pins im GPIO Bereich auf "alternate" vermutlich.

von Anonymous U. (gastt)


Bewertung
0 lesenswert
nicht lesenswert
Ok, hab das Problem gefunden :-D Ich Idiot habe auf 'Run' und nicht auf 
'Debug' geklickt. Nun funktioniert's!

von Anonymous U. (gastt)


Bewertung
0 lesenswert
nicht lesenswert
Eine Frage hätte ich da noch bezüglich der SWV (serial wire viewer): Ich 
habe bei meinem Board diesen Pin nicht zum Debuggen vorgesehen, da ich 
diesen für andere Peripherie brauche. Der Nutzen würde mich allerdings 
interessieren. Wenn ich danach google, werden Bilder von Kurven 
angezeigt. Ich denke damit kann man den Zeitverlauf von Variablen 
anzeigen lassen. Allerdings waren diese von Atollic Studio. Hat die 
CubeIDE sowas auch bereits implementiert?

Ich habe allerdings einen UART auf meinem Board. Da könnte ich 
prinzipiell auch printf Ausgaben machen lassen, an einen COM Port vom PC 
anschließen und mit einem Python Skript auswerten.

Ich frage mich halt wie groß der Nutzen von swv ist. Wer hat hier 
Erfahrung?

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Anonymous U. schrieb:
> Ich frage mich halt wie groß der Nutzen von swv ist. Wer hat hier
> Erfahrung?

Ich habe den Pin bisher nur für Textausgaben verwendet. Klappt super. 
Wenn man sehr kurze Texte ausgibt, muss die CPU gar nicht warten, weil 
da ein kleiner Ausgabepuffer drin ist.

Der Pin wird vom Debugger in den TRACESWO Modu geschaltet, unabhängig 
davon, was dein Programm vorher damit angestellt hat.

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.