天天关注:RTOS实现双核MCU消息通信

2023-06-07 20:27:34 来源: strongerHuang

手机电脑多核的CPU你可能经常看见,但多核的单片机相对来说就不那么常见了。随着需求的增加、技术的进步,单片机已不再局限于单核了,因此,近几年陆续出现了双核的单片机了。 你可能会好奇,双核单片机之间怎么通信?其实,通信的方式和方法有很多种。本文就给大家描述一下:使用FreeRTOS消息缓冲区,实现简单的非对称多处理(AMP)核心到核心通信,结合STM32H7(M4和M7) 双核处理器为例。

概述


(相关资料图)

实现STM32H7双核之间通信是FreeRTOS官方提供的一个方案,是基于FreeRTOS消息缓冲区,该消息缓冲区是无锁循环缓冲区,可以将大小不同的数据包从单个发送方传递到单个接收方。 说明,该消息缓冲区仅提供数据的传输,不提供通信相关协议处理。

基本原理

实现双核之间通信基本原理:发送和接收任务位于非对称多处理器(AMP)配置中的多核微控制器(MCU)的不同内核上,这意味着每个内核都运行自己的FreeRTOS程序。 同时,一个内核在另一个内核中具有生成中断的能力,以及两个内核都有访问的内存区域(共享内存)。消息缓冲区以每个内核上运行在应用程序已知的地址置在共享内存中,如下图: 理想情况下,还将有一个内存保护单元(MPU),以确保只能通过内核的消息缓冲区API来访问消息缓冲区,并最好将共享内存标记为不可被其他程序占用。

单消息代码描述

这里官方提供了实现该方案的基础代码(仅供参考)。 将数据发送到流缓冲区的代码:

xMessageBufferSend(){    /* If a time out is specified and there isn"t enough    space in the message buffer to send the data, then    enter the blocked state to wait for more space. */    if( time out != 0 )    {        while( there is insufficient space in the buffer &&               not timed out waiting )        {            Enter the blocked state to wait for space in the buffer        }    }    if( there is enough space in the buffer )    {        write data to buffer        sbSEND_COMPLETED()    }}
从流缓冲区读取数据的代码:
xMessageBufferReceive(){    /* If a time out is specified and the buffer doesn"t    contain any data that canbe read, then enter the    blocked state to wait for the buffer to contain data. */    if( time out != 0 )    {        while( there is no data in the buffer &&               not timed out waiting )        {            Enter the blocked state to wait for data        }    }    if( there is data in the buffer )    {        read data from buffer        sbRECEIVE_COMPLETED()    }}
如果任务在xMessageBufferReceive()中进入阻塞状态以等待缓冲区包含数据,则将数据发送到缓冲区必须取消阻塞该任务,以便它可以完成其操作。 当xMessageBufferSend()调用sbSEND_COMPLETED()时,任务将不受阻碍。 ISR通过将消息缓冲区的句柄作为参数传递给xMessageBufferSendCompletedFromISR()函数来解除对任务的阻塞。 如图箭头所示,其中发送和接收任务位于不同的MCU内核上:1.接收任务尝试从空的消息缓冲区中读取数据,并进入阻止状态以等待数据到达。2.发送任务将数据写入消息缓冲区。3.sbSEND_COMPLETED()在正在执行接收任务的内核中触发一个中断。4.中断服务例程调用xMessageBufferSendCompletedFromISR()来解除阻止接收任务,该任务现在可以从缓冲区读取,因为缓冲区不再为空。

多消息代码描述

当只有一个消息缓冲区时,很容易将消息缓冲区的句柄传递到xMessageBufferSendCompletedFromISR()中。 但是要考虑有两个或更多消息缓冲区的情况,ISR必须首先确定哪个消息缓冲区包含数据。如果消息缓冲区的数量很少,则有几种方法可以实现:

如果硬件允许,则每个消息缓冲区可以使用不同的中断线,从而使中断服务程序和消息缓冲区之间保持一对一的映射。

中断服务例程可以简单地查询每个消息缓冲区以查看其是否包含数据。

可以通过传递元数据(消息是什么,消息的预期接收者是什么等等)以及实际数据的单个消息缓冲区来代替多个消息缓冲区。

但是,如果存在大量或未知的消息缓冲区,则这些技术效率不高。 在这种情况下,可伸缩的解决方案是引入单独的控制消息缓冲区。如下面的代码所示,sbSEND_COMPLETED()使用控制消息缓冲区将包含数据的消息缓冲区的句柄传递到中断服务例程中。 使用sbSEND_COMPLETED()的实现:

