我需要使用模拟器,一开始我想做一些非常简单的事情:通过我的启动代码的前几条指令。这是:
Reset_Handler:
movs r1,#0
b LoopCopyDataInit
CopyDataInit:
ldr r3,= _sidata
ldr r3,[r3,r1]
str r3,[r0,r1]
添加r1,r1,#4
LoopCopyDataInit:
这就是GDB发生的事情:
e:\ devtools \ Olimex \ examples \ STM32-P103_UART1> e:/devtools/olimex/yagarto/bin/arm-none-eabi-gdb.exe main.out
GNU gdb(GDB)7.1
版权所有(C)2010 Free Software Foundation,Inc。
许可证GPLv3 +:GNU GPL版本3或更高版本http://gnu.org/licenses/gpl.html
这是免费软件:您可以自由更改并重新分发它
在法律允许的范围内,不提供任何担保。键入"显示复制"
并且"显示保修"详情
此GDB配置为" - host = i686-pc-mingw32 --target = arm-none-eabi"。
有关错误报告说明,请参阅:
http://www.gnu.org/software/gdb/bugs/ ...
从e:\ devtools \ Olimex \ examples \ STM32-P103_UART1 / main.out中读取符号...完成。
(gdb)目标sim
连接到模拟器。
(gdb)加载
加载部分.isr_vector,大小0x10c vma 0x8000000
加载部分.text,大小0x1788 vma 0x800010c
加载部分.data,大小0x28 vma 0x20000000
起始地址0x800183d
传输速率:50656位,<1秒
(gdb)b Reset_Handler
断点1在0x800183e:文件./lib/startup_stm32f10x_md.s,第67行。
(gdb)b CopyDataInit
断点2位于0x8001840:文件./lib/startup_stm32f10x_md.s,第71行。
(gdb)运行
启动程序:e:\ devtools \ Olimex \ examples \ STM32-P103_UART1 / main.out
sim:遇到未知的SWI - 93 - 忽略了
未处理的v6拇指insn:b64d
sim:例外:未处理的指令&#39; 0x00000004&#39;在0xea021aca。停止。
[线程]#1停止了。
0x00000b90在? ()
(gdb)
起始地址看起来没问题,我在前几条指令后设置了2个断点,但是从未到达它们。我究竟做错了什么?
非常感谢任何帮助 M&#39;