0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MYD-LD25X Cortex-M33实时核开发实战解析

米尔电子 2025-11-06 08:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式系统设计中,如何平衡高性能计算与实时控制一直是工程师面临的挑战。STM32MP257的异构架构为这一难题提供了优雅的解决方案,而其中的Cortex-M33实时核更是实现硬实时性能的关键所在。

一、异构架构:分工明确,效能卓越

STM32MP257采用创新的双核子系统设计:

Cortex-A35应用核(双核1.5GHz):运行Linux系统,负责复杂UI、网络通信、文件管理等非实时任务。

Cortex-M33实时核(400MHz):专攻实时控制,具备纳秒级中断响应,集成FPU和DSP指令集。

二、架构优势凸显

硬件级资源隔离:通过RIF单元确保M33核独占关键外设,避免核间冲突

能效精细控制:支持独立电源域,M33可在A核休眠时单独运行

安全可靠:TrustZone技术,为关键代码提供硬件级保护

三、OpenAMP:异构通信的桥梁

OpenAMP是异构系统中核心间消息通信的开源框架,基于RPMsg+共享内存+中断,让Linux核和Cortex-M核可以可靠地传递消息和数据,高效地共享数据或协调任务的机制,简化异构多核开发。

在STM32MP257中,典型实现方式包括remoteproc+virtio+RPMsg等。它的核心目标是让Cortex-A核和Cortex-M核协同工作,同时保持资源隔离和实时性能。

Remoteproc框架

STM32MP257使用了RemoteProc框架让A核运行的Linux系统可以更加轻松的和M核进行通信控制,RemoteProc主要作用就是对远程处理器的生命周期进行管理,即启动、停止远程处理器。该框架还会创建 RPMsg Virtio 设备。以下是RemoteProc的逻辑框图:

2b60763e-baa4-11f0-8ce9-92fbcf53809c.png

图1 RemoteProc运行逻辑

在RemoteProc框架中,需要在Linux系统中将M核的固件通过命令加载到M核的内存中。

RPMsg框架

RPMsg框架( Remote Processor Messaging Framework )则是实现对远程处理器信息传递。RPMsg是基于VirtIO的消息总线,它允许内核驱动程序与系统上可用的远程处理器进行通信。通讯框架入下图:

2b84205c-baa4-11f0-8ce9-92fbcf53809c.png

图2 RPMSG框架

消息服务基于共享内存,使用RPMsg 和 Virtio 框架,RemoteProc框架则控制远程处理器生命周期。信号通知( Mailbox )服务则基于内部IPCC( Inter-Processor communication controller ),ST提供 OpenAMP相关库。

Virtio(虚拟化模块)

Virtio 是一个支持虚拟化的 I/O 框架,通过共享环形缓冲区(vring)提供高效的消息传输层。Virtio中有两个单向的vring,分别用于处理器之间的消息传递,RX VRING 用于接收来自远程处理器的消息,TX VRING专用于将消息发送到远程处理器。

四、实战演练:异核控制LED

基于异构通讯框架,A核通过发送LED控制命令,驱动M33核响应并实现LDE灯的开关操作。

在构建前需要将开发板设备树中的gpio_led的蓝灯关闭,关闭A核占用,设备树中修改位置具体如下:

2b9b255e-baa4-11f0-8ce9-92fbcf53809c.png

图3 设备树屏蔽蓝灯

关闭后将设备树单独构建并更新到开发板中,具体方式请查阅《MYD-LD25X Linux 软件开发指南》中4.3章节。

在IDE中导入OpenAMP_TTY_echo_Led例程,导入完成后如下所示:

2bb0f0be-baa4-11f0-8ce9-92fbcf53809c.png

图4 例程导入

该例程由官方例程OpenAMP_TTY_echo修改,主要修改即为下图中虚拟串口回调函数的框选部分:

2bc9acbc-baa4-11f0-8ce9-92fbcf53809c.png

图5 回调函数修改

实现过程比较简单,基本是对A核的消息进行了判断处理,针对GPIO的主要控制使用了HAL_GPIO_WritePin函数,该函数位于Drivers/BSP/stm32mp2xx_hal_gpio.c:

2bde74a8-baa4-11f0-8ce9-92fbcf53809c.png

图6 函数实现

程序运行流程图:

2bf07f04-baa4-11f0-8ce9-92fbcf53809c.png

图7OpenAMP_TTY_echo_Led流程图

然后继续构建,点击上图4中的OpenAMP_TTY_echo_Led_CM33_NonSecure,然后点击上方锤子右边箭头并选择CA35TDCID_m33_ns_sign:

2c0a8584-baa4-11f0-8ce9-92fbcf53809c.png

图8编译选择

选择后会立即构建编译,完成后在CA35TDCID_m33_ns_sign目录中拷贝elf文件到开发板中:

2c1e4d58-baa4-11f0-8ce9-92fbcf53809c.png

图9拷贝文件

确保在开发板中目录结构如下:

2c34f8d2-baa4-11f0-8ce9-92fbcf53809c.png

图10 目录结构

输入以下内容执行脚本,运行后如图所示:

root@myd-ld25x:~/OpenAMP_TTY_echo_Led# ./fw_cortex_m33.shstart


2c4c53ce-baa4-11f0-8ce9-92fbcf53809c.png

图11 运行程序

在A核输入以下命令后台监控M核虚拟串口反馈:

root@myd-ld25x:~/OpenAMP_TTY_echo_Led# cat /dev/ttyRPMSG0 &root@myd-ld25x:~/OpenAMP_TTY_echo_Led#


输入以下命令控制Led蓝灯亮灭:

root@myd-ld25x:~/OpenAMP_TTY_echo_Led#echoon > /dev/ttyRPMSG0root@myd-ld25x:~/OpenAMP_TTY_echo_Led#echooff > /dev/ttyRPMSG0


结果如下:

2c5e5d1c-baa4-11f0-8ce9-92fbcf53809c.png

图12 运行结果

2c71e288-baa4-11f0-8ce9-92fbcf53809c.png

图13 米尔基于STM32MP257核心板及开发板

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2313

    文章

    11206

    浏览量

    375246
  • Cortex
    +关注

    关注

    2

    文章

    220

    浏览量

    49069
  • 嵌入式系统设计

    关注

    1

    文章

    17

    浏览量

    8706
  • 米尔电子
    +关注

    关注

    2

    文章

    202

    浏览量

    1156
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ARM Cortex-M33处理器的五大特色

    本文主要介绍Cortex-M33Cortex-M33是首款采用TrustZone® 安全技术和数字信号处理技术的ARMv8-M全功能实现处理器。该处理器可以支持大量灵活的配置选项,并在广泛应用
    发表于 01-11 13:40 4431次阅读

    【飞凌嵌入式】基于i.MX9352开发M的FreeRTOS设计例程

    i.MX 9352作为NXP 推出的新一代轻量级边缘AI处理器,集成2个Cortex-A55和1个Cortex-M33实时,其架构设计充
    的头像 发表于 06-13 16:14 2603次阅读
    【飞凌嵌入式】基于i.MX9352<b class='flag-5'>开发</b>板<b class='flag-5'>M</b><b class='flag-5'>核</b>的FreeRTOS设计例程

    超强算力+实时响应!米尔发布基于STM32MP25x核心板Debian系统

    客户端连接测试 下载客户端 Windows下载并安装客户端软件(如RealVNC Viewer),如下图所示:图2.1 客户端VNC界面 获取连接信息 通过myd-ld25x开发板获取目标设备的IP
    发表于 03-07 15:25

    【米尔-STM32MP257开发板试用体验】初次体验米尔-STM32MP257开发

    是ST推出的搭载了双Cortex-A35 @1.5 GHz和Cortex-M33 @400 MHz的微处理器。米尔电子基于STM32MP257D推出了MYD-LD25X
    发表于 04-30 16:21

    请问如何在 FRDM-i.MX93 上刷新和调试 Cortex-M33Cortex-A55?

    Cortex-M33实时核心). 我现在对刷机和调试.我想澄清一下: Cortex-M33M33 实时内核) 我可以使用吗SEGG
    发表于 04-23 09:40

    Cortex-M33的五大特色介绍

    ARM Cortex-M33处理器的五大特色
    发表于 01-29 07:35

    怎么实现基于业界首款Cortex-M33微控制器LPC55S69的电路设计?

    怎么实现基于业界首款Cortex-M33微控制器LPC55S69的电路设计?
    发表于 06-15 09:14

    ARMv8-M trustzone IOT安全之基于Cortex-M33的TFM测试

    1、基于Cortex-M33的TFM 测试  针对IOT(Internet Of Things,万物物联),ARM v8-M 架构也引入了trustzone,推出了PSA(Platform
    发表于 09-14 14:41

    在哪里可以找到支持Cortex-M33的“X-CUBE-CRYPTOLIB”?

    我正在使用 STM32L562VET6,请告诉我在哪里可以找到支持 Cortex-M33 的“X-CUBE-CRYPTOLIB”。
    发表于 01-04 06:38

    FPGA云:基于Cortex-M33的平台技术参考手册

    FPGA云:基于Cortex-M33的平台技术参考手册
    发表于 08-02 14:53

    Cortex-M33 Cycle Model用户指南

    本节总结了循环模型与硬件的功能,并描述了循环模型的性能和准确性。有关详细信息,请参阅Cortex-M33技术参考手册(Arm 100230)
    发表于 08-12 07:53

    ST×米尔STM32MP25x线下培训会

    STM32MP257D是ST推出的搭载了双Cortex-A35@1.5GHz和Cortex-M33@400MHz的微处理器。米尔电子基于STM32MP257D推出了MYD-LD25X
    的头像 发表于 12-06 01:00 1218次阅读
    ST×米尔STM32MP<b class='flag-5'>25x</b>线下培训会

    ST×米尔STM32MP25x线下培训会倒计时12天

    STM32MP257D是ST推出的搭载了双Cortex-A35@1.5GHz和Cortex-M33@400MHz的微处理器。米尔电子基于STM32MP257D推出了MYD-LD25X
    的头像 发表于 12-26 08:04 1050次阅读
    ST×米尔STM32MP<b class='flag-5'>25x</b>线下培训会倒计时12天

    ST×米尔STM32MP25x高阶实战培训会

    STM32MP25x是ST推出的搭载了双Cortex-A35@1.5GHz和Cortex-M33@400MHz的微处理器。米尔电子基于STM32MP
    的头像 发表于 03-13 08:04 1566次阅读
    ST×米尔STM32MP<b class='flag-5'>25x</b>高阶<b class='flag-5'>实战</b>培训会

    免费丨米尔 STM32MP257开发板有奖试用

    米尔与ST合作发布的新品基于STM32MP257应用处理器的MYD-LD25X开发板免费试用活动来啦~~米尔提供了2块价值488元的MYD-LD25X开发板发起试用活动您不仅可以免费
    的头像 发表于 03-20 08:05 1375次阅读
    免费丨米尔 STM32MP257<b class='flag-5'>开发</b>板有奖试用