/* Added to FreeRTOSConfig.h to override the default implementation. */#define sbSEND_COMPLETED( pxStreamBuffer ) vGenerateCoreToCoreInterrupt( pxStreamBuffer )/* Implemented in a C file. */void vGenerateCoreToCoreInterrupt( MessageBufferHandle_t xUpdatedBuffer ){size_t BytesWritten.    /* Called by the implementation of sbSEND_COMPLETED() in FreeRTOSConfig.h.    If this function was called because data was written to any message buffer    other than the control message buffer then write the handle of the message    buffer that contains data to the control message buffer, then raise an    interrupt in the other core.  If this function was called because data was    written to the control message buffer then do nothing. */    if( xUpdatedBuffer != xControlMessageBuffer )    {        BytesWritten = xMessageBufferSend(  xControlMessageBuffer,                                            &xUpdatedBuffer,                                            sizeof( xUpdatedBuffer ),                                            0 );        /* If the bytes could not be written then the control message buffer        is too small! */        configASSERT( BytesWritten == sizeof( xUpdatedBuffer );        /* Generate interrupt in the other core (pseudocode). */        GenerateInterrupt();    }}
然后,ISR读取控制消息缓冲区以获得句柄,将句柄作为参数传递到xMessageBufferSendCompletedFromISR()中:
void InterruptServiceRoutine( void ){MessageBufferHandle_t xUpdatedMessageBuffer;BaseType_t xHigherPriorityTaskWoken = pdFALSE;    /* Receive the handle of the message buffer that contains data from the    control message buffer.  Ensure to drain the buffer before returning. */    while( xMessageBufferReceiveFromISR( xControlMessageBuffer,                                         &xUpdatedMessageBuffer,                                         sizeof( xUpdatedMessageBuffer ),                                         &xHigherPriorityTaskWoken )                                           == sizeof( xUpdatedMessageBuffer ) )    {        /* Call the API function that sends a notification to any task that is        blocked on the xUpdatedMessageBuffer message buffer waiting for data to        arrive. */        xMessageBufferSendCompletedFromISR( xUpdatedMessageBuffer,                                            &xHigherPriorityTaskWoken );    }    /* Normal FreeRTOS "yield from interrupt" semantics, where    xHigherPriorityTaskWoken is initialised to pdFALSE and will then get set to    pdTRUE if the interrupt unblocks a task that has a priority above that of    the currently executing task. */    portYIELD_FROM_ISR( xHigherPriorityTaskWoken );}
如图,使用控制消息缓冲区时的顺序:1.接收任务尝试从空的消息缓冲区中读取数据,并进入阻止状态以等待数据到达。2.发送任务将数据写入消息缓冲区。3.sbSEND_COMPLETED()将现在包含数据的消息缓冲区的句柄发送到控制消息缓冲区。4.sbSEND_COMPLETED()在正在执行接收任务的内核中触发一个中断。5.中断服务例程从控制消息缓冲区中读取包含数据的消息缓冲区的句柄,然后将该句柄传递给xMessageBufferSendCompletedFromISR()API函数以取消阻止接收任务,该任务现在可以从缓冲区读取,因为缓冲区不再存在空的。 当然,以上仅提供基础原理和方法,具体实现需结合项目实际情况。更多相关内容,请参看官方相关资料。审核编辑:汤梓红

标签:

上一篇 : 什么是插件?

下一篇 : 最后一页

天天关注:RTOS实现双核MCU消息通信

RTOS实现双核MCU消息通信-手机、电脑多核的CPU你可能经常看见,但多核

06-07 20:27:34

什么是插件?

来为大家解答以上的问题。什么是插件?这个很多人还不知道,现在让我们

06-07 20:17:35

电脑如何连接网络宽带_电脑宽带不能连接怎么办

大家好,小石来为大家解答以上问题。电脑如何连接网络宽带,电脑宽带不

06-07 19:49:14

最新资讯:拳头联动可口可乐 推出《英雄联盟》限定饮料

可口可乐目前宣布将于游戏开发商拳头合作,推出《英雄联盟》限定联动饮

06-07 18:41:46

UFOU获得首轮数千万元的融资|今日热闻

UFOU是一个家居品牌,主打的产品是升降桌,截至目前他们的产品还包括收

