无法调试我的微型

无法调试我的微型

问题描述:

由于我将stm32cubef1固件版本上传至1.6.0,因此我无法再调试我的主板。我正在使用SWSTM32和ST-LINK/V2。 一旦我按“播放”按钮一样,当我试图阻止它在Windows中打开它说:无法调试我的微型

"No source available for "dt_TPS()at 0x20000004" 

其中dt_TPS是我的变量之一。 在页面底部的窗口,我看这个:

Open On-Chip Debugger 0.10.0-dev-00302-gc211ca5-dirty (2017-07-03-10:41) 
Licensed under GNU GPL v2 
For bug reports, read 
    http://openocd.org/doc/doxygen/bugs.html 
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD 
adapter speed: 1000 kHz 
adapter_nsrst_delay: 100 
srst_only separate srst_nogate srst_open_drain connect_assert_srst 
srst_only separate srst_nogate srst_open_drain connect_assert_srst 
Info : clock speed 1000 kHz 
Info : STLINK v2 JTAG v28 API v2 SWIM v6 VID 0x0483 PID 0x3748 
Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748 
Info : using stlink api v2 
Info : Target voltage: 3.239921 
Info : Unable to match requested speed 1000 kHz, using 950 kHz 
Info : STM32F105R8Tx.cpu: hardware has 6 breakpoints, 4 watchpoints 
Info : accepting 'gdb' connection on tcp/3333 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
Info : device id = 0x10016418 
Info : flash size = 64kbytes 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
Info : Padding image section 0 with 4 bytes 
STM32F105R8Tx.cpu: target state: halted 
target halted due to breakpoint, current mode: Thread 
xPSR: 0x61000000 pc: 0x2000003a msp: 0x20005000 
STM32F105R8Tx.cpu: target state: halted 
target halted due to debug-request, current mode: Thread 
xPSR: 0x01000000 pc: 0x200001e0 msp: 0x20005000 
Error: address + size wrapped(0xffffffff, 0x00000004) 
Error: address + size wrapped(0xffffffff, 0x00000002) 
Error: address + size wrapped(0xffffffff, 0x00000004) 
Error: address + size wrapped(0xffffffff, 0x00000002) 

其他相关信息:我目前的工具链:AC6 STM32单片机GCC,目前建设者:GNU的make Builder和我使用的微是STM32F105R8T6 有谁知道发生了什么事?

+0

差点忘了:我的微型是STM32F105R8 –

+0

你应该通过编辑问题来解决这个问题,而不是通过添加注释。这就是说在OCD输出中明确指出了目标。错误信息表明它正在RAM地址寻找_function_'dt_TPS'。你做了一个清洁和构建?地址表明您可能已将启动模式设置为SRAM而不是闪存 - 您的主板是否有跳线? – Clifford

你似乎是从SRAM执行代码,而不是闪存。这是不寻常的,可能不是故意的。

当BOOT0和BOOT1引脚均为高电平时,处理器将从SRAM执行复位。通常情况下,您可以从闪存加载并执行代码(BOOT0低,BOOT1不关心) - 您的开发板可能会有跳线用于启动模式选择。

+0

嗨克利福德,谢谢你的回答。在我的主板上,我使用了一个开关来选择启动模式,我认为它是从闪存启动的,因为如果关闭然后打开电源,我可以用示波器看到该MCU正在执行我的代码。我已经降级了我的固件版本,现在一切正常。也许这是新的固件版本?我不知道,但我想我会坚持使用旧版本,直到有新的更新可用 –

+0

@SandroSartoni - 输出中显示的PC地址清晰地显示在RAM中,而不是闪存。因此,无论是从那里开始执行,还是在闪存中启动并转移到RAM,可能是由于堆栈损坏或某种其他类型的失控。 –

+0

奥卡姆的剃须刀暗示该错误在您的代码中。 STM32Cube不是'固件',它只是一个库(从中建立你的固件)。你应该通过在复位地址设置一个断点来进行调试,如果它没有进入main(),并且通过代码来发现从RAM中激发的原因。这是可疑的,因为0x02000004是SRAM引导模式中的复位向量。 – Clifford