2014-03-19 54 views
1

我正在开发使用GCC 4.7.4和Lauterbach Combiprobe JTAG调试器的STM32F2器件。在我的代码中,我有以下声明总是为了测试目的而在某个地点中断:汇编代码断点不能按预期工作

asm volatile ("BKPT #0"); 

这是唯一的断点。当我运行该程序时,我可以看到我的程序到达了断点,但是我无法使用JTAG调试器跳过此断点。相反,我必须将PC计数器移过这条指令才能执行程序。

这是在过去的工作,但我很难找出为什么现在的行为是不同的。任何线索或提示将不胜感激。

+0

@harper你是正确的。如果我推进程序计数器,我会恢复正常的功能。 –

回答

1

有太多断开的JTAG调试器。可能你安装了JTAG适配器的更新?

当您将GDB作为调试器时,您可能会检查是否可以将宏set PC=PC+4添加到按钮或按键。但是如果这可能取决于你的IDE。

1

如果您在应用程序代码中有断点指令,那么程序计数器会发生什么情况没有一般规则。有些CPU停在包含断点指令的地址上,有些则在断点指令后停止。

由于您使用标签“lauterbach”,我假设您使用的是Lauterbach的TRACE32调试器。

如果您认为调试器的行为在过去有所不同,我认为您应该联系Lauterbach支持。

现在你可以用下面的命令TRACE32

Break.Set T:0x1000 /Program /CMD "Register.Set PP r(PP)+2" 

解决该问题(其中为0x1000代表的地址,你的BKPT指令的位置。)