掌桥专利:专业的专利平台
掌桥专利
首页

一种多核系统的内存共享方法

文献发布时间:2024-04-18 19:58:21


一种多核系统的内存共享方法

技术领域

本发明涉及汽车电子技术领域,具体是一种多核系统的内存共享方法。

背景技术

多核系统的内存共享,传递信息一般基于一种类似邮箱的机制,即需要多核共享时,一内核向另一内核发送消息,消息带有共享内存的起始地址和需要共享的数据长度等信息,以此来实现多核共同访问某块内存。由于现在的类似邮箱或消息的机制,如果进行代码的移植,就要重写内存功能共享相关的代码,为程序的维护带来额外的工作量,因此亟待解决。

发明内容

为了避免和克服现有技术中存在的技术问题,本发明提供了一种多核系统的内存共享方法。本发明能够有效的提高多核系统数据共享的精度,减小工作的开支。

为实现上述目的,本发明提供如下技术方案:

一种多核系统的内存共享方法,包括以下步骤:

S1、构建共享内存信息块,共享内存信息块为{共享内存ID,共享内存信息块数据长度,共享内存类别,共享信息的第一部分,共享信息的第二部分,校验};

S2、通过多核系统中用于内存分配的配置文件分配对应的内存空间;

S3、根据对应的需求,单核将共享内存消息块存储在内存空间中或从内存空间中取出,以实现数据的读写。

作为本发明再进一步的方案:步骤S1的具体步骤如下:

S11、根据设定信息交互协议定义共享内存ID;

S12、获取共享内存信息块的数据长度;

S13、确定共享内存的类别;

S14、根据共享内存的类别确定共享消息的内容;

S15、分别获取共享内存ID的数据长度、共享内存类别的数据长度,以及共享信息内容的数据长度,并结合共享内存信息块的数据长度计算所有数据长度的总数,接着舍弃总数的高位,并将结果与Oxaa异或,异或结果即为校验的数据长度。

作为本发明再进一步的方案:共享内存的类别分为共享内存块和共享消息两种。

作为本发明再进一步的方案:共享消息的内容包括第一部分和第二部分;

如果共享内存的类别为共享内存块时,则第一部分为该共享内存块的起始地址;如果共享内存的类别为共享消息时,则第一部分为该共享消息的数据长度;

如果共享内存的类别为共享内存块时,则第二部分为该共享内存块的数据长度;如果共享内存的类别为共享消息时,则第二部分为该共享消息的消息内容。

作为本发明再进一步的方案:步骤S2的具体步骤如下:使用多核操作系统中的分配的配置文件中的shmget函数划分出一个用于存储共享内存消息块的内存空间。

作为本发明再进一步的方案:需求的类型分为共享内存块需求和共享消息需求。

作为本发明再进一步的方案:共享内存块需求过程如下:

首先当单核有共享内存块需求时,共享内存类别为共享内存块,用0xAAAAAAAA表示;多个单核之间共享起始地址为0x200000且数据长度为0x10000的共享消息,并根据设定信息交互协议定义共享内存ID为0x9001;共享内存块的数据长度为0x10014;构建的共享内存消息块为:{0x9001,0x10014,0xAAAAAAAA,0x2000000,0x10000,校验};

接着单核通过接口软件访问共享内存信息块,更新共享内存信息块;

最后后续的单核在轮询时,发现之前的单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。

作为本发明再进一步的方案:共享消息需求过程如下:

首先当单核有共享消息需求时,共享内存类别为共享消息,用0x55555555表示;多个单核之间共享消息内容为0x00055555且数据长度为0x4的共享消息,并根据设定信息交互协议定义共享内存ID为0x1002;共享内存块的数据长度为0x10018;构建的共享内存消息块为:{0x1002,0x10018,0xAAAAAAAA,0x4,0x00055555,校验};

接着单核通过接口软件访问共享内存信息块,更新共享内存信息块;

最后后续的单核在轮询时,发现之前的单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。

与现有技术相比,本发明的有益效果是:

1、本发明对于代码的移植和维护以及协议的维护和更改极为便利.把代码移植到不同的多核系统,尽管硬件平台不同,多核之间进行交互的软件代码可以不经过修改,只需修改配置文件,给共享内存信息块分配一块内存即可,节省了人力成本。

附图说明

图1为本发明中的共享内存信息块结构示意图。

图2为本发明中的三核系统信息交互示意结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1到图2,本发明实施例中,约定一块内存空间对每个单核都可见,设计出如表1所示的共享内存信息块。建立内存共享接口软件对该共享内存信息块进行写入和读取,并把该文件共享到每个单核的工程中去。在设计时,消息内容不宜过大,如果要分享的消息内容过大,那么定协议的时候设计成共享内存传递起始地址和数据长度比较合适。

表1共享内存信息块

如图2所示,一个三核系统信息交互示意图。首先当单核1有共享内存块需求时,共享内存类别为共享内存块,用0xAAAAAAAA表示;单核1和单核2之间共享起始地址为0x200000且数据长度为0x10000的共享消息,并根据设定信息交互协议定义共享内存ID为0x9001;共享内存块的数据长度为0x10014;构建的共享内存消息块为:{0x9001,0x10014,0xAAAAAAAA,0x2000000,0x10000,校验};

接着单核1通过接口软件访问共享内存信息块,更新共享内存信息块;

最后单核2在轮询时,发现单核1有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。

首先当单核1有共享消息需求时,共享内存类别为共享消息,用0x55555555表示;单核1和单核2之间共享消息内容为0x00055555且数据长度为0x4的共享消息,并根据设定信息交互协议定义共享内存ID为0x1002;共享内存块的数据长度为0x10018;构建的共享内存消息块为:{0x1002,0x10018,0xAAAAAAAA,0x4,0x00055555,校验}。

接着单核1通过接口软件访问共享内存信息块,更新共享内存信息块;

最后单核2在轮询时,发现单核有共享内存块的需求,然后通过接口取出共享内存信息块中的内容,并根据共享内存信息块提供的起始地址0x2000000,取出需要的数据长度为0x10000共享消息进入到后续的处理步骤中。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

相关技术
  • 一种基于多核系统的打印驱动方法、多核系统及终端设备
  • 一种面向CPU-FPGA异构多核系统的数据分配方法
  • 一种计算节点内存共享系统及读、写操作内存共享方法
  • 一种全局内存共享方法、装置和一种通信系统
技术分类

06120116480010