Forum: Mikrocontroller und Digitale Elektronik STM32 STLinkV2 CubeIDE Debuggen


von Anonymous U. (gastt)


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:
https://www.youtube.com/watch?v=qMUzLU636s8

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:
1
STMicroelectronics ST-LINK GDB server. Version 5.5.0
2
Copyright (c) 2019, STMicroelectronics. All rights reserved.
3
4
Starting server with the following options:
5
        Persistent Mode            : Disabled
6
        Logging Level              : 1
7
        Listen Port Number         : 61234
8
        Status Refresh Delay       : 15s
9
        Verbose Mode               : Disabled
10
        SWD Debug                  : Enabled
11
        InitWhile                  : Enabled
12
13
Waiting for debugger connection...
14
Debugger connected
15
      -------------------------------------------------------------------
16
                       STM32CubeProgrammer v2.4.0                  
17
      -------------------------------------------------------------------
18
19
ST-LINK SN  : 34FF6E065250343820161043
20
ST-LINK FW  : V2J36S7
21
Voltage     : 3.22V
22
SWD freq    : 4000 KHz
23
Connect mode: Under Reset
24
Reset mode  : Hardware reset
25
Device ID   : 0x462
26
Device name : STM32L45x/L46x
27
Flash size  : 256 KBytes
28
Device type : MCU
29
Device CPU  : Cortex-M4
30
31
Memory Programming ...
32
Opening and parsing file: ST-LINK_GDB_server_a19152.srec
33
  File          : ST-LINK_GDB_server_a19152.srec
34
  Size          : 6196 Bytes
35
  Address       : 0x08000000 
36
37
Erasing memory corresponding to segment 0:
38
Erasing internal memory sectors [0 3]
39
Download in Progress:
40
41
File download complete
42
Time elapsed during download operation: 00:00:00.540
43
44
Verifying ...
45
Download verified successfully 
46
47
Debugger connection lost.
48
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)


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)


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)


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:

Lesenswert?

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

von Mitlesa (Gast)


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:

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)


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)


Lesenswert?

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

von Anonymous U. (gastt)


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. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.