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

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中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似分享

官网相关资源

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