JTAG调试ARM,搜索WFI替代代码

时间:2015-11-29 20:21:13

标签: arm jtag

我正在尝试动态分析基于恩智浦LPC1752(Cortex-M3)的USB设备的固件。该固件包含WFI指令,这似乎干扰了我的尝试,因为JTAG探针有时无法访问该设备。用于测试的探针是Segger JLink-Edu v9.3,使用Seggers自己或OpenOCD作为GDB服务器,以及带OpenOCD的BusBlaster v2.5。

我试图通过用NOP或空无限循环替换它来删除WFI。无论哪种方式,设备都不再枚举。

由于这个WFI指令附带了几个NOP,我问是否有一个代码序列可以执行WFI所做的事情,只是没有进入睡眠模式?

1 个答案:

答案 0 :(得分:0)

WFI与您的问题无关。处理器可以进入和退出睡眠模式,您仍然可以使调试器会话处于活动状态。另见infocenter.arm中的这句话:

  

debug operation wakes up the processor

正如Notlikethat所说 - 很可能你正在失去电力或时钟源。这取决于您的硬件如何完全实现。也许你需要保持"电源开启"在连接调试器之前按钮或更改某种跳线?我不知道你正在使用的是什么。

关于替换WFI:理论上你可以在循环中插入NOP并手动处理中断,但没有单一的指令。另外,请记住,如果运行某些操作系统,可以从许多地方发出WFI指令(例如延迟循环)。

祝你好运。