06-07 18:37:19

广东:加快发展保障性租赁住房,对子女较多家庭适当提高租赁补贴标准

广东省发布《关于进一步完善和落实积极生育支持措施的实施意见》。意见

06-07 18:20:27

天天最资讯丨华微电子(600360)6月7日主力资金净卖出809.06万元

截至2023年6月7日收盘,华微电子(600360)报收于6 95元,上涨0 72%,换

06-07 17:36:53

东丽区气象台发布雷雨大风蓝色预警/IV级/一般【2023-06-07】

东丽区气象台于2023年06月07日15时20分发布雷雨大风蓝色预警信号:预计

06-07 17:12:13

【速看料】biubiu加速器如何切换线路 biubiu加速器切换智能模式教程

biubiu加速器如何切换线路biubiu加速器切换智能模式教程,

06-07 16:47:05

广东省商务厅张劲松:近三年广东自贸试验区进出口总额年均增长超过25%

上证报中国证券网讯6月7日,广东省新闻办举行中国(广东)自由贸易试验

06-07 16:03:24

印尼防长:东盟不接受政变集团镇压本国人民的行为 环球通讯

印尼防长:东盟不接受政变集团镇压本国人民的行为,军队,东盟,缅甸,政变

06-07 14:45:16

华峰超纤(300180.SZ):预计下半年分布式能源站将进行负荷运行验收和联调联试验收

格隆汇6月7日丨华峰超纤300180300180SZ公布此前披露公司于2018年1月2日

06-07 14:42:03

全球时讯:安联锐视(301042.SZ)总经理李志洋减持时间过半 尚未减持公司股份

智通财经APP讯安联锐视301042SZ发布公告截至2023年6月6日公司董事总经

06-07 14:11:03

法网第11日看点:去年女单决赛重演,小花王欣瑜冲击双打四强

北京时间6月7日,法网将会进入第11比赛日的争夺,这个比赛日男女单打1

06-07 12:49:06

蓝帆医疗股东户数下降2.12%,户均持股7.46万元

蓝帆医疗最新股东户数10 04万户,高于行业平均水平。公司户均持有流通

06-07 12:08:35

每日视讯:2023年贵州村超联赛赛程表

2023年榕江(三宝侗寨)和美乡村足球超级联赛赛程表“村超”名字的由来

06-07 11:39:38

世界热讯:炀怎么读姓氏_炀怎么读

1、炀(炀)yáng熔化金属。2、火旺。3、烘干,烤火。4、古代谥法,去礼

06-07 10:50:45

哈市道里区政协开展科技赋能实体经济活动助力企业发展

中新网黑龙江新闻6月6日电(包丹)为深入贯彻落实党的二十大精神,学思践

06-07 10:23:09

同九义汝何秀什么意思_同九义汝何秀什么意思怎么回复下一句_今日要闻

想必现在有很多小伙伴对于同九义汝何秀什么意思怎么回复下一句方面的知

06-07 09:30:49

太湖科学城功能片区开展“六一”走访慰问活动 全球观察

太湖科学城功能片区开展“六一”走访慰问活动在孩子们最喜欢的节日“六

06-07 09:04:41

louder沙一汀_louder 当前热门

1、Charice-LouderLouder(x4)I’mstaringoutofmywindowAnd

06-07 07:52:46

粹的古诗有哪些 含有“纯”字的古诗词有哪些?

抄写作文网小编为大家提供粹的古诗有哪些含有“纯”字的古诗词有哪些?

06-07 07:03:43

天龙八部仿官服能玩吗_天龙八部仿官私服网-热点

1、没有不变态的私服都是100%变态的!不过要新地图的也就只有盐湖其他

06-07 06:16:08

广西邮政快递业下沉布局 “土特产”走向全国大市场-环球热点

中新网南宁6月6日电 题:广西邮政快递业下沉布局“土特产”走向全

06-07 05:53:34

广西邮政快递业下沉布局 “土特产”走向全国大市场

中新网南宁6月6日电 题:广西邮政快递业下沉布局“土特产”走向全

06-07 05:40:53

年夜饭的由来(年夜饭的由来简短50字)-今日讯

年夜饭的来历和年兽有关,这种名叫年的怪兽非常凶恶,每年天都会从海底

06-07 05:13:59

焦点滚动:电脑故障判断技巧_电脑故障判断

1、不是显卡。2、显卡坏了,系统前面可能连个接口都没有。3、可能是驱

