备忘录
问题现象:
使用 CubeMX 为 IAR 生成的 STM32 程序,在将调试工具从 ST-Link 切换至 J-Link 后,默认使用 JTAG 接口。程序可以成功下载至野火霸道开发板,但在启动仿真调试时立即报错:“failed to get cpu status after 4 retries retry”。
根本原因:
此问题的核心在于调试接口模式与硬件资源冲突。JTAG 接口需要占用较多的 IO 引脚(如 TDI, TDO, TMS, TCK, nTRST 等),而这些引脚在开发板上可能已被其他外设(如 LED、按键、通信接口等)复用。尽管程序下载可能成功,但在进行需要频繁与 CPU 交互的仿真操作时,这些引脚上的电平冲突或功能干扰会导致调试器无法正确读取 CPU 状态,从而引发重试失败的错误。
解决方案:

在 IAR 的调试器设置中,将 J-Link 的接口模式由默认的 JTAG 切换为 SWD(Serial Wire Debug)。SWD 模式仅需两根数据引脚(SWDIO 和 SWCLK)加电源和地线,大幅减少了与开发板上其他外设的引脚冲突概率,确保了仿真调试的稳定性和可靠性。切换接口后,仿真功能即可恢复正常。