RTOS实现双核MCU消息通信 全球观速讯

2023-06-07 23:55:44 来源: 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 23:55:44

土耳其里拉持续贬值 再创历史新低

过去三年,里拉对美元已贬值67%。而为支撑土耳其里拉汇率,并为经常账

06-07 23:12:07

天天快看点丨亡灵盗贼名字最猥琐(亡灵盗贼名字)

灵盗贼名字最猥琐,亡灵盗贼名字这个问题很多朋友还不知道,来为大家解

06-07 23:22:22

生活残骸_关于生活残骸介绍 全球报资讯

生活残骸,关于生活残骸介绍这个很多人还不知道,我们一起来看看!1、《

06-07 23:03:49

退潮!新能源、医疗、消费基金跌出圈 如何回本?专家支招→-世界今日讯

迟迟未能守得云开见月明,基民杨先生陷入纠结。“2021年11月初买了只新

06-07 22:50:42

2023年房屋征收,拆迁补偿协商处理,这5点要注意 世界动态

关于拆迁补偿的协商处理问题,有以下几点需要注意:第一,在拆迁之初,

06-07 22:40:03

顺网科技涨11.96%

中国经济网北京6月7日讯顺网科技(SZ:300113)周三收报19 85元,涨幅11 9

06-07 22:15:34

国网元宝山区供电公司:慰问高考保电一线人员 天天观察

6月7日是高考第一天,考生们迎来了人生中重要的时刻,对于高考保电的电力

06-07 21:52:09

河北省张家口市万全区卫健局:培训预防接种人员 加强预防接种管理-当前视讯

为加强预防接种管理,保障预防接种工作安全、有序开展,近日,河北省张

06-07 21:23:12

收评:创业板指跌1.61%续创新低 AI概念股逆势大涨 环球关注

收评:创业板指跌1 61%续创新低AI概念股逆势大涨,概念股,创业板,个股,

06-07 21:04:43

2023年5月阅读书单,推荐《腾讯是怎么长大的》、《投资的常识》

这个月总共读完7本书,涉及商业、非虚构、营销、生物、投资等几个方面

06-07 20:52:24

年金险特点是什么 年金险有什么优势和劣势 环球快资讯

年金险是保险的一种,但它名义上不算是真正意义上的保险,它相比于其他

06-07 20:34:13

上海市消保委呼吁制定细化外卖包装收费规则 把选择权交给消费者_天天热文

中新网上海6月7日电 (记者 陈静)收费不合理、浪费等外卖包装问题

06-07 20:42:48

重庆两江新区中医院:爱眼日健康宣教进校园 守护孩子明眸“视界”

两江新区中医院眼科医护人员走进童心小学教育集团,开展主题为“守护明

06-07 20:13:02

当前通讯!高中男生洗澡怎么教育_高中男生洗澡

1、我建议你要上就上山观中学的重点班,普通班还不如去成教,山观中学

06-07 19:24:53

方大炭素(600516)6月7日主力资金净卖出918.55万元

截至2023年6月7日收盘,方大炭素(600516)报收于6 21元,下跌0 16%,换

06-07 19:13:58

直击|卡霍夫卡水电站决堤,大水涌入市区,居民带着财物撤离

①当地时间6月6日,赫尔松地区的卡霍夫卡水电站大坝遭到破坏,部分地区

06-07 19:15:55

森林资源保护情况汇报_森林资源保护

1、加强宣传力度,让大家知道保护森林的重要性2、做好森林的防火工作3

06-07 19:12:00

国企领导出差带“小三”逛街?中央巡视组回应:将督促查实 当前动态

6月7日,网传一位国企领导在成都出差期间,与“小三”牵手逛街,被拍到

06-07 18:36:14

青岛地方税务局网上办税厅_青岛国家税务局网上办税服务厅税税通

1、国家税务局答复你单位关于购货方和付款方不一致是否可以抵扣进项税

06-07 18:30:45

恒大物业连发三份业绩报:2022年成功扭亏,134亿元被占资金正与恒大商议

本报(chinatimes net cn)记者李贝贝上海报道停牌一年半之久,恒大物

06-07 18:36:51

6月7日聊城市开发区志启无缝管报价上涨

6月7日,聊城市开发区志启钢管有限公司20 ,108*4 5无缝管现价4650元

06-07 17:59:53

天天最资讯丨初中女厕精品视频网站(0女厕大小便)

1、阴部。2、出尿的地方叫尿道。本文就为大家分享到这里,希望看了会喜

06-07 18:02:49

环球微速讯:我得到了锻炼作文400字

我得到了锻炼作文400字中秋节时,爸爸带我和妈妈回老家了。上午,爸爸