06-07 05:01:35

遥感集市app_遥感集市平台

1、是有听说遥感集市网站上数据来源都是很牛,有美国也有中国的,好像

06-07 04:31:00

页码如何加横线_如何插入页码横线 全球聚看点

1、页脚整行空格,全选空格,设置字体格式为下划线2、用自绘图形在页脚

06-07 03:57:40

最新快讯!今日芒种

时雨及芒种四野皆插秧今天6时18分我们迎来夏天的第三个节气芒种人民日

06-07 03:24:47

娱乐日报|虞书欣方回应恋情传闻;霉霉与新男友分手;泰娱顶流CP官宣求婚喜讯_天天新资讯

虞书欣和吴建豪在年龄上相差17岁,这种年龄差哪怕是在年龄感比较模糊

06-07 02:47:35

23.18 万起不输理想?魏牌这 SUV 玩真的 空间堪比豪车!

当今新能源SUV领域,其实插混动力会比纯电动力更受欢迎,其中比较有代

06-07 02:10:53

失而复得任务在哪接_失而复得任务

1、那个箱子在ADM副本外面当你正面看见副本大门的时候请仔细观察你的左

06-07 01:36:05

林声经典音乐视听系列欣赏会_关于林声经典音乐视听系列欣赏会概略 当前最新

1、“林声经典音乐视听系列欣赏会”——是林声音乐工作室的强势品牌。

06-07 00:52:24

快递哪天上班2022_快递哪天上班 全球今日讯

你们好,最近小信发现有诸多的小伙伴们对于快递哪天上班2022,快递哪天

06-06 23:37:06

当前要闻:中国联通网上营业 深圳联通官网

1、直接拨打客服电话。2、不要相信广告。相信通过深圳联通官网这篇文章

06-06 22:48:15

世界滚动:80MW 晶优光伏首个高效N-TOPCon组件定制项目

晶优光伏始终秉承诚信、从善、精进、守廉的价值观,用心生产每一块组件

06-06 21:47:43

windows主题怎么设置 windows主题

1、把系统的主题换成windows默认主题。2、然后至C:WINDOWSResourcesThe

06-06 20:43:16

【世界独家】心理罪t先生是谁 心理罪txt

1、《心理罪》百度网盘txt最新全集下载:链接:提取码:e2n9《心理罪》

06-06 20:00:12

艾力斯(688578)6月6日主力资金净买入253.80万元

截至2023年6月6日收盘,艾力斯(688578)报收于27 24元,下跌2 16%,换手

06-06 18:54:13

天天滚动:成本下降需求疲软 氟化铝价格震荡下跌

氟化铝价格震荡下跌据生意社商品行情分析系统,截止6月6日,国内氟化铝

06-06 18:18:09

环球看热讯:马克龙反对北约在东京开设办事处,外交部:不欢迎北约把触角伸向亚洲

6月6日,外交部发言人汪文斌主持例行记者会。有记者提问,据报道,法国

06-06 17:33:06

特朗普前副手彭斯参加竞选下届总统_天天时讯

美国共和党籍前副总统迈克·彭斯5日向联邦选举委员会递交竞选文件,将

06-06 16:23:58

唯品会崩了相关负责人被免职,盘点唯品会商业版图-焦点观察

日前,唯品会发布了一份处理公告,将329机房宕机故障判定为P0级故障,

06-06 14:49:14

当前快看:武汉江岸国资3亿元私募项目在深交所受理

6月5日,据深交所,“武汉市江岸国有资产经营管理有限责任公司2023年面

06-06 14:03:58

湖南通报6起违反中央八项规定精神问题|全球今亮点

中央纪委国家监委网站讯端午节临近,湖南省纪委监委对近期查处的6起违

06-06 13:15:35

卡瓦哈尔:想替代本泽马这样的球员很难 我们会打造有竞争力阵容-环球新消息

直播吧6月6日讯在一次活动中,皇马后卫卡瓦哈尔被问到了球队最近的一些

06-06 12:13:34

苹果发布会来了:Vision Pro重磅亮相 还有Mac Studio等多款新品发布 全球今热点

北京时间6月6日凌晨1点,苹果公司召开2023苹果全球开发者大会,传闻已

06-06 11:51:12

最高人民检察院关于印发《关于在全国检察机关实行“检务公开”的决定》的通知(对于最高人民检察院关于印发《关于在全国检察机关实行“检务公开”的决定》的通知简单介绍)

