Setup: J-Link V6.72a on Ubuntu 18.04 for my STM32F302CC using J-Link Mini EDU.
More often than not, my J-Link GDB server sends my MCU to hard fault handler during the first connection. The problem goes away if I send a reset command ("Received monitor command: reset) but that doesn't seem quite right to me. Did I not configure something correctly?
I know the debugger and the MCU is fine because I can easily swap between OpenOCD and J-Link GDB. And OpenOCD always suceesd while J-Link GDB gives me the hard fault error.
More often than not, my J-Link GDB server sends my MCU to hard fault handler during the first connection. The problem goes away if I send a reset command ("Received monitor command: reset) but that doesn't seem quite right to me. Did I not configure something correctly?
And the backtrace looks like:/usr/bin/JLinkGDBServer -select USB -device STM32F302CC -endian little -if SWD -speed 4000 -ir -LocalhostOnly -vd -strict
SEGGER J-Link GDB Server V6.72a Command Line Version
JLinkARM.dll V6.72a (DLL compiled Apr 30 2020 17:28:12)
Command line: -select USB -device STM32F302CC -endian little -if SWD -speed 4000 -ir -LocalhostOnly -vd -strict
-----GDB Server start settings-----
GDBInit file: none
GDB Server Listening port: 2331
SWO raw output listening port: 2332
Terminal I/O port: 2333
Accept remote connection: localhost only
Generate logfile: off
Verify download: on
Init regs on start: on
Silent mode: off
Single run mode: off
Target connection timeout: 0 ms
------J-Link related settings------
J-Link Host interface: USB
J-Link script: none
J-Link settings file: none
------Target related settings------
Target device: STM32F302CC
Target interface: SWD
Target interface speed: 4000kHz
Target endian: little
Connecting to J-Link...
J-Link is connected.
Firmware: J-Link EDU Mini V1 compiled Apr 23 2020 16:51:07
Hardware: V1.00
S/N: 801010965
Feature(s): FlashBP, GDB
Checking target voltage...
Target voltage: 3.30 V
Listening on TCP/IP port 2331
Connecting to target...
Connected to target
Waiting for GDB connection...Connected to 127.0.0.1
Reading all registers
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
WARNING: Failed to read memory @ address 0xFFFFFFFC
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
WARNING: Failed to read memory @ address 0xFFFFFFFC
Read 2 bytes @ address 0x00000000 (Data = 0xA000)
WARNING: Failed to read memory @ address 0xFFFFFFFE
WARNING: Failed to read memory @ address 0xFFFFFFFC
Read 2 bytes @ address 0x00000000 (Data = 0xA000)
WARNING: Failed to read memory @ address 0xFFFFFFFE
WARNING: Failed to read memory @ address 0xFFFFFFFC
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
WARNING: Failed to read memory @ address 0xFFFFFFFC
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
WARNING: Failed to read memory @ address 0xFFFFFFFC
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
Read 4 bytes @ address 0x00000000 (Data = 0x2000A000)
Read 2 bytes @ address 0x00000000 (Data = 0xA000)
Debugger connected to localhost:2331
Starting target CPU...
Debugger requested to halt target...
...Target halted (PC = 0x08002CCA)
Reading all registers
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Read 4 bytes @ address 0x08002CC6 (Data = 0xAF00B480)
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Read 4 bytes @ address 0x08002CC6 (Data = 0xAF00B480)
Read 2 bytes @ address 0x08002CCA (Data = 0xE7FE)
Read 2 bytes @ address 0x08002CC8 (Data = 0xAF00)
Read 2 bytes @ address 0x08002CC6 (Data = 0xB480)
Read 2 bytes @ address 0x08002CCA (Data = 0xE7FE)
Read 2 bytes @ address 0x08002CC8 (Data = 0xAF00)
Read 2 bytes @ address 0x08002CC6 (Data = 0xB480)
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Read 4 bytes @ address 0x08002CC6 (Data = 0xAF00B480)
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Read 4 bytes @ address 0x08002CC6 (Data = 0xAF00B480)
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Read 4 bytes @ address 0x08002CCA (Data = 0xB480E7FE)
Signal: SIGTRAP (Trace/breakpoint trap)
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFF9
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFF9
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFFB
WARNING: Failed to read memory @ address 0xFFFFFFF9
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFFB
WARNING: Failed to read memory @ address 0xFFFFFFF9
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFF9
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFF9
WARNING: Failed to read memory @ address 0xFFFFFFFD
WARNING: Failed to read memory @ address 0xFFFFFFFD
Read 4 bytes @ address 0x20009FB4 (Data = 0x61000000)
Reading 64 bytes @ address 0x20009F80
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x0800746C (Data = 0xDF008F6F)
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x0800746C (Data = 0xDF008F6F)
Read 2 bytes @ address 0x08007470 (Data = 0xBF00)
Read 2 bytes @ address 0x0800746E (Data = 0xDF00)
Read 2 bytes @ address 0x0800746C (Data = 0x8F6F)
Read 2 bytes @ address 0x08007470 (Data = 0xBF00)
Read 2 bytes @ address 0x0800746E (Data = 0xDF00)
Read 2 bytes @ address 0x0800746C (Data = 0x8F6F)
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x0800746C (Data = 0xDF008F6F)
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x0800746C (Data = 0xDF008F6F)
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x08007470 (Data = 0xBF00BF00)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Read 4 bytes @ address 0x0800755A (Data = 0xFF7DF7FF)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Read 4 bytes @ address 0x0800755A (Data = 0xFF7DF7FF)
Read 2 bytes @ address 0x0800755E (Data = 0xF7FF)
Read 2 bytes @ address 0x0800755C (Data = 0xFF7D)
Read 2 bytes @ address 0x0800755A (Data = 0xF7FF)
Read 2 bytes @ address 0x0800755E (Data = 0xF7FF)
Read 2 bytes @ address 0x0800755C (Data = 0xFF7D)
Read 2 bytes @ address 0x0800755A (Data = 0xF7FF)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Read 4 bytes @ address 0x0800755A (Data = 0xFF7DF7FF)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Read 4 bytes @ address 0x0800755A (Data = 0xFF7DF7FF)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Read 4 bytes @ address 0x0800755E (Data = 0xFF45F7FF)
Reading 64 bytes @ address 0xFFFFFFC0
WARNING: Failed to read memory @ address 0xFFFFFFC0
WARNING: Failed to read memory @ address 0xFFFFFFFC
Reading 64 bytes @ address 0xFFFFFBC0
WARNING: Failed to read memory @ address 0xFFFFFBC0
WARNING: Failed to read memory @ address 0xFFFFFBFC
#0 HardFault_Handler () at /home/thekenu/Consolidated-Firmware/boards/DIM/Src/stm32f3xx_it.c:93
#1 <signal handler called>
#2 0x08007470 in prvPortStartFirstTask () at /home/thekenu/Consolidated-Firmware/boards/DIM/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c:294
#3 0x0800755e in xPortStartScheduler () at /home/thekenu/Consolidated-Firmware/boards/DIM/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c:386
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
I know the debugger and the MCU is fine because I can easily swap between OpenOCD and J-Link GDB. And OpenOCD always suceesd while J-Link GDB gives me the hard fault error.