3

配置:

使用 Nucleo-L476RG。使用 GNU ARM Eclipse。我从 STM32CubeMX 生成了一个极简代码。我已经在我的板载 ST-Link 中刷新了 J-link 驱动程序。

一直在尝试为我的代码运行调试器,但我的程序计数器未设置为 main()。相反,它无法读取某个内存地址。错误“在地址“0xXXXXXXXX”中断,没有可用的调试信息,或在程序代码之外。” 出现。

我已经包含了屏幕截图和调试器日志,我们可以在其中看到错误。

请帮忙

图片:
https ://ibb.co/bBRHxn https://ibb.co/mGDKA7 https://ibb.co/mE4gOS https://ibb.co/fh5AHn https://ibb.co/jNFMOS https:// /ibb.co/ibmT3S https://ibb.co/gpJaiS https://ibb.co/jgaMOS

日志:

SEGGER J-Link GDB Server V6.30f Command Line Version



JLinkARM.dll V6.30f (DLL compiled Mar  2 2018 17:29:18)



Command line: -if swd -device STM32L476RG -endian little -speed 1000 -port 2331 -swoport 2332 -telnetport 2333 -vd -ir -localhostonly 1 -singlerun -strict -timeout 0 -nogui


-----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:               on  
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:                 STM32L476RG  
Target interface:              SWD  
Target interface speed:        1000kHz  
Target endian:                 little  

Connecting to J-Link...  
J-Link is connected.  
Firmware: J-Link STLink V21 compiled Jun 26 2017 10:35:16  
Hardware: V1.00  
S/N: 770526094  
Checking target voltage...  
Target voltage: 3.30 V  
Listening on TCP/IP port 2331  
Connecting to target...  
WARNING: T-bit of XPSR is 0 but should be 1. Changed to 1.  
Connected to target  
Waiting for GDB connection...Connected to 127.0.0.1  
Reading all registers  
Read 4 bytes @ address 0x00000000 (Data = 0x4C05B510)  
Read 2 bytes @ address 0x00000000 (Data = 0xB510)  
Received monitor command: speed 1000  
Target interface speed set to 1000 kHz  
Received monitor command: clrbp  
Received monitor command: reset  
Resetting target  
Received monitor command: halt  
Halting target CPU...  
...Target halted (PC = 0xB9337822)  
Received monitor command: regs  
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000  
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000  
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000  
R12= 00000000, R13= 4C05B510, MSP= 4C05B510, PSP= 00000000  
R14(LR) = FFFFFFFF, R15(PC) = B9337822  
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000  
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00  
Reading all registers  
Received monitor command: speed auto  
Select auto target interface speed (2000 kHz)  
Received monitor command: flash breakpoints 1  
Flash breakpoints enabled  
Received monitor command: semihosting enable  
Semi-hosting enabled (Handle on BKPT)  
Received monitor command: semihosting IOClient 1  
Semihosting I/O set to TELNET Client  
Received monitor command: SWO DisableTarget 0xFFFFFFFF  
SWO disabled successfully.  
Received monitor command: SWO EnableTarget 0 0 0x1 0  
SWO enabled successfully.  
Read 4 bytes @ address 0xB9337822 (Data = 0x00000000)  
Read 2 bytes @ address 0xB9337822 (Data = 0x0000)  
Downloading 88 bytes @ address 0x08000000 - Verified OK  
Downloading 8 bytes @ address 0x08000058 - Verified OK  
Downloading 8 bytes @ address 0x08000060 - Verified OK  
Comparing flash   [....................] Done.  
Verifying flash   [....................] Done.  
Writing register (PC = 0x08000000)  
Read 4 bytes @ address 0x08000000 (Data = 0x4C05B510)  
Read 2 bytes @ address 0x08000000 (Data = 0xB510)  
Received monitor command: clrbp  
Received monitor command: reset  
Resetting target  
Received monitor command: halt  
Halting target CPU...  
...Target halted (PC = 0xB9337822)  
Received monitor command: regs  
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 00000000  
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000  
R8 = 00000000, R9 = 00000000, R10= 00000000, R11= 00000000  
R12= 00000000, R13= 4C05B510, MSP= 4C05B510, PSP= 00000000  
R14(LR) = FFFFFFFF, R15(PC) = B9337822  
XPSR 01000000, APSR 00000000, EPSR 01000000, IPSR 00000000  
CFBP 00000000, CONTROL 00, FAULTMASK 00, BASEPRI 00, PRIMASK 00  
Reading all registers  
Starting target CPU...  
WARNING: T-bit of XPSR is 0 but should be 1. Changed to 1.  
...Target halted (DBGRQ, PC = 0xF3AF4804)  
Reading all registers  
WARNING: Failed to read memory @ address 0xF3AF4804  
WARNING: Failed to read memory @ address 0x4C05B50C  
Reading 64 bytes @ address 0x4C05B500  
WARNING: Failed to read memory @ address 0x4C05B500  
WARNING: Failed to read memory @ address 0x4C05B508  
Reading 64 bytes @ address 0x4C05B500  
WARNING: Failed to read memory @ address 0x4C05B500  
WARNING: Failed to read memory @ address 0x4C05B508  
Reading 64 bytes @ address 0xF3AF4800  
WARNING: Failed to read memory @ address 0xF3AF4800  
WARNING: Failed to read memory @ address 0xF3AF4804  
Reading 64 bytes @ address 0xF3AF4800  
WARNING: Failed to read memory @ address 0xF3AF4800  
WARNING: Failed to read memory @ address 0xF3AF4804  
Reading 64 bytes @ address 0xF3AF4800  
WARNING: Failed to read memory @ address 0xF3AF4800  
WARNING: Failed to read memory @ address 0xF3AF4806  
4

2 回答 2

1

您的问题可能是由于缺少启动文件引起的。检查您的编译控制台是否有此消息:“警告:找不到条目符号 Reset_Handler”。如果找到它,请参阅其他答案:https ://stackoverflow.com/a/68381702/3567351 。

于 2021-07-14T16:33:43.373 回答
0

我在使用j-link调试我的Board(STM32F407ZG)时遇到了同样的问题,在将startup_stm32f407xx.s更改为startup_stm32f407xx.S(带有大写的's')后,问题就消失了。原因可能是gcc 以不同的方式处理 .s 和 .S

将您的 startup_xx.s 文件后缀更改为大写。

于 2018-07-21T13:56:38.903 回答