i.MXRT1170 跨界MCU是NXP RT系列中的新一代产品。它具有1 GHz的速度和丰富的片上外设。在 RT1170 子系列中,RT1173、RT1175 和 RT1176 具有双核。一个 Cortex-M7 内核以 1 GHz 运行,一个 Cortex-M4 内核以 400 MHz 运行。两个内核可以通过一个 SWD 端口进行调试。
在 MIMXRT1170-EVK 中,Freelink 调试接口默认使用 CMSIS-DAP 作为调试探针。调试两个核心项目时,例如 evkmimxrt1170_hello_world_cm7 项目和 evkmimxrt1170_hello_world_cm4 项目,只需点击 CM7 项目中的调试按钮即可。当 CM7 项目进入调试状态后,CM4 项目会自动开始调试。但是如果开发人员想使用 jlink 作为调试探针,他会发现 CM4 项目不会自动启动。如果他手动启动 CM4 项目的调试,它将失败。jlink 可以同时调试双核吗?是的,可以。为了通过 jlink 调试双核,还需要进行一些额外设置。
- IDE 和 SDK
MCUXpresso IDE 11.3,
MIMXRT1170-EVK SDK 2.9.1,
Jlink 探针版本 9 或更高,或将 Freelink 应用程序固件更改为 Jlink。
Segger jlink firmware JLink_Windows_V698a.
- 导入 SDK 示例,这里我们选择 multicore_examples/evkmimxrt1170_hello_world_cm7。MCUXpresso IDE 可以自动导入 CM4 和 CM7 项目。编译两个项目。
- 首先调试 CM7 项目。然后切换到 CM4 项目,并单击“调试”按钮。CM4 项目将无法正常调试。因此,我们退出调试模式。通过这一步,IDE 在“运行→调试配置”中创建了两个调试配置。
- 点击 evkmimxrt1170_hello_world_cm4 JLink Debug,点击 JLink Debugger 标签,添加 evkmimxrt1170_connect_cm4_cm4side.jlinkscript。然后取消选中“Attach to a running target”复选框。
- 在 CM4 项目的 main() 函数的开头设置断点。这是因为有时 IDE 在开始调试时无法在 main() 开始时挂起。第二个断点可能会有所帮助。注意在 BOARD_ConfigMPU() 或下面的代码上设置断点。不要在“gpio_pin_config_t led_config…”上设置断点。否则,调试将失败。
- 现在我们可以开始调试 CM7 项目。点击“运行”菜单中的“调试”按钮,然后选择“evkmimxrt1170_hello_world_cm4 JLink Debug”。这是因为集成开发环境 (IDE) 会自动启用“附加到运行中的目标”功能。我们必须再次禁用。
- 当 CM7 调试环境准备就绪后,切换到 CM4 项目并单击“调试”按钮。然后继续进行 CM7 项目。CM4 项目将开始调试并在断点处暂停。
说明:
- 如果您按照本指南操作后仍无法调试两个核心,请尝试擦除整个芯片,然后再试一次。
- 如果 CM7 项目在 MCMGR_INIT() 中运行失败,请检查“启动配置”引脚。应设置为内部启动模式。
如果在按照上述步骤操作时遇到问题(例如使用 J-Link 调试 RT1160 时),这里有一个教程中未提及但必须自行发现的解决方法:
- 在 MCUXpresso IDE 中,禁用“启用多核项目中自动调试次要项目”选项,路径为“窗口” → “首选项” → “MCUXpresso IDE” → “调试选项” → “J-Link 选项”
- 按照教程中提到的步骤操作。
- 首先调试 CM7 项目。待其调试实例加载完成后,再调试CM4项目。此时即可实现双核同时调试。