如何使用 RT1180 消息单元 MU 进行核间通信

一、 MU 介绍   

    i.MX RT1180 是个双核 MCU,包含一个 Cortex-M7 内核和一个 Cortex-M33 内核,它们的工作频率不同,M7 可运行至 800Mhz,M33 可运行至 240Mhz,它们共用相同的内存和外部设备,为了保证它们在访问这些资源时不会发生冲突,通过消息单元(Messaging Uint),内核间可以交换数据、状态、控制信号,协调内存访问,避免竞争条件和数据一致性问题。

    MU 做为外部设备挂在两个内核的外部设备总线下,它具有以下特性:每个内核连接到不同的 MU,MUA 和 MUB 分别有 4 个发送寄存器和 4 个接收寄存器,内核 A 将数据写入 MUA 的发送寄存器,MUA 将数据发送到内核 B 的 MUB 的接收寄存器,通过此操作实现内核间数据和消息的传递;

   状态和控制寄存器之间可以发送传输空标志和接收满标志以促进双核间的通信效率,

   双核间中断,例如:内核 A 可以让内核 B 产生一个中断以通知内核 B 发生了一个发送或接收事件,或者通过中断唤醒内核 B ,MU 提供了  12 个不同的中断,下图中的控制和状态寄存器可以当作各自内核的内存空间的外设,内核可以复位另外一个内核,每个内核都可以复位 MU ,具体的 MU 框图如下:

二、 硬件连接

         使用 RT1180-EVK,USB 线连接 J53 至电脑,即使用板载 Jlink, 外部供电,如下图:

三、 MU 配置与下载测试

        MU 不需要引脚和时钟的配置,本文使用 SDK 下的 MU 中断工程测试,同时打开内核 0 和 内核 1 的 IAR 工程:

SDK_2_16_100_MIMXRT1180-EVK\boards\evkmimxrt1180\driver_examples\mu\interrupt\core0\iar\mu_interrupt_core0.eww

SDK_2_16_100_MIMXRT1180-EVK\boards\evkmimxrt1180\driver_examples\mu\interrupt\core1\iar\mu_interrupt_core1.eww

先编译 core1 代码,在下载 core0 时,代码中会将 core1 的程序一并下载(RAM 或者 Flash),

代码比较简单,如下图片所示:



打开串口工具,串口选择 Jlink CDC UART,core0 执行之后打印出 MU example run succeed! 表示消息发送接收成功:

参考文档

 RT1180 参考手册:

https://www.nxp.com/docs/en/reference-manual/IMXRT1180RM.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

参考来源

评论