一种多核核间实时通信系统及方法与流程

文档序号:31858962发布日期:2022-10-19 04:02阅读:691来源:国知局
一种多核核间实时通信系统及方法与流程

1.本发明属于嵌入式计算机技术领域,具体为一种多核核间实时通信系统及方法。


背景技术:

2.随着各个领域对计算速度和计算规模要求的不断提高,传统单核处理器已经很难适应大规模的并行运算。为了扩展处理器性能,多核处理器应运而生。多核处理器以其优越的处理器架构将任务分配到多个计算机内核,通过充分利用处理器资源,很大程度上提高了处理器的性能。然而随着嵌入式领域应用对实时性、并行性需求的日益增长,其内核的延时特性无法保证系统整体的实时性能,因此亟待研究嵌入式多核系统的实时性问题。
3.现阶段,嵌入式多核处理器系统利用多核特性让不同核心运行不同的操作系统,进而解决并行性、实时性等特异性整合需求。其中,公知的多核核间通信方式主要有两种:
4.第一种采用虚拟化技术,即在硬件平台和操作系统之间增加一个独立的软件层,以统一管理cpu、内存以及中断等资源,同时抽象出虚拟的硬件资源和标准的访问接口,为运行在该软件层的操作系统及其应用提供虚拟运行环境,使其以虚拟机的形式与其他系统进行跨核通信。在实际应用中,核间数据交互需通过中间的虚拟机进行处理,这将造成系统的实时性降低;同时,创建虚拟机需要额外的硬件资源提供支持,从而增加了系统资源的开销。
5.第二种采用基于amp架构的共享内存机制,即静态配置共享内存的位置及通信消息的长度,将共享内存划分为同步消息缓冲区和异步消息队列,操作系统之间通过读写共享内存并触发核间中断以完成核间通信。虽然此方案能保障通信的实时响应,但通信消息长度被限制,灵活性较差;另外,不同的传输信息需要不同的驱动程序和应用程序来实现,没有统一的传输框架支持,实现步骤较为繁琐。


技术实现要素:

6.为克服上述多核核间通信方案的不足,本发明提供一种多核核间实时通信系统及方法,为不同的传输消息提供统一的传输框架,并为多核处理器间高效协同工作提供驱动服务,进而满足系统的并行性和实时性需求。
7.为实现上述目的,本发明首先提供了一种多核核间实时通信系统,其关键在于,包括硬件层、驱动层和通信层;
8.所述硬件层中设置有主核系统、裸机系统和共享内存模块,其中:所述主核系统用于执行非实时任务,所述裸机系统用于处理实时计算任务,所述共享内存模块用于划分内存空间;
9.所述驱动层中设置有驱动管理模块,用于加载rpmsg驱动程序、注册驱动设备和创建驱动组件;
10.所述通信层中设置有消息发送模块、消息接收模块和rpmsg通道,其中:所述消息发送模块用于将消息写入共享内存区,并向目标处理器发送软件中断信号,从而实现消息
的发送;所述消息接收模块用于检测软件中断信号,当检测到软件中断信号后,进入中断处理函数以读取共享内存区中的数据,并清除中断标志位,从而完成消息接收,实现核间通信;所述rpmsg通道用于建立核间的逻辑连接,提供核间数据传输服务。
11.可选地,所述主核系统中包括运行操作系统的多个处理器,执行的非实时任务包括通信处理、复杂计算和人机交互;所述裸机系统中包括运行裸机程序的至少一个处理器,处理的实时计算任务包括测量、采集和控制。
12.可选地,所述共享内存模块将内存区划分为操作系统独占内存区、共享内存区和裸核独占区三部分。
13.可选地,所述驱动管理模块包括rpmsg驱动加载单元、驱动设备注册单元和驱动组件创建单元,所述rpmsg驱动加载单元与所述驱动设备注册单元连接,所述驱动设备注册单元与所述驱动组件创建单元连接,其中:
14.所述rpmsg驱动加载单元,用于加载基于rpmsg协议的驱动程序,并通过操纵rpmsg驱动,实现数据的收发操作,完成系统的核间交互;
15.所述驱动设备注册单元,用于注册虚拟化驱动设备,管理核间数据交互的共享内存,并为rpmsg驱动程序提供存储服务;
16.所述驱动组件创建单元,用于创建rpmsg通道和rpmsg端点,通道由文本名称和本地或目标地址标识,为核间处理器提供传输服务,端点在通道之上提供逻辑连接,且每个端点都有一个唯一的源地址和相关的回调函数。
17.可选地,所述消息发送模块包括数据写入单元和中断触发单元;所述数据写入单元与所述中断触发单元连接,所述中断触发单元与所述rpmsg通道连接;
18.所述数据写入单元,用于按照rpmsg消息格式填充rpmsg头部信息和有效载荷数据,并将rpmsg消息写入共享缓冲区中;
19.所述中断触发单元,用于向中断控制器发送软件中断信号,通知目标处理器接收消息。
20.可选地,所述消息接收模块包括中断检测单元和数据读取单元,所述中断检测单元与所述rpmsg通道和所述数据读取单元连接;
21.所述中断检测单元,用于检测当前处理器是否有中断发生,如有则进入中断服务函数,对中断进行处理,反之则继续检测;
22.所述数据读取单元,用于从共享缓冲区中读取数据,并释放内存,同时向发送端发送反馈以完成通信。
23.可选地,在所述硬件层和所述驱动层之间设置有硬件抽象接口,在所述驱动层和所述通信层之间设置有驱动调用接口,其中:
24.所述硬件抽象接口,用于隐藏所述硬件层的硬件接口细节,为所述驱动层提供虚拟硬件平台;
25.所述驱动调用接口,是由所述驱动层为所述通信层提供的一组系统调用函数,用于系统对rpmsg设备进行访问和控制。
26.另一方面,本发明还提供一种多核核间实时通信方法,采用前文所述的多核核间实时通信系统,其关键在于,包括以下步骤:
27.s1:所述硬件层对多个处理器进行管理和分类,并根据处理器上搭建操作系统的
情况来划分内存空间,同时使用共享内存的方式实现对共享资源的访问,并为所述驱动层提供硬件支撑;
28.s2:所述驱动层对rpmsg驱动程序进行加载和管理,并注册驱动设备以管理核间数据交互的共享内存,同时创建驱动组件以建立核间逻辑连接,并为所述通信层提供数据传输服务;
29.s3:所述通信层采用基于rpmsg通道的方式进行核间通信,实现消息的发送、消息的接收以及消息的反馈。
30.可选地,处理器使用rpmsg驱动程序提供的函数接口与rpmsg通道进行通信,同时rpmsg端点在rpmsg通道之上提供处理器间的逻辑连接,当处理器接收到数据时,rpmsg在附加rpmsg头后将其复制到内部存储器,然后搜索对应的虚拟化设备并将消息指针放在共享内存中,最后通知远程处理器以完成核间消息交互。
31.可选地,当主核系统作为发送端,裸核系统作为接收端时,主核系统首先申请used环形缓冲区中的一段内存,并将rpmsg头部信息和有效载荷数据填充到内存中,再将used缓冲区中的内存链接到avail缓冲区中,然后触发裸核系统核间中断,通知裸核系统进行数据接收,此时消息由rpmsg通道从主核系统逻辑传输到裸核系统;接着,裸核系统从avail缓冲区中读取数据,并释放对应内存到used环形缓冲区中,同时向主核系统发送反馈信号并触发核间中断,通知主核系统消息已成功接收,进而完成主裸核核间通信。
32.本发明的显著效果是:
33.本发明提供一种多核核间实时通信系统及方法,首先通过所述硬件层根据各处理器使用的操作系统类型进行分类,通常划分为主核系统和裸核系统,并根据主核和裸核的资源使用情况划分内存空间,同时采用共享内存的方式实现对共享资源的访问,并通过所述硬件抽象接口隐藏所述硬件层的硬件细节,为所述驱动层提供虚拟硬件平台;接着,所述驱动层在所述硬件层提供的硬件平台上,对rpmsg驱动程序进行加载和管理,并注册虚拟化驱动设备以管理核间信息交互的共享内存,同时创建rpmsg通道和rpmsg端点以建立核间逻辑连接,并通过所述驱动调用接口为所述通信层提供数据传输服务;最后,所述通信层利用所述驱动层提供的系统调用接口来实现消息的发送和接收,具体地,发送端将信息存入共享内存中的对应部分,并触发核间中断,由接收端响应核间中断,从共享内存拷贝出消息,同时释放内存并向发送端发送反馈以完成核间通信,采用基于rpmsg通道的核间通信技术,为解决多处理器并行运行及协同调度提供了一种解决方案,可实现多核核间实时调度。
附图说明
34.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
35.图1是本发明实施例1提供的一种多核核间实时通信架构结构示意图。
36.图2是本发明提供的共享内存模块的结构示意图。
37.图3是本发明提供的多核核间实时通信系统的rpmsg驱动程序结构框图。
38.图4是本发明提供的多核核间实时通信系统的核间通信示意图;
39.图5图是本发明实施例2提供的一种多核核间实时通信系统结构示意图。
40.附图标记:1-硬件层、2-驱动层、3-通信层、4-主核系统、5-裸核系统、6-共享内存模块、7-驱动管理模块、8-rpmsg驱动加载单元、9-驱动设备注册单元、10-驱动组件创建单元、11-消息发送模块、12-消息接收模块、13-rpmsg通道、14-数据写入单元、15-中断触发单元、16-中断检测单元、17-数据读取单元、18-硬件抽象接口、19-驱动调用接口。
具体实施方式
41.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
42.在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
43.实施例1:
44.请参阅图1,本发明提供一种多核核间实时通信系统,包括硬件层1、驱动层2和通信层3,所述硬件层1、所述边驱动层2和所述通信层3自下而上排列;
45.所述硬件层1,用于对多个处理器进行管理和分类,并根据处理器上搭建操作系统的情况来划分内存空间,同时使用共享内存的方式实现对共享资源的访问,并为所述驱动层2提供硬件支撑;
46.所述驱动层2,用于对rpmsg驱动程序进行加载和管理,并注册驱动设备以管理核间数据交互的共享内存,同时创建驱动组件以建立核间逻辑连接,并为所述通信层3提供数据传输服务;其中,rpmsg驱动模块是一种基于多核的消息传递机制,底层采用虚拟化设备进行数据交换,并且需要由remoteproc驱动来分配资源;在rpmsg驱动完成加载后,会进入对应的probe()函数以完成设备注册和组件创建。具体地,该驱动首先注册虚拟化驱动设备以管理核间数据交互的共享内存,再在dev目录下建立一个rpmsg通道控制设备文件,提供rpmsg端节点创建接口函数;当rpmsg端节点被创建时,该驱动会在dev目录下创建端节点设备文件,根据创建节点个数,设置rpmsg端节点文件名称,并且用户可以通过获取rpmsg端节点设备描述符进行rpmsg通道数据传输。
47.所述通信层3,用于消息发送和消息接收,具体地,发送端将数据写入共享内存中,并根据目标处理器的中断接口进行软件中断触发,再建立rpmsg通道以实现与接收端的逻辑连接;接收端利用中断控制器检测中断信号,并执行中断服务程序以读取共享内存中的数据,同时释放内存,并向发送端发送反馈,最终实现核间信息交互。
48.通过图1可以看出,所述硬件层1中设置有主核系统4、裸机系统5和共享内存模块6,所述主核系统4与所述共享内存模块6连接,所述共享内存模块6与所述裸机系统5连接;
49.所述主核系统4,由运行操作系统的cpu0、cpui等多个处理器组成,用于执行通信处理、复杂计算和人机交互等非实时任务;
50.所述裸机系统5,由运行裸机程序的cpui+1、cpun等多个处理器组成,用于测量、采集和控制等实时计算任务;
51.所述共享内存模块6,用于划分内存空间,将内存区划分为操作系统独占内存区、共享内存区和裸核独占区三部分。
52.通过所述硬件层1对多个处理器进行管理和分类,并根据处理器上搭建操作系统
的情况来划分内存空间,同时使用共享内存的方式实现对共享资源的访问,并为所述驱动层2提供硬件支撑。在本实施例中,硬件层1采用itop-i.mx6q开发板,其拥有32位精简指令集、低功耗、性能优异的cortex-a9四核微处理器,可实现多处理器的并行计算和协同调度。结合图2可以看出,在通用四核a9同构处理器的基础上,引入非对称概念,将运行linux操作系统的cpu0、cpu1和cpu2三核处理器称为主核系统,并用于执行通信、人机接口等复杂计算任务,具有高性能、低功耗、可扩展等特点,可有效提高系统的稳定性和可靠性;同时将运行裸机程序的cpu3处理器称为裸核系统,用于执行采集等高实时计算任务,可有效提高系统的并行性和实时性。由于主裸核所使用的操作系统通信交互接口存在差异,且其私有cache、中断管理等硬件资源不共享,导致主裸核核间通信困难,难以高效协同调度。为此,所述共享内存模块6将内存区划分为linux独占内存区、共享内存区和裸核独占区三部分,以共享内存的方式实现主裸核核间信息交互,从图2还可以看出,ddr内存分为cpu0-cpu2独占区、共享内存区以及裸核cpu3独占区三个部分,其中,共享内存区是主核写入信息,裸核读取信息或者裸核写入信息,主核读取信息的信息交互区。
53.进一步地,通过图1可以看出,所述驱动层2包括驱动管理模块7,所述驱动管理模块7用于加载rpmsg驱动程序、创建驱动组件和注册驱动设备。
54.在本实施方式中,所述驱动管理模块7是核间通信系统的核心,为所述硬件层1和所述通信层3提供交互桥梁。具体地,所述驱动管理模块7首先加载位于drivers/rpmsg/下的rpmsg驱动程序,并提供相应的用户空间接口,允许内核驱动程序与系统上可用的远程处理器进行通信,再注册虚拟化驱动设备以管理核间共享内存区,并创建rpmsg通道和端点以建立核间逻辑连接,从而为数据的收发操作提供驱动平台。
55.本系统的rpmsg驱动程序结构框图如图3所示,处理器使用rpmsg驱动程序提供的函数接口与rpmsg通道进行通信,同时rpmsg端点在rpmsg通道之上提供处理器间的逻辑连接,当处理器接收到数据时,rpmsg在附加rpmsg头后将其复制到内部存储器,然后搜索对应的虚拟化设备并将消息指针放在共享内存中,最后通知远程处理器以完成核间消息交互。总的来说,所述驱动管理模块7包含驱动模块、驱动组件和驱动设备三大驱动单元,为主裸核核间高效通信提供驱动服务。
56.进一步的,所述驱动管理模块7包括rpmsg驱动加载单元8、驱动设备注册单元9和驱动组件创建单元10,所述rpmsg驱动加载单元8与所述驱动设备注册单元9连接,所述驱动设备注册单元9与所述驱动组件创建单元10连接;
57.所述rpmsg驱动加载单元8,用于加载基于rpmsg协议的驱动程序,并通过操纵rpmsg驱动,实现数据的收发操作,完成系统的核间交互;
58.所述驱动设备注册单元9,用于注册虚拟化驱动设备,管理核间数据交互的共享内存,并为rpmsg驱动程序提供存储服务;
59.所述驱动组件创建单元10,用于创建rpmsg通道和rpmsg端点,通道由文本名称和本地或目标地址标识,为核间处理器提供传输服务,端点在通道之上提供逻辑连接,且每个端点都有一个唯一的源地址和相关的回调函数。
60.具体实施时,所述rpmsg驱动加载单元8加载基于rpmsg总线的驱动模块,使得所有数据均在rpmsg总线上传递,进而为实现核间数据交互提供通信服务。接着,所述驱动设备注册单元9用于注册虚拟化驱动设备,并提供一个“virtqueue”的接口函数,允许用户驱动
与使用virtqueue的通信对应方发送和接收数据,同时管理核间数据交互的共享内存,并为rpmsg驱动程序提供存储服务。然后,所述驱动组件创建单元10创建rpmsg通道和prmsg端点,rpmsg端点在rpmsg通道之上提供核间逻辑连接,默认端点在初始化期间创建,且将会绑定到处理器提供的回调函数上,进而为核间数据交互提供传输服务。
61.进一步地,所述通信层3包括消息发送模块11、消息接收模块12和rpmsg通道13;所述消息发送模块11与所述rpmsg通道13连接,所述rpmsg通道13与所述消息接收模块12连接;
62.所述消息发送模块11,用于将消息写入共享内存区,并向目标处理器发送方sgi软件中断信号,从而实现消息的发送;
63.所述消息接收模块12,用于检测软件中断信号,检测到中断信号后,将进入中断处理函数以读取共享内存区中的数据,并清除中断标志位,从而完成消息接收,实现核间通信;
64.所述rpmsg通道13,用于建立核间的逻辑连接,提供核间数据传输服务。
65.具体实施时,所述消息发送模块11调用rpmsg驱动程序,将数据写入虚拟化设备管理的共享环形缓冲区中,并触发目标处理器核间中断;所述rpmsg通道13建立发送端和接收端的逻辑连接,为数据传输提供通信通道;所述消息接收模块12检测核间中断信号并响应中断,然后从缓冲区中拷贝出消息,同时释放内存并向发送端发送反馈,进而实现核间信息交互。本系统的核间通信示意图如图4图所示,当主核作为发送端,裸核作为接收端时,主核首先申请used环形缓冲区中的一段内存,并将rpmsg头部信息和有效载荷数据填充到内存中,再将used缓冲区中的内存链接到avail缓冲区中,然后触发裸核核间中断,通知裸核进行数据接收,此时消息由rpmsg通道从主核逻辑传输到裸核;接着,裸核从avail缓冲区中读取数据,并释放对应内存到used环形缓冲区中,同时向主核发送反馈信号并触发核间中断,通知主核消息已成功接收,进而完成主裸核核间通信。
66.进一步的,所述消息发送模块11包括数据写入单元14和中断触发单元15;所述数据写入单元14与所述中断触发单元15连接,所述中断触发单元15与rpmsg通道13连接;
67.所述数据写入单元14,用于按照rpmsg消息格式填充rpmsg头部信息和有效载荷数据,并将rpmsg消息写入共享缓冲区中;
68.所述中断触发单元15,用于向中断控制器发送软件中断信号,通知目标处理器接收消息。
69.具体实施时,所述数据写入单元14首先向虚拟化设备申请used缓冲区中的一段内存,并按照rpmsg消息格式填充rpmsg头部信息和有效载荷数据,同时将rpmsg消息写入申请的内存中,然后将其链接到虚拟化设备的avail缓冲区;所述中断触发单元15在数据写入完成后,根据目标处理器的中断接口向中断控制器发送软件中断信号,进而通知目标处理器进行消息接收。
70.进一步地,所述消息接收模块12包括中断检测单元16和数据读取单元17,所述中断检测单元16与所述rpmsg通道13和所述数据读取单元17连接;
71.所述中断检测单元16,用于检测当前处理器是否有中断发生,如有则进入中断服务函数,对中断进行处理,反之则继续检测;
72.所述数据读取单元17,用于从共享缓冲区中读取数据,并释放内存,同时向发送端
发送反馈以完成通信。
73.具体实施时,所述中断检测单元16实时检测当前处理器的中断信号,若有中断发生则立即进行中断响应,并清除该中断的中断标志位,同时等待下一次中断产生;所述数据读取单元17则在检测到中断信号后进行数据读取,处理器首先从虚拟化设备的avail缓冲区中读取数据,再将虚拟化设备的avail缓冲区加入到used中,同时向发送端发送反馈信号,最终实现核间数据收发。
74.实施例2:
75.通过图5可以看出,本实施例提供一种多核核间实时通信系统,与实施例1的区别在于,在所述硬件层1和所述驱动层2之间设置有硬件抽象接口18,在所述驱动层2和所述通信层3之间设置有驱动调用接口19,其中:
76.所述硬件抽象接口18,用于隐藏所述硬件层1的硬件接口细节,为所述驱动层2提供虚拟硬件平台。
77.所述驱动调用接口19,是由所述驱动层2为所述通信层3提供的一组系统调用函数,用于系统对rpmsg设备进行访问和控制。
78.具体实施时,所述硬件层1主要负责多个处理器的管理和分类,并对根据分类结果划分相应的内存空间,同时采用共享内存的方式实现各处理器对共享资源的访问,再将所有的硬件接口细节通过所述硬件抽象接口18进行隐藏,并为所述驱动层2提供硬件支撑。所述驱动层2在所述硬件层1提供的虚拟硬件平台上,对rpmsg驱动程序进行加载和管理,并注册驱动设备以提供数据存储服务,创建驱动组件以提供数据传输服务,再通过所述驱动调用接口19为所述通信层3提供驱动服务。所述通信层3通过调用驱动接口函数来操纵rpmsg驱动模块,实现数据的收发操作,并通过rpmsg通道建立核间逻辑链接,最终完成主裸核核间通信。
79.可以看出,本实施例提供的一种多核核间实时通信系统,首先通过所述硬件层1根据各处理器使用的操作系统类型进行分类,通常划分为主核系统和裸核系统,并根据主核和裸核的资源使用情况划分内存空间,同时采用共享内存的方式实现对共享资源的访问,并通过所述硬件抽象接口18隐藏所述硬件层1的硬件细节,为所述驱动层2提供虚拟硬件平台;接着,所述驱动层2在所述硬件层1提供的硬件平台上,对rpmsg驱动程序进行加载和管理,并注册驱动设备以管理核间信息交互的共享内存,同时创建rpmsg通道和rpmsg端点以建立核间逻辑连接,并通过所述驱动调用接口19为所述通信层3提供数据传输服务;最后,所述通信层3利用所述驱动层2提供的系统调用接口来实现消息的发送和接收,具体地,发送端将信息存入共享内存中的对应部分,并触发核间中断,由接收端响应核间中断,从共享内存拷贝出消息,同时释放内存并向发送端发送反馈以完成核间通信,采用基于rpmsg通道的核间通信技术,为解决多处理器并行运行及协同调度提供了一种解决方案,可实现多核核间实时调度。
80.结合上述系统,本实施例还提供一种多核核间实时通信方法,包括以下步骤:
81.s1:所述硬件层对多个处理器进行管理和分类,并根据处理器上搭建操作系统的情况来划分内存空间,同时使用共享内存的方式实现对共享资源的访问,并为所述驱动层提供硬件支撑;
82.s2:所述驱动层对rpmsg驱动程序进行加载和管理,并注册驱动设备以管理核间数
据交互的共享内存,同时创建驱动组件以建立核间逻辑连接,并为所述通信层提供数据传输服务;
83.s3:所述通信层采用基于rpmsg通道的方式进行核间通信,实现消息的发送、消息的接收以及消息的反馈。
84.具体实施时,处理器使用rpmsg驱动程序提供的函数接口与rpmsg通道进行通信,同时rpmsg端点在rpmsg通道之上提供处理器间的逻辑连接,当处理器接收到数据时,rpmsg在附加rpmsg头后将其复制到内部存储器,然后搜索对应的虚拟化设备并将消息指针放在共享内存中,最后通知远程处理器以完成核间消息交互。
85.综上可以看出,本发明采用基于rpmsg通道的核间通信技术,为解决多处理器并行运行及协同调度提供了一种解决方案,可实现多核核间实时调度。
86.以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1