2406304_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2406304_zh-CN

2406304_zh-CN

RIOP RT1189 – 基于 GitHub 源代码的 版本 和烧录工作流程

您好,

我目前正在使用 NXP RIOP 评估板,已经成功完成了入门指南并测试了预编程的 FreeMASTER 演示程序。

我的下一步是从源代码重新构建演示程序,将其烧录回开发板,并验证我的完整构建和烧录流程是否正常工作。

我查阅了以下文档和资料:

  • 入门指南:GS-REMOTE-IO-PLATFORM

  • RIOP 用户指南:UG10224

  • GitHub 仓库:nxp-appcodehub/rd-riop-demo

GitHub 仓库包含这两个项目。

  • riop_M33LEADER_DEMO

  • riop_M7FOLLOWER_DEMO

并指定所需的 SDK 和工具版本,包括 MIMXRT1189 SDK 25.09.00。

我仍然不太清楚的是,如何从这两个项目中得到与板上提供的相同的可启动固件配置。

问题:

  1. 构建 M33 和 M7 项目的推荐方法是什么?我是否只需在 MCUXpresso 中分别导入并构建这两个项目,还是它们之间需要特定的构建顺序或依赖关系?我也可以使用 VS Code 扩展吗?

  2. 如何将生成的 M33 和 M7 图像编程到 RIOP 中?安全配置工具是创建和刷写完整应用程序的正确方法吗?

  3. 是否有现成的安全配置工具配置或示例,展示如何将两个映像组合在一起,包括正确的内存布局和闪存地址?

  4. RIOP 演示中是如何处理图像认证的?出厂配置中是否启用了安全启动/签名验证?刷写自制演示版本时是否需要密钥配置?

  5. 在覆盖之前,有没有办法确定板上当前编程的是哪个版本的 rd-riop-demo?

  6. 从示例代码来看,RT1189 Boot ROM 启动 M33 应用程序,然后 M33 使用 MCMGR 在 0x303C0000 启动 M7。这是工厂镜像的完整启动流程吗?还是还有GitHub仓库中未包含的额外启动阶段?

  7. 是否有原始出厂镜像文件可供获取,以便在必要时将电路板恢复到出厂状态?

  8. 是否也提供命令行/无头版本工作流程?从长远来看,我希望构建过程能够复现,并适用于持续集成。

入门指南对开箱即用的演示程序解释得很好,GitHub 代码库也提供了源代码,但我目前还不明白这两者之间的联系:

GitHub 源代码 -> 构建 M33/M7 -> 创建可启动镜像 -> 刷写 -> 运行相同的演示

或许我忽略了 UG10224 或其他文档中的相关章节。

谢谢!

Re: RIOP RT1189 – build and flash workflow from GitHub sources

亲爱的@Embernard

关于您的问题,请查看以下回复:

1.RIOP 演示同时支持 MCUXpresso IDE 和 VS Code + MCUXpresso for VS Code。我们推荐使用 VS Code。导入 riop_M7FOLLOWER_DEMO 和 riop_M33LEADER_DEMO 项目后,建议先构建 M7 跟随者项目,再构建 M33 领导者项目。这是因为 M33 项目引用了 riop_M7FOLLOWER_DEMO.axf.o 文件。由 M7 项目生成的多核从映像文件。

2. 只需使用安全配置工具 (SPT) 将 riop_M33LEADER_DEMO.axf 文件编程到 Flash 中即可。请参阅 UG10224,第 4.1.5 节。“运行演示应用程序”。我们建议下载并使用最新的 SPT v26.06 版本。请注意,某些配置设置与用户指南中所示的设置略有不同:

ShellyZhang_0-1787196235459.pngShellyZhang_0-1787196235459.pngShellyZhang_0-1787196235459.pngShellyZhang_0-1787196235459.png

3. 请参考 UG10224 创建您自己的 RIOP SPT 工作区。在 SPT 端,它的主要作用是生成可引导的 RT1189 应用程序映像并将其编程到设备中。

4. 在开发过程中,我们建议使用未签名/开放配置进行功能验证,不建议对 eFuse 或密钥进行编程。

