0

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

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

由于这个 WFI 指令伴随着几个 NOP,我问是否有一个代码序列可以做 WFI 所做的事情,而无需进入睡眠模式?

4

1 回答 1

0

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

调试操作唤醒处理器

正如 Notlikethat 所提到的 - 很可能您正在失去电源或时钟源。这取决于您的硬件如何准确实现。也许您需要在连接调试器之前保持“开机”按钮或更改某种跳线?不知道你用的是什么板子。

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

祝你好运。

于 2015-12-01T17:03:53.270 回答