Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded 无法调试我的micro_Embedded_Stm32 - Fatal编程技术网

Embedded 无法调试我的micro

Embedded 无法调试我的micro,embedded,stm32,Embedded,Stm32,因为我上传了我的stm32cubef1固件版本到1.6.0,我不能再调试我的主板了。我使用的是SWSTM32和ST-LINK/V2。 一旦我按下“类似播放”按钮,当我试图停止时,一个窗口打开,它说: "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

因为我上传了我的stm32cubef1固件版本到1.6.0,我不能再调试我的主板了。我使用的是SWSTM32和ST-LINK/V2。 一旦我按下“类似播放”按钮,当我试图停止时,一个窗口打开,它说:

"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 MCU GCC,当前的生成器是:Gnu Make builder,我使用的micro是STM32F105R8T6
有人知道发生了什么吗?

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


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

差点忘了:我的micro是STM32F105R8您应该通过编辑问题而不是添加注释来修复遗漏。也就是说,强迫症输出中明确指出了目标。错误消息表明它正在RAM地址上查找函数dt_TPS。你做过清洁和建造吗?该地址表明,您可能已将启动模式设置为SRAM而不是闪存-您的板上是否有跳线?嗨,Clifford,谢谢您的回答。在我的电路板中,我使用了一个开关来选择启动模式,我认为它是从闪存启动的,因为如果我关闭然后打开电源,我可以用示波器看到mcu正在执行我的代码。我已经降低了我的固件版本,现在一切正常。也许是新的固件版本?我不知道,但我想我会坚持使用旧版本,直到新的更新发布available@SandroSartoni-输出中显示的PC地址清楚地显示在RAM中,而不是闪存中。所以要么是从那里开始执行,要么是在flash中开始并传输到RAM,可能是由于堆栈损坏或其他某种失控。STM32Cube不是“固件”,它只是一个用于构建固件的库。如果重置地址未到达main,则应在重置地址处设置断点进行调试,并单步执行代码以发现它从RAM中的任何位置。这是可疑的,因为0x0200004是SRAM引导模式下的重置向量。我将进一步调查。再次感谢,正如你们所看到的,我仍然是一个新手,我仍然需要在微控制器的世界里学习很多东西