3

我用 PIC 汇编语言编写了一些测试代码,我无意在实际的 PIC MCU 上运行,而是为了生成跟踪文件,以便以后可以使用单独的工具对其进行分析。因此,我需要一种方法来在特定代码点中永久停止模拟器,而无需在此处手动设置断点。这样我就可以从代码中终止跟踪收集。

回到 MPLAB 8.92,我使用了这个简单的技巧来完成这个任务:“call $”命令。该指令只是简单地调用自身,迅速溢出堆栈,在 MPLAB 8.92 中,它通过 CORE-E0001 消息暂停了模拟器。任务完成!

然而,当我迁移到 MPLAB X 5.25 时,我发现模拟器不再使用这个技巧停止。即使我进入项目设置并指定模拟器应该中断所有类型的警告消息,它也不会停止。

那么,我做错了什么?在 MPLAB X 中使用 MCU 代码停止模拟器的最佳工作方式是什么?请不要建议使用显式断点,这是不切实际的,我确实需要在数十个项目中设置数百个断点。

4

1 回答 1

1

在 MPLAB 中转到Project Properties. 在Categories树中:选择Simulator现在Options for Simulator可见。在Options categories选择下Warning Messages Break Options并按下Unlock按钮。

假设您不会在Watchdog Timer重置事件时停止模拟。在列表中查找W0004-CORE: Watchdog Timer has caused a Reset.并将Report选项更改为Break。按下Apply按钮。现在程序模拟将在每次Watchdog Timer复位事件时停止。

PS:我使用的是 MPLAB v5.35。对于堆栈溢出中断使用选项W0012-CORE: Device Resets on stack overflow.

于 2021-03-06T23:12:26.850 回答