对熔丝进行编程是不可逆的操作,只能在经过适当的验证(例如通过影子寄存器)后,作为生产网络安全流程的一部分来执行。是否启用安全启动、映像签名或加密最终应取决于您的生产安全要求和 SPT 配置。

5. 如果当前固件没有通过 FreeMASTER 变量、UART 输出或版本字符串公开版本信息,则无法可靠地确定当前在板上运行的 rd-riop-demo 版本。我们建议您在覆盖 Flash 内容或向自定义固件添加版本信息之前备份 Flash 内容。

6.当前项目中实现的启动模型是,RT1189 首先启动 CM33(M33 领导者),然后 M33 通过 Multicore/MCMGR 框架启动 M7 追随者。无需额外的启动阶段。

7. 如果需要恢复,最可靠的方法是在重新编程之前读取并保存现有的 Flash 映像。如果没有备份可用,唯一的选择是重建并重新编程 rd-riop-demo,这将使系统恢复到功能相同的状态。

8. 支持命令行工作流程。SPT 内部调用 OpenSSL 和 SPSDK 等命令行工具来生成密钥和构建/写入镜像。更多信息请参阅以下文档:


至于这两幅图像是如何联系起来的,关键流程如下:
1. 该演示程序由两个相互关联的多核项目组成。
RIOP 演示仓库包含两个项目目录:
riop_M33LEADER_DEMO/
riop_M7FOLLOWER_DEMO/。
在 MCUXpresso 多核项目模型中,主项目/领导项目链接到从项目/跟随项目。构建主项目时,先构建辅助项目,并将辅助输出图像包含在/嵌入到主图像中。

2. M33 项目配置为多核主设备,M7 项目配置为从设备。
在 riop_M33LEADER_DEMO/.cproject 中,该项目定义了 __MULTICORE_MASTER 和 __MULTICORE_MASTER_SLAVE_M7SLAVE。其多核主配置指向:
${workspace_loc:/riop_M7FOLLOWER_DEMO/Debug/riop_M7FOLLOWER_DEMO.axf.o} 。
这意味着首先将 riop_M7FOLLOWER_DEMO.axf 处理成 .axf.o,然后将该对象作为“从属对象”链接到 M33 领导者图像中。
M7 项目配置为 M7SLAVE / __MULTICORE_M7SLAVE,使用 CM7 ITCM/DTCM 内存区域。

3.实际合并主要发生在链接/版本后阶段
MCUXpresso 多核流程处理辅助核映像,包括将辅助核部分移位,然后再将它们链接到完整的多核映像中。
因此,最终的 riop_M33LEADER_DEMO.axf 本质上是 M33 领头星 ELF 加上嵌入的 M7 跟随星图像数据/部分,而不是两个独立 AXF 文件的简单二进制连接。

4.运行时,M33启动M7
在 riop_M33LEADER.c 中M7启动地址定义为:
CORE1_BOOT_ADDRESS = 0x303C0000,CORE1_KICKOFF_ADDRESS = 0x0。
在 SystemInitHook() 中,代码调用 Prepare_CM7(CORE1_KICKOFF_ADDRESS),然后在 main() 中调用 MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, ...) 来启动辅助核心。
因此,尽管 M7 映像嵌入到 M33 领导 AXF 中,但 M7 执行仍然由 M33 在运行时显式启动。

5. 可启动镜像仍需进行SPT处理。
对于 RT1180,文档中指出该设备只能从 CM33 启动。安全配置工具用于从原始应用程序映像生成带有启动头的可启动映像,MCUXpresso 输出类型包括 .axf。。
所以通常的流程是:
riop_M7FOLLOWER_DEMO.axf → 处理成 riop_M7FOLLOWER_DEMO.axf.o→ 链接到 riop_M33LEADER_DEMO.axf → SPT 使用 M33 领导 AXF 生成可启动闪存映像。


顺祝商祺!

雪莉

Re: RIOP RT1189 – build and flash workflow from GitHub sources

嗨,雪莉,

非常感谢您的详细解答!


顺祝商祺!


马可

Tags (1)
No ratings
Version history
Last update:
10 hours ago
Updated by: