你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

2025国庆中秋活动体验报告6 OpenAMP实现数据交互

[复制链接]
lugl 发布时间:2025-10-30 07:42

【前言】

管管在我前面一篇帖留言,应他的要求这一篇我将分享如何通过OpenAMP来实现信息的交互。

【OpemAMP通信原理】

ST介绍OpenAMP的资料不多,但是只要理解他的原理后,对于掌握双枋通信就变得非常简单。

1、双核的通信建立在HSEM中断基础之上。

2、双核的数据交互建立在共享内存之上。

HSEM通过中断响应来实现双核的信号量的通知,当有数据交互时,去共享内存中获取数据,来实现高效的数据交互。

【工程基础的配置】

1、开启HSEM以及中断。

image.png

image.png

2、配置共享内存:

双核通信,必需指定都能访问共同的内存共间。特别是CM7核,还需要配置MPU。在STM32H745中,选择SRAM3来做为共同访问的内存空间:

image.png

配置起始地址为0x3800000

image.png

通过上面的配置,我们拿到了OpenAMP的通信的基础配置。

【双核通信的流程以及代码实现】

在官网的手册《AN5617》中的流程如下:

image.png

根据以上的流程图,我开始代码的编写,首先是CM7内核,在工程中CM7为主,CM4为从。

1、首先定义服务名称:#define RPMSG_SERVICE_NAME "openamp_mks",这个需要双核都为同样的名称。

2、接下来定义

volatile int message_received; //接收标志
static volatile int service_created;  //创建服务标志
static struct rpmsg_endpoint rp_endpoint;   //消息挂载点
uint8_t mks_rx_buffer[256];                  //数据接收缓冲区
收藏 评论1 发布时间:2025-10-30 07:42

举报

1个回答
lugl 回答时间:2025-10-30 07:51:47

【双核通信的流程以及代码实现】

在官网的手册《AN5617》中的流程如下:

image.png

根据以上的流程图,我开始代码的编写,首先是CM7内核,在工程中CM7为主,CM4为从。

1、首先定义服务名称:#define RPMSG_SERVICE_NAME "openamp_mks",这个需要双核都为同样的名称。

2、接下来定义

volatile int message_received; //接收标志 static volatile int service_created; //创建服务标志 static struct rpmsg_endpoint rp_endpoint; //消息挂载点 uint8_t mks_rx_buffer[256]; //数据接收缓冲区

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版