您好,恩智浦支持团队、
目标: S32K322S32K322
调试器硬件/软件:J-link/J-trace。
目前,我的应用程序用上市并点击 cm7_0 main,运行时 IDE 会挂起。
我希望您的专家指导进行双核调试,其中 core0 和 core1 独立运行,RESET core1 不会 RESET core0,反之亦然。
如何在 core1 应用程序中设置断点?
目前我使用的是下面附带的应用程序。
我想做的是,core0 通过 UART 进行通信,而 core1 则切换 LED。代码并不完整,但您仍可参考。
此外,我还想知道,如果我从 core0 初始化 UART0,从 core1 初始化 UART1,会不会引起任何问题。
如果我为 core0 和 core1 使用不同的 GPIO 配置,它们会相互冲突吗?
谢谢
你好@AbdNxp、
是的,我可以使用 S32DS IDE 的 J-trace 调试多核应用程序。
很遗憾,我现在没有 S32K322 HW。
在这里,你可以看到两个内核在不同的闪存块中工作,这与你发布的截图不同。
danielmartynek_0-1757078605716.png
我尝试在 S32K324 上加载您的应用程序,这应该是可行的,但我得到的错误与您的不同。
第二个核心的调试配置应禁用此功能:
danielmartynek_1-1757078876713.png
但你在项目中已经做到了。
此致,
丹尼尔
嗨,丹尼尔
那么您能用 J-link/J-trace Pro 运行应用程序吗?
我试了很多次,都无法让它运行。
你好@AbdNxp、
我仍然无法重现这个问题。
但请注意,在 S32DS 集成开发环境中,该功能由 SEGGER 插件提供。
我建议您也联系世纪佳缘的支持人员。
谢谢
嗨,丹尼尔
附上项目。
你好@AbdNxp、
我无法重现这种行为。
看来 CM7_1 的第二个调试会话调试的代码与第一个调试会话调试的代码来自同一内存区域 (0x400000)。
能否分享一下测试项目?
谢谢
我已经使用了群组调试,问题是 S32DS Ide 在调试过程中被挂起或无响应。
见下图
AbdNxp_1-1755583551737.png
AbdNxp_0-1755583463815.png
此外,如果我在 CM7_1 中点的 While(1 ) 循环中的某个地方设置断点,断点也不会出现。
你好@AbdNxp、
S32 Design Studio 中的 SEGGER 插件支持启动调试组,可同时对多个内核进行编程和调试。
... RESET core1 不会 RESET core0,反之亦然。
尽管采用双核架构,但您无法在另一个内核继续运行的同时独立 RESET 一个内核。此限制是由于 S32K3xx 系列的共享 RESET 架构造成的。RESET事件会影响两个内核,因此在调试期间无法进行单独的内核RESET。
此外,我还想知道,如果我从 core0 初始化 UART0,从 core1 初始化 UART1,会不会引起任何问题。
如果我为 core0 和 core1 使用不同的 GPIO 配置,它们会相互冲突吗?
您可以放心地从 CM7_0 初始化 UART0,从 CM7_1 初始化 UART1。只要每个内核访问其指定外设时没有重叠,这种设置就有效。
要强制执行内核之间的访问控制,您可以配置 XRDC(扩展资源功能域控制器):
此致,
丹尼尔
这个问题解决了吗?我在使用 J-Link 对 S32K388 进行调试时也遇到了这个问题。即使我的单核链接文件设置为默认值 0x00800000,运行时程序计数器 (PC) 仍然显示 0x402624(这是零核的闪存地址)。#s32k388