恩智浦MCXN947 MCU多核应用程序的创建和调试

2025-04-08

一场静默的算力进化正在微控制器(MCU)领域爆发。当传统单核MCU在实时响应与多任务处理间艰难平衡时,双核架构带来历史破局:尤其在处理如兼具电机和网络通信这类不同类型的协同应用时尤其有优势,应用双核MCU正在重构物联网终端的基因序列。

MCXN系列MCU包含两个Cortex M33内核,一个“主内核”(Master),以及一个可选的“从属”(Slave)Cortex M33内核(功能减少)。详细配置可见下图:

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第1张

在通电或重置后,主内核启动执行(一般是Core0),从属核心处于重置状态(即其代码未开始执行)。然后,主内核运行负责将“从内核“从重置中释放出来。实际上,Master Slave角色只适用于引导过程,启动后,应用程序可能会将其中任何一个内核视为主内核或从内核。MCUXpresso IDE为创建和调试MCXN947提供了高度灵活的支持适用于单核和多核系统。本文详细介绍了MCXN947创建和调试这样的多核应用程序。

建立一个多核工程

MCUXpresso IDE中的多核应用程序由两个链接的项目组成——一个项目包含“从属“(下文称Slave)代码的项目和包含“主内核”(下文称Master)的另一个项目。“Master”项目还将包含一个指向“Slave”项目的链接。

创建新的多核应用程序的推荐方法是首先创建首先为“从属“(下文称Slave)核心创建项目,然后为Master核心创建项目。

打开 Quickstart Panel -> New project

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第2张

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第3张

选择 “MCXN947” 后并点击Next,首先我们先建立slave工程。如下图所示:

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第4张

点击Finish完成创建:

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第5张

Memory Configuration中内存区域配置如上图所示, 在此应用中我们将Core1的代码存放在PROGRAM_FLASH1中,并在通过Flash运行,也可选择将Core1的代码链接到RAM中,在Core0运行后将Core1的代码拷贝加载到RAM中再运行,同时Core0和Core1通过rpmsg_sh_mem进行通信交互,最后点击Finish完成Slave工程的建立,接下来建立Master工程:

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第6张

选择cm33_core0作为Master,点击Next:

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第7张

点击Finish完成Master工程的建立。打开工程的属性页,选择Settings->Multicore项目,选择Muticore slaves对应在Master memory region中的存储段为PROGRAM_FLASH1。

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第8张

对于Multicore直接的相互通信,NXP主要提供如下所示的中间件,例如MCMGR, rpmsg_lite(远程消息机制),Remote ProcedureCall(远调用), 关于这些库的详细介绍,其中MCMGR提供了多核间的通信和同步机制,可在NXP官网下载MCXN947 SDK或者相应库代码,参阅软件包里的详细文档说明,我们也后续的文章中也会慢慢详细介绍这些库的使用。

当前在我们的工程中,通过增加 Available SDK components 加入MCMGR相应的组件。

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第9张

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第10张

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第11张

多核项目的编译过程:

编译多核项目的最简单方法是触发Master项目的构建,通常使用快速启动面板中的“Build”选项。编译器会优先编译Slave项目,然后编译Master项目——最终将从属项目中的固件嵌入到主项目中完成构建。

恩智浦MCXN947 MCU多核应用程序的创建和调试 (https://ic.work/) 技术资料 第12张

如此我们完成了建立一个双核工程应用的第一步。

当万物互联进入深水区,双核MCU已不仅仅是芯片面积的简单倍增,而是演变为一场嵌入式系统的认知革命。它用物理核的确定性终结软件虚拟化的性能损耗,以硬件级任务隔离破解系统的实时性瓶颈,更通过核间通信总线构建出数据流转的专属高速公路。

据预测,未来双核MCU将占据工业自动化市场63%的份额,这场始于芯片架构的变革,终将催化出智能终端从「机械执行」到「自主决策」的质变---在算力与功耗的天平上,双核架构正在为万物装上隐形的智能翅膀。

文章推荐

相关推荐