06-07 17:50:27

椰视频丨老人为两代人送考 直言“十年寒窗不易,此刻需放手一搏”_当前观察

点击查看更多视频6月7日上午,海南华侨中学高中部考点外,一位奶奶身穿

06-07 17:45:04

荣盛发展回复年报问询函:短期内销售不景气,公司存一定偿债压力-焦点资讯

荣盛发展回复年报问询函:短期内销售不景气,公司存一定偿债压力,债券,

06-07 17:26:48

【收评】锰硅日内下跌1.66% 机构称硅锰钢招和盘面价格均较为承压

行情表现6月7日收盘价当日涨跌幅五日涨跌幅锰硅6534 00元 吨-1 66%-0 3

06-07 17:19:15

断面图和剖面图的区别图片_断面图和剖面图的区别

想必现在有很多小伙伴对于断面图和剖面图的区别方面的知识都比较想要了

06-07 16:41:08

安国市场:当归人气依然较旺 行情再创历史新高

当归,近期产区人气依然较旺,货源成交量增加,目前持货者喊价较高,现

06-07 16:42:28

全球热点评!金百泽:研发了400G光模块PCB关键工艺技术

金百泽在互动平台表示,公司研发了400G光模块PCB关键工艺技术,该技术

06-07 16:36:13

面包糠炸鸡翅视频_面包糠炸鸡翅 快资讯

1、鸡翅洗净,用盐、酱油、耗油、鸡精、大料、葱、料酒胭脂2小时。2、

06-07 16:13:25

神仙级避暑线路分享这次宁波上大分 世界快播

神仙级避暑线路分享这次宁波上大分,瀑布,栈道,秀丽,宁波,四明湖,雪窦山

06-07 16:28:15

2023北京大病医疗报销比例及标准是多少? 天天新视野

参保了职工基本医疗保险时,都是可以享受到基础待遇保待遇,而且也会缴

06-07 15:56:00

焦点信息:高考作文AI写|上海卷“探索陌生世界”

高考作文AI写|上海卷“探索陌生世界”6月7日,2023年高考正式开考。今

06-07 15:51:24

开店网名大全_开房网 焦点热讯

1、用身份证是有规定的不过对于你父母说到派出所查他们还不能说想查就

06-07 15:42:39

钟秋生:为家乡制出百香果茶

钟秋生:为家乡制出百香果茶(主题)记者陈木易石美祥最近,省级科技特

06-07 15:19:59

天天报道:赵明诚:美联储通胀持续存在,黄金区间震荡依旧

赵明诚:美联储通胀持续存在,黄金区间震荡依旧不愿意放弃手中的一粒石

06-07 14:35:58

朗逸点火钥匙转不动怎么办(朗逸拧钥匙打火没反应原因是什么?)|快播

相信大家对朗逸点火钥匙转不动怎么办,朗逸拧钥匙打火没反应原因是什么

06-07 14:13:24

焦点速递!广西蒙山县天书侠谷景区旅游项目开工 总投资1亿元

项目地点拟定在天书侠谷景区剑箫阁附近,主要投资项目包括:侠谷自然漂

06-07 13:54:24

全球聚焦:高考试卷是在监狱印刷的?揭秘!

一年一度的高考于6月7日拉开帷幕。当考生坐在考场上,接过监考老师

06-07 13:03:52

暗黑4觅血者的威能介绍

暗黑4觅血者的威能是很多暗黑玩家都关注的,暗黑4是最新才发售的暴雪力

06-07 11:50:18

汉警护航高考_焦点报道

汉警护航高考---武汉市公安局江岸区交通大队汉警快骑机动队50多位队员

06-07 11:38:36

各地出台全方面服务保障 营造温馨、舒适高考环境

央视网消息:日前,教育部已经会同有关部门多次作出部署,要求各地坚持

06-07 11:12:31

哈利波特6电影资源_哈利波特6迅雷下载|全球新资讯

1、自己去百度云搜索授人与鱼不如授人与渔。本文到此分享完毕,希望对

06-07 10:13:25

大国重器 深圳上新_天天播报

中国航发“太行110”重型燃气轮机(代号AGT-110)在深圳通过产品验证鉴定

06-07 09:56:47

高考期间北京送考车辆不受尾号限行限制

央视网消息:明天(6月7日),2023年全国高考将拉开帷幕。记者从北京交

06-07 09:24:02

启迪环境:公司为高新技术企业 享受国家关于高新技术企业的税收优惠政策

有投资者在投资者互动平台提问:请问,公司及旗下子公司是否可以享受20

06-07 08:44:19

安徽省滁州市2023-06-07 04:45发布大雾黄色预警

