Forum: Mikrocontroller und Digitale Elektronik STM32 kann nicht resetet werden


von Bill (Gast)


Lesenswert?

Hallo alle,

wenn ich mit der STM32CubeIDE den Resetbutton drücke landet mein PC 
immer im Nirvana: Break at address "0x1fff2122" with no debug 
information available, or outside of program code.

Ich habe gerade ein neues Board erstellt und das erste mal den STM32G070 
verwendet. Ich muss jedes mal die Debugsession komplett neu starten. 
NRST hat einen 100nF.

Woran kann das liegen?
1
STMicroelectronics ST-LINK GDB server. Version 6.1.0
2
Copyright (c) 2022, 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
Waiting for debugger connection...
16
Debugger connected
17
Waiting for debugger connection...
18
      -------------------------------------------------------------------
19
                       STM32CubeProgrammer v2.10.0                  
20
      -------------------------------------------------------------------
21
22
ST-LINK SN  : 52FF6E065266545442261387
23
ST-LINK FW  : V2J39S7
24
Board       : --
25
Voltage     : 3.22V
26
SWD freq    : 4000 KHz
27
Connect mode: Under Reset
28
Reset mode  : Hardware reset
29
Device ID   : 0x460
30
Revision ID : Rev B
31
Device name : STM32G07x/STM32G08x
32
Flash size  : 128 KBytes
33
Device type : MCU
34
Device CPU  : Cortex-M0+
35
BL Version  : --
36
Debug in Low Power mode enabled
37
38
Memory Programming ...
39
Opening and parsing file: st-link_gdb_server_a04560.srec
40
  File          : st-link_gdb_server_a04560.srec
41
  Size          : 109.47 KB 
42
  Address       : 0x08000000 
43
44
Erasing memory corresponding to segment 0:
45
Erasing internal memory sectors [0 54]
46
Download in Progress:
47
48
File download complete
49
Time elapsed during download operation: 00:00:02.84
50
51
Verifying ...
52
53
Download verified successfully

von Stefan F. (Gast)


Lesenswert?

Bill schrieb:
> wenn ich mit der STM32CubeIDE den Resetbutton drücke

Wie meinst du das? Ich denke nicht, dass die IDE einen Reset Button hat.

Wenn du auf dem Board den Reset Knopf drückst, unterbrichst du die 
Kommunikation zum Debugger.

von Bill (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Wie meinst du das? Ich denke nicht, dass die IDE einen Reset Button hat.
>
> Wenn du auf dem Board den Reset Knopf drückst, unterbrichst du die
> Kommunikation zum Debugger.

Während ich debugge und an einem Haltepunkt pausiere kann ich über 
"reset chip and restart debug session" normalerweise ein Reset machen. 
Mache ich das jetzt beim stm32g070 landet der PC im Nirvana.

von Bauform B. (bauformb)


Lesenswert?

Bill schrieb:
> ...landet mein PC immer im Nirvana: Break at address "0x1fff2122"

nicht im Nirvana, im integrierten Bootloader:
1
Common to all bootloaders: System memory:
2
28 Kbytes starting from address 0x1FFF0000
3
contain the bootloader firmware
Entweder dein Programm startet und springt da hin oder der Bootloader 
startet und läuft auf einen BKPT? Beides ziemlich unwahrscheinlich?

Nach einem Reset startet der Bootloader auch, wenn er meint, das Flash 
wäre leer. Dazu testet er (nur) die ersten 4 Byte ab 0x0800000. Aber 
warum dann
"Break"? VT: das ist Absicht, der Bootloader merkt, dass der Debugger 
angeschlossen ist.

von Bill (Gast)


Lesenswert?

Aber warum macht der das? Der Boot Pin ist durch die Option Bytes 
deaktiviert und der soll immer laut Option Bytes im Flash starten?

nBOOT_SEL = Checked = BOOT0 signal is defined by nBOOT0 ootion bit
nBOOT0 = UNCHECKED
nBOOT1 = CHECKED = Boot from Flash if BOOT0 = 0, otherwise system memory

von Bauform B. (bauformb)


Lesenswert?

Bill schrieb:
> nBOOT0 = UNCHECKED

aber was bewirkt das wirklich? Dreimal negiert oder doch nur zweimal?

von Bill (Gast)


Lesenswert?

Nachdem ich das Optionbyte "BOOT_LOCK" gesetzt habe funktioniert es. Es 
ist mir jedoch schleierhaft, warum das ohne dieses Bit nicht 
funktioniert 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.