聊聊一篇高人民检察院发《全国检察机关实行“检务公开”的决定》的通知

06-06 10:33:35

希欠念什么(左边一个希右边一个欠读什么)

本文目录一览:1、希欠合起来是什么字2、“希”旁边一个“欠”是什么字

06-06 09:52:24

什么是插件?
电脑如何连接网络宽带_电脑宽带不能连接怎么办
最新资讯:拳头联动可口可乐 推出《英雄联盟》限定饮料
UFOU获得首轮数千万元的融资|今日热闻
广东:加快发展保障性租赁住房,对子女较多家庭适当提高租赁补贴标准
天天最资讯丨华微电子(600360)6月7日主力资金净卖出809.06万元
东丽区气象台发布雷雨大风蓝色预警/IV级/一般【2023-06-07】
【速看料】biubiu加速器如何切换线路 biubiu加速器切换智能模式教程
广东省商务厅张劲松:近三年广东自贸试验区进出口总额年均增长超过25%
印尼防长:东盟不接受政变集团镇压本国人民的行为 环球通讯
华峰超纤(300180.SZ):预计下半年分布式能源站将进行负荷运行验收和联调联试验收
全球时讯:安联锐视(301042.SZ)总经理李志洋减持时间过半 尚未减持公司股份
法网第11日看点:去年女单决赛重演,小花王欣瑜冲击双打四强
蓝帆医疗股东户数下降2.12%,户均持股7.46万元
每日视讯:2023年贵州村超联赛赛程表
世界热讯:炀怎么读姓氏_炀怎么读
哈市道里区政协开展科技赋能实体经济活动助力企业发展
同九义汝何秀什么意思_同九义汝何秀什么意思怎么回复下一句_今日要闻
太湖科学城功能片区开展“六一”走访慰问活动 全球观察
louder沙一汀_louder 当前热门
粹的古诗有哪些 含有“纯”字的古诗词有哪些?
天龙八部仿官服能玩吗_天龙八部仿官私服网-热点
广西邮政快递业下沉布局 “土特产”走向全国大市场-环球热点
广西邮政快递业下沉布局 “土特产”走向全国大市场
年夜饭的由来(年夜饭的由来简短50字)-今日讯
焦点滚动:电脑故障判断技巧_电脑故障判断
遥感集市app_遥感集市平台
页码如何加横线_如何插入页码横线 全球聚看点
最新快讯!今日芒种
娱乐日报|虞书欣方回应恋情传闻;霉霉与新男友分手;泰娱顶流CP官宣求婚喜讯_天天新资讯
23.18 万起不输理想?魏牌这 SUV 玩真的 空间堪比豪车!
失而复得任务在哪接_失而复得任务
林声经典音乐视听系列欣赏会_关于林声经典音乐视听系列欣赏会概略 当前最新
快递哪天上班2022_快递哪天上班 全球今日讯
当前要闻:中国联通网上营业 深圳联通官网
世界滚动:80MW 晶优光伏首个高效N-TOPCon组件定制项目
windows主题怎么设置 windows主题
【世界独家】心理罪t先生是谁 心理罪txt
艾力斯(688578)6月6日主力资金净买入253.80万元
天天滚动:成本下降需求疲软 氟化铝价格震荡下跌
环球看热讯:马克龙反对北约在东京开设办事处,外交部:不欢迎北约把触角伸向亚洲
特朗普前副手彭斯参加竞选下届总统_天天时讯
唯品会崩了相关负责人被免职,盘点唯品会商业版图-焦点观察
当前快看:武汉江岸国资3亿元私募项目在深交所受理
湖南通报6起违反中央八项规定精神问题|全球今亮点
卡瓦哈尔:想替代本泽马这样的球员很难 我们会打造有竞争力阵容-环球新消息
苹果发布会来了:Vision Pro重磅亮相 还有Mac Studio等多款新品发布 全球今热点
最高人民检察院关于印发《关于在全国检察机关实行“检务公开”的决定》的通知(对于最高人民检察院关于印发《关于在全国检察机关实行“检务公开”的决定》的通知简单介绍)
希欠念什么(左边一个希右边一个欠读什么)
环球实时:十问郑州市城乡居民养老保险政策→
X 广告
资讯
X 广告

Copyright ©  2015-2023 港澳畜牧网版权所有  备案号:京ICP备2023022245号-31   联系邮箱:435 226 40 @qq.com