恩智浦的工程师们,你们好
我目前正在调试启动加载程序,以启动 core0 和 core1。core0 可以从 RESET 中释放并可以启动,但是 core1 无法开始运行。
使用 UDE 调试工具,可以成功调出 core1。在我的引导加载程序 EB 配置中,我已经为 core0 和 core1 配置了 RESET 处理程序地址和加载地址。我该如何进一步调试?如何调试引导加载程序?
我也在测试 IPCF_Example_multi_instance_S32G399A 项目,但这个项目的 core0 和 core1 都失败了。
谢谢。
你好,@xlfd_1981
对您的不便,我深表歉意。
通常,在本社区板中,我们支持所有软件包的基本用法、恩智浦提供的硬件配置,此外,我们支持在软件包中使用演示/示例代码时直接出现的问题等。
对于特定或定制需求,我们通常建议通过 support.nxp.com 提交支持票据,因为这是一个私人渠道,更便于共享代码/项目。
目前,没有这样的演示可以直接支持你的要求,只有 AN1350 中的代码有点相似,但它也涉及 A53 内核,可以禁用 A53 部分来模拟你的请求,不确定你是否参考了它。
对于您的状态,为了直接帮助您调试问题,我建议您直接通过 support.nxp.com 发起私人票据,然后共享您的启动加载程序和应用程序(M7_0 和 M7_1),我们可以帮助您检查。
BR
切宁
恩智浦专家
已经过去很多天了,我的问题仍然没有得到答复。现在让我们把问题简单化:请提供一个可以使用引导加载程序同时启动 core0 和 core1 的演示程序。我需要引导程序项目和应用程序项目。另外,请告诉我生成 blob 文件是否有任何特殊要求。我将使用您的演示来验证 core0 和 core1 能否正常启动。
我现在面临的问题是,core1 的映像可以加载,但 core1 就是无法启动。我不知道问题出在启动代码上,还是根本没有触发 core1。也没有寄存器可用于检查是否启动。请提供演示和建议以帮助我。这一点非常紧迫。非常感谢。
你好,@xlfd_1981
感谢您的回复。
我能知道你是怎么创建 IVT 的,你在尝试从 QSPI 启动时加入了 DCD 吗?
我不太清楚您的设计,您是否使用引导加载器(M7_0)加载 core0.bin 和 core1.bin(IPCF)?实例)到相应的核心,还是其他类型的实现?
BR
切宁
澄阴
我将调试结果更新如下、
可能与启动程序有关。使用 UDE 调试时,ELF 文件被下载到内存中,我们可以看到 Core1 区域有有效数据。然而,在电源循环(系统从运行引导加载程序代码的闪存启动)后,使用 UDE 观察 Core1 内存区域,我们发现数据已被清零。这可能是引导程序造成的吗?
此致
澄阴
此外,请查看我的 IPCF 代码、
xlfd_1981_1-1752653795540.png
将被编译为 core0.bin 和 core1.bin
切宁
我们目前正在RDB3 平台上开发基于您的IPCF 多核演示(v4.10.0)的引导加载程序。我们在Core1的启动过程中遇到了问题,感谢您的帮助。
IP_MC_ME->PRTN0_CORE1_ADDR = 0x34780000;
请确认该地址应指向何处:
我们的链接器脚本显示 .intc_vector 位于 0x34780400,而图像从 0x34680000 开始。
非常感谢你们的支持!
如有需要,我可以提供 .map文件、.ld脚本或截图,以便进一步分析。
顺祝商祺!
你好,@xlfd_1981
谢谢您的帖子。
您能否提供更多有关测试的信息?
1.它是在 S32G3 定制板上完成的,还是在 NXP 的 RDB3/EVB3 上完成的?
2.引导加载程序来自哪里?是定制的还是恩智浦的?如果是恩智浦的,是哪个版本?
3.文中提到使用了 core0&1,请问它们是 M7_0 和 M7_1 还是其他组合?
通常,引导加载程序运行在 M7_0 上,可以直接使用调试器进行调试,这与其他 M7 应用程序并无不同。
BR
切宁