音频解说一、安徽省滁州市天气预报来安县气象台2023年06月07日04时40分

06-07 08:43:13

世界即时:陆川“前方播报”Vision Pro真实体验:我明白了什么是“苹果亲手颠覆苹果”

时差还没倒过来,陆川还沉浸在刚刚体验完苹果VisionPro的兴奋之中。他

06-07 08:18:01

英国央行在一份声明中表示,该行已经完成了所有计划中的公司债出售,所持债券较最初购买额200亿英镑减少逾95%-每日讯息

英国央行在一份声明中表示,该行已经完成了所有计划中的公司债出售,所

06-07 07:11:15

土耳其里拉持续贬值 再创历史新低
天天快看点丨亡灵盗贼名字最猥琐(亡灵盗贼名字)
生活残骸_关于生活残骸介绍 全球报资讯
退潮!新能源、医疗、消费基金跌出圈 如何回本?专家支招→-世界今日讯
2023年房屋征收,拆迁补偿协商处理,这5点要注意 世界动态
顺网科技涨11.96%
国网元宝山区供电公司:慰问高考保电一线人员 天天观察
河北省张家口市万全区卫健局:培训预防接种人员 加强预防接种管理-当前视讯
收评:创业板指跌1.61%续创新低 AI概念股逆势大涨 环球关注
2023年5月阅读书单,推荐《腾讯是怎么长大的》、《投资的常识》
年金险特点是什么 年金险有什么优势和劣势 环球快资讯
上海市消保委呼吁制定细化外卖包装收费规则 把选择权交给消费者_天天热文
重庆两江新区中医院:爱眼日健康宣教进校园 守护孩子明眸“视界”
当前通讯!高中男生洗澡怎么教育_高中男生洗澡
方大炭素(600516)6月7日主力资金净卖出918.55万元
直击|卡霍夫卡水电站决堤,大水涌入市区,居民带着财物撤离
森林资源保护情况汇报_森林资源保护
国企领导出差带“小三”逛街?中央巡视组回应:将督促查实 当前动态
青岛地方税务局网上办税厅_青岛国家税务局网上办税服务厅税税通
恒大物业连发三份业绩报:2022年成功扭亏,134亿元被占资金正与恒大商议
6月7日聊城市开发区志启无缝管报价上涨
天天最资讯丨初中女厕精品视频网站(0女厕大小便)
环球微速讯:我得到了锻炼作文400字
椰视频丨老人为两代人送考 直言“十年寒窗不易,此刻需放手一搏”_当前观察
荣盛发展回复年报问询函:短期内销售不景气,公司存一定偿债压力-焦点资讯
【收评】锰硅日内下跌1.66% 机构称硅锰钢招和盘面价格均较为承压
断面图和剖面图的区别图片_断面图和剖面图的区别
安国市场:当归人气依然较旺 行情再创历史新高
全球热点评!金百泽:研发了400G光模块PCB关键工艺技术
面包糠炸鸡翅视频_面包糠炸鸡翅 快资讯
神仙级避暑线路分享这次宁波上大分 世界快播
2023北京大病医疗报销比例及标准是多少? 天天新视野
焦点信息:高考作文AI写|上海卷“探索陌生世界”
开店网名大全_开房网 焦点热讯
钟秋生:为家乡制出百香果茶
天天报道:赵明诚:美联储通胀持续存在,黄金区间震荡依旧
朗逸点火钥匙转不动怎么办(朗逸拧钥匙打火没反应原因是什么?)|快播
焦点速递!广西蒙山县天书侠谷景区旅游项目开工 总投资1亿元
全球聚焦:高考试卷是在监狱印刷的?揭秘!
暗黑4觅血者的威能介绍
汉警护航高考_焦点报道
各地出台全方面服务保障 营造温馨、舒适高考环境
哈利波特6电影资源_哈利波特6迅雷下载|全球新资讯
大国重器 深圳上新_天天播报
高考期间北京送考车辆不受尾号限行限制
启迪环境:公司为高新技术企业 享受国家关于高新技术企业的税收优惠政策
安徽省滁州市2023-06-07 04:45发布大雾黄色预警
世界即时:陆川“前方播报”Vision Pro真实体验:我明白了什么是“苹果亲手颠覆苹果”
英国央行在一份声明中表示,该行已经完成了所有计划中的公司债出售,所持债券较最初购买额200亿英镑减少逾95%-每日讯息
世界银行:全球增长预计将从2022年的3.1%放缓至2023年的2.1%
X 广告
行业动态
X 广告

Copyright ©  2015-2022 欧洲植物网版权所有  备案号:沪ICP备2022005074号-23   联系邮箱: 58 55 97 3@qq.com