一种任务执行方法及基于多核处理器的控制器转让专利

申请号 : CN201710828289.X

文献号 : CN107577185B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张国亮管林波刘力上吴光号

申请人 : 浙江国自机器人技术有限公司

摘要 :

本申请公开了一种任务执行方法,应用于基于多核处理器的控制器,控制器包括多核处理器;其中,多核处理器包括主核心和处理核心,主核心安装实时操作系统,处理核心安装非实时操作系统;主核心执行高实时性的中断事件或任务;处理核心执行低实时性的中断事件或任务;当主核心执行运算任务时,主核心通过共享内存模块与处理核心进行数据交互处理;其中,运算任务为需要计算处理的中断事件或任务。主核心通过共享内存与处理核心进行数据通信,可以使复杂任务需要不同实时性处理的任务以较快的速度进行数据交互。本申请还公开了一种控制器,具有上述有益效果,在此不再赘述。

权利要求 :

1.一种任务执行方法,应用于基于多核处理器的控制器,其特征在于,所述控制器包括多核处理器;其中,所述多核处理器包括主核心和处理核心,所述主核心安装实时操作系统,所述处理核心安装非实时操作系统;所述方法包括:所述主核心执行高实时性的中断事件或任务;

所述处理核心执行低实时性的中断事件或任务;

当所述主核心执行运算任务时,所述主核心通过共享内存模块与所述处理核心进行数据交互处理;其中,所述运算任务为需要计算处理的所述中断事件或所述任务;

其中,所述主核心通过共享内存模块与所述处理核心进行数据交互处理,包括:所述主核心执行所述运算任务得到待处理数据并将所述待处理数据写入共享内存模块中,同时暂停所述运算任务,以使所述处理核心根据所述待处理数据进行所述计算处理;

当所述主核心检测到所述共享内存模块中所述处理核心写入的结果数据时暂停当前执行的任务,并根据所述结果数据继续执行所述运算任务;其中,所述当前执行的任务为暂停所述运算任务后按优先级执行的所述任务。

2.根据权利要求1所述的方法,其特征在于,所述处理核心根据所述待处理数据进行所述计算处理,包括:所述处理核心检测到所述共享内存模块中的所述待处理数据时,判断当前是否存在处理核心任务;如果不存在,则根据所述待处理数据进行所述计算处理;

如果存在,则判断所述计算处理的优先级是否高于所述处理核心任务的优先级;如果是,则根据所述待处理数据执行所述计算处理。

3.根据权利要求1所述的方法,其特征在于,所述当所述主核心检测到所述共享内存模块中所述处理核心写入的所述结果数据时暂停当前执行的任务,并根据所述结果数据继续执行所述运算任务,包括:所述主核心所执行的背景任务检测到所述共享内存模块中所述处理核心写入的所述结果数据,向所述主核心发送提示;

检测到所述提示暂停所述当前执行的任务;

根据所述结果数据继续执行所述运算任务。

4.根据权利要求1所述的方法,其特征在于,所述当所述主核心检测到所述共享内存模块中所述处理核心写入的所述结果数据时暂停当前执行的任务,并根据所述结果数据继续执行所述运算任务,包括:所述主核心所执行的中断程序检测到所述共享内存模块中所述处理核心写入的所述结果数据时,所述中断程序暂停所述当前执行的任务;

所述中断程序结束所述运算任务的暂停状态,所述运算任务根据所述结果数据继续运行。

5.一种基于多核处理器的控制器,其特征在于,所述控制器包括:多核处理器、内存模块;

其中,所述多核处理器包括主核心和处理核心,所述主核心安装实时操作系统,所述处理核心安装非实时操作系统;

所述内存模块包括主核心内存模块、处理核心内存模块以及共享内存模块;其中,所述共享内存模块用于所述实时操作系统与所述非实时操作系统之间的数据交互;

所述控制器包括,接口模块;其中,所述接口模块按照接口对应的中断事件或任务的实时性高低分为高实时性接口模块和低实时性接口模块;所述主核心连接所述高实时性接口模块,所述处理核心连接所述低实时性接口模块;

所述主核心用于通过所述高实时性接口模块处理高实时性的所述中断事件或所述任务;所述主核心按照所述中断事件或所述任务的优先级执行所述中断事件或所述任务;当高实时性的所述中断事件或所述任务需要进行计算处理时,将待处理数据写入所述共享内存模块;当检测到结果数据写入所述共享内存模块时,读取结果数据。

6.根据权利要求5所述的控制器,其特征在于,所述处理核心用于通过所述低实时性接口模块处理低实时性的所述中断事件或所述任务;所述处理核心按照所述中断事件或所述任务的优先级执行所述中断事件或所述任务;当所述主核心将所述待处理数据写入所述共享内存模块时,将所述待处理数据进行计算处理得到所述结果数据,并将所述结果数据写入所述共享内存模块。

7.根据权利要求5至6任一项所述的控制器,其特征在于,所述实时操作系统具体为RTOS系统,所述非实时操作系统具体为Linux系统。

说明书 :

一种任务执行方法及基于多核处理器的控制器

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及一种基于多核处理器的控制器及方法。

背景技术

[0002] 随着科技发展,机器的形态也在发生的改变,工程师的注意力从如何让机器固定运行转移至如何让机器可以实时处理问题,并按照处理结果运行。有了初步的思考形态,也就具备了人的某些特征,因此可以进行“思考”的机器被称作机器人。随着电子技术的发展,机器人的处理速度越来越快,从处理简单的问题到可以处理复杂的问题,机器人的使用越来越广泛。机器人的应用领域不断扩大,对机器人的性能和执行效率都有了不同要求。既要强劲性能、开放的API接口,同时也要良好的执行效率,能够在指定时间内完成特定任务。
[0003] 目前市面上机器人的控制器种类的增加,控制器的体积、成本和性能则成为主要核心竞力。为了能够在控制体积和成本的同时实现高性能,一般控制器采用单核CPU架构,运行RTOS系统,可以达到很高的实时性和可靠性。但是RTOS系统的限制,只能在该系统上开发一些简单的应用,难以处理例如,使用OpenCV和OpenGL等图像识别和视觉树立的高级应用、复杂应用,使得应用场景受到了极大的限制。
[0004] 另一种方案是在控制器中使用了Linux系统的单核或多核处理器,在该处理器上实现机器人控制和处理。但是Linux系统是一种软实时性系统,即使打上实时补丁,仍然满足不了一些低延迟高确定性的应用场景。
[0005] 上述方案在面对不同实时性的任务时都无法较好的满足要求,因此对于本领域技术人员,如何使机器人更好的处理不同实时性任务是至关重要的。

发明内容

[0006] 本申请的目的是提供一种基于多核处理器的控制器及方法,通过在多核处理器中按照安装实时操作系统和非实时操作系统分配主核心和处理核心,分别处理不同实时性的任务,以满足不同实时性任务的执行要求,同时主核心可以通过共享内存与处理核心进行数据通信,可以使复杂任务需要不同实时性处理的任务以较快的速度进行数据交互。
[0007] 为解决上述技术问题,本申请提供一种任务执行方法,应用于基于多核处理器的控制器,所述控制器包括多核处理器;其中,所述多核处理器包括主核心和处理核心,所述主核心安装实时操作系统,所述处理核心安装非实时操作系统;所述方法包括:
[0008] 所述主核心执行所述高实时性的所述中断事件或所述任务;
[0009] 所述处理核心执行所述低实时性的所述中断事件或所述任务;
[0010] 当所述主核心执行运算任务时,所述主核心通过所述共享内存模块与所述处理核心进行数据交互处理;其中,所述运算任务为需要计算处理的所述中断事件或所述任务。
[0011] 可选的,所述主核心通过共享内存模块与所述处理核心进行数据交互处理,包括:
[0012] 所述主核心执行所述运算任务得到所述待处理数据并将所述待处理数据写入共享内存模块中,同时暂停所述运算任务,以使所述处理核心根据所述待处理数据进行所述计算处理;
[0013] 当所述主核心检测到所述共享内存模块中所述处理核心写入的所述结果数据时暂停当前执行的任务,并根据所述结果数据继续执行所述运算任务;其中,所述当前执行的任务为暂停所述运算任务后按优先级执行的所述任务。
[0014] 可选的,所述处理核心根据所述待处理数据进行所述计算处理,包括:
[0015] 所述处理核心检测到所述共享内存模块中的所述待处理数据时,判断当前是否存在处理核心任务;如果不存在,则根据所述待处理数据进行所述计算处理;
[0016] 如果存在,则判断所述计算处理的优先级是否高于所述处理核心任务的优先级;如果是,则根据所述待处理数据执行所述计算处理。
[0017] 可选的,所述当所述主核心检测到所述共享内存模块中所述处理核心写入的所述结果数据时暂停当前执行的任务,并根据所述结果数据继续执行所述运算任务,包括:
[0018] 所述主核心所执行的背景任务检测到所述共享内存模块中所述处理核心写入的所述结果数据,向所述主核心发送提示;
[0019] 检测到所述提示暂停所述当前执行的任务;
[0020] 根据所述结果数据继续执行所述运算任务。
[0021] 可选的,所述当所述主核心检测到所述共享内存模块中所述处理核心写入的所述结果数据时暂停当前执行的任务,并根据所述结果数据继续执行所述运算任务,包括:
[0022] 所述主核心所执行的中断程序检测到所述共享内存模块中所述处理核心写入的所述结果数据时,所述中断程序暂停所述当前执行的任务;
[0023] 所述中断程序结束所述运算任务的暂停状态,所述运算任务根据所述结果数据继续运行。
[0024] 本申请还提供一种基于多核处理器的控制器,所述控制器包括:多核处理器、内存模块;
[0025] 其中,所述多核处理器包括主核心和处理核心,所述主核心安装实时操作系统,所述处理核心安装非实时操作系统;
[0026] 所述内存模块包括主核心内存模块、处理核心内存模块以及共享内存模块;其中,所述共享内存模块用于所述实时操作系统与所述非实时操作系统之间的数据交互。
[0027] 可选的,所述控制器包括,接口模块;其中,所述接口模块按照接口对应的中断事件或任务的实时性高低分为高实时性接口模块和低实时性接口模块;所述主核心连接所述高实时性接口模块,所述处理核心连接所述低实时性接口模块。
[0028] 可选的,所述主核心用于通过所述高实时性接口模块处理高实时性的所述中断事件或所述任务;所述主核心按照所述中断事件或所述任务的优先级执行所述中断事件或所述任务;当高实时性的所述中断事件或所述任务需要进行计算处理时,将待处理数据写入所述共享内存模块;当检测到结果数据写入所述共享内存模块时,读取结果数据。
[0029] 可选的,所述处理核心用于通过所述低实时性接口模块处理低实时性的所述中断事件或所述任务;所述处理核心按照所述中断事件或所述任务的优先级执行所述中断事件或所述任务;当所述主核心将所述待处理数据写入所述共享内存模块时,将所述待处理数据进行计算处理得到所述结果数据,并将所述结果数据写入所述共享内存模块。
[0030] 可选的,所述实时操作系统具体为RTOS系统,所述非实时操作系统具体为Linux系统。
[0031] 本申请所提供的一种任务执行方法,应用于基于多核处理器的控制器,所述控制器包括多核处理器;其中,所述多核处理器包括主核心和处理核心,所述主核心安装实时操作系统,所述处理核心安装非实时操作系统;所述方法包括:所述主核心执行所述高实时性的所述中断事件或所述任务;所述处理核心执行所述低实时性的所述中断事件或所述任务;当所述主核心执行运算任务时,所述主核心通过所述共享内存模块与所述处理核心进行数据交互处理;其中,所述运算任务为需要计算处理的所述中断事件或所述任务。
[0032] 通过在多核处理器中按照安装实时操作系统和非实时操作系统分配主核心和处理核心,分别处理不同实时性的任务,以满足不同实时性任务的执行要求,同时主核心可以通过共享内存与处理核心进行数据通信,可以使复杂任务需要不同实时性处理的任务以较快的速度进行数据交互。本申请还提供一种基于多核处理器的控制器,具有上述有益效果,在此不再做赘述。

附图说明

[0033] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0034] 图1为本申请实施例提供的一种任务执行方法的流程图;
[0035] 图2为本申请实施例提供的一种任务执行方法的数据交互处理的流程图;
[0036] 图3为本申请实施例提供的一种任务执行方法的图像处理工况的流程图;
[0037] 图4为本申请实施例提供的一种基于多核处理器的控制器的结构框图;
[0038] 图5为本申请实施例提供的一种基于多核处理器的控制器的接口模块的结构框图;
[0039] 图6为本申请实施例提供的一种基于多核处理器的控制器的一种硬件电路框图;
[0040] 图7为本申请实施例提供的一种基于多核处理器的控制器的一种任务分配框图。

具体实施方式

[0041] 本申请的核心是提供一种多任务控制方法及装置,通过在多核处理器中按照安装实时操作系统和非实时操作系统分配主核心和处理核心,分别处理不同实时性的任务,以满足不同实时性任务的执行要求,同时主核心可以通过共享内存与处理核心进行数据通信,可以使复杂任务需要不同实时性处理的任务以较快的速度进行数据交互。
[0042] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0043] 请参考图1,图1为本申请实施例提供的一种任务执行方法的流程图。
[0044] 本申请实施例提供一种任务执行方法,应用于基于多核处理器的控制器,控制器包括多核处理器;其中,多核处理器包括主核心和处理核心,主核心安装实时操作系统,处理核心安装非实时操作系统;方法可以包括:
[0045] S101,主核心执行高实时性的中断事件或任务;
[0046] 本步骤旨在,使主核心执行高实时性的中断事件或任务,可以通过中断事件和任务的不同的接口,将任务根据实时性的高低进行分类,同时将代表高实时性的接口接在主核心上。通过主核心处理高实时性任务可以使高实时性的任务实时完成,满足控制器的实际使用需要。
[0047] S102,处理核心执行低实时性的中断事件或任务;
[0048] 本步骤旨在,通过实时性的高低使处理核心处理低实时性的中断事件或任务。为了使控制器可以处理需要计算处理的任务,以满足任务执行的需要。
[0049] S103,当主核心执行运算任务时,主核心通过共享内存模块与处理核心进行数据交互处理;其中,运算任务为需要计算处理的中断事件或任务。
[0050] 在步骤S101和步骤S102的基础上,本步骤旨在当控制器处理到需要主核心和处理核心同时进行处理的任务时,主核心和处理核心分块执行该任务,并通过内存模块完成数据交互。
[0051] 需要强调的是,主核心和处理核心都在一块处理器中,因此在交互时可以处理器的最大速度传输交互处理的数据,加快任务的处理速度,满足了控制器的使用要求。
[0052] 请参考图2,图2为本申请实施例提供的一种任务执行方法的数据交互处理的流程图。
[0053] 结合上一实施例,本实施例主要是针对上一实施例中如何进行数据交互处理做的一个具体解释,其他部分与上一实施例大体相同,相同部分请参考上一实施例,在此不再做赘述。
[0054] 本实施例可以包括:
[0055] S201,主核心执行运算任务得到待处理数据并将待处理数据写入共享内存模块中,同时暂停运算任务,以使处理核心根据待处理数据进行计算处理;
[0056] S202,当主核心检测到共享内存模块中处理核心写入的结果数据时暂停当前执行的任务,并根据结果数据继续执行运算任务;其中,当前执行的任务为暂停运算任务后按优先级执行的任务。
[0057] 在控制器中,必不可少的就是内存模块,其用于存数处理器在处理过程中的数据,以及与其他涉及进行数据交互使用。在本技术方案中,内存模块包括有共享内存模块,其用于主核心和处理核心进行数据交换,可以是多核处理器的内置缓存,也可以时多核处理器外置的RAM,可以根据其控制器的应用需求以及成本跟因素考虑选择共享内存模块,在此不再做限定。
[0058] 其中,由于一个多核处理器中的核心通过共享内存进行数据交换,是直接进行数据交换,不需要通过总线控制器,因而其传输速率不受总线的传输速率限制,可以到达较高的传输速度。而多个CPU之间进行数据交换需要通过总线控制器进行交换,因此当处理的处理速度比较高时,其处理器之间的传输速度也要受总线控制器的速度所限。因此多核处理器中的处理核心之间无论通过什么介质交换数据,都可以保持较高的传输速率,同时可以不通过总线控制器就完成数据交换,可以节约控制器的设计空间。
[0059] 可选的,处理核心根据待处理数据进行计算处理,可以包括:
[0060] 处理核心检测到共享内存模块中的待处理数据时,判断当前是否存在处理核心任务;如果不存在,则根据待处理数据进行计算处理;
[0061] 如果存在,则判断计算处理的优先级是否高于处理核心任务的优先级;如果是,则根据待处理数据执行计算处理。
[0062] 其中,处理核心也有对应的接管的中断事件和任务,因此,主核心调用处理核心是处理核心可能处于运行状态,此时处理核心需要决定如何运行主核心的调用指令。在对多核处理器的划分中,处理核心可能划分有多个核心,因此也可以多线程的执行任务,但如果出现所有线程都占用的情况下,需要判断此时是否需要暂停当前任务,去执行主核心的任务。
[0063] 需要强调的是,在本实施例中通过任务的优先级判断如何调度当前任务和调用任务,这是本领域技术人员常用的处理方法,也可以通过其他方式决定如何调度当前任务和调用任务,例如,在处理核心中设定是主核心的调用任务就直接暂停当前任务,执行主核心的调用任务,保持控制器的高效运转。在此不做限定。
[0064] 可选的,当主核心检测到共享内存模块中处理核心写入的结果数据时暂停当前执行的任务,并根据结果数据继续执行运算任务,可以包括:
[0065] 主核心所执行的背景任务检测到共享内存模块中处理核心写入的结果数据,向主核心发送提示;
[0066] 检测到提示暂停当前执行的任务;
[0067] 根据结果数据继续执行运算任务。
[0068] 其中,在主核心写入处理数据后,主核心执行背景任务,此背景任务可以是优先级较低的一些待机任务,检测接口是否有数据传输。实施例中通过背景任务检测结果数据是否写入共享内存,如果是则向主核心发送提示信号,以使主核心读取结果数据并继续执行运算任务。
[0069] 请参考图3,图3为本申请实施例提供的一种任务执行方法的图像处理工况的流程图。
[0070] 在此为了方便理解,可以有以下示例。
[0071] 在主核心写入处理数据后,执行背景任务,在等待处理核心写入结果数据前,还有电机控制任务需要执行。在本实施例中主核心安装RTOS系统,处理核心安装Linux系统,因此本示例如下:
[0072] 步骤一,RTOS系统开始执行图像任务;
[0073] 步骤二,图像任务将数据写入到共享内存中;
[0074] 步骤三,图像任务将自身挂起,RTOS系统开始调度其它任务;
[0075] 步骤四,Linux监测到共享内存中的数据信息,开始运行图像识别线程;
[0076] 步骤五,优先级较高的电机控制任务抢占了背景任务,得到执行;
[0077] 步骤六,电机控制任务执行完成,释放资源,背景任务继续执行;
[0078] 步骤七,Linux得到图像识别结果,将其写入共享内存中;
[0079] 步骤八,RTOS系统的背景任务检测到共享内存的图像识别结果数据,结束图像任务的挂起状态;图像任务重新开始运行,直到任务完成。
[0080] 其中,主核心通过将图像任务分块运行,适合实施处理的数据在主核心的RTOS系统中运行,得到需要大量运算的数据在处理核心中的Linux系统中处理,合理将任务拆解,以对应不同的处理优势的系统,同时通过共享内存交换数据,可以实现较高的传输速率。
[0081] 可选的,当主核心检测到共享内存模块中处理核心写入的结果数据时暂停当前执行的任务,并根据结果数据继续执行运算任务,可以包括:
[0082] 主核心所执行的中断程序检测到共享内存模块中处理核心写入的结果数据时,中断程序暂停当前执行的任务;
[0083] 中断程序结束运算任务的暂停状态,运算任务根据结果数据继续运行。
[0084] 其中,本实施例通过中断程序检测共享内存是否写入相关的结果数据,中断程序拥有较高的优先级,因此在处理核心写入结果数据时可以立即反应做出判断,保持控制器的实时处理的性能。
[0085] 本申请实施例提供了多任务控制方法,可以通过在多核处理器中分配主核心和处理核心,分别处理不同实时性的任务,同时主核心可以通过共享内存与处理核心进行数据通信满足了不同要求的任务处理,满足了机器人控制器对多任务的处理需求,同时具有较高的处理速度。
[0086] 下面对本申请实施例提供的基于多核处理器的控制器进行介绍,下文描述的基于多核处理器的控制器与上文描述任务执行方法可相互对应参照。
[0087] 请参考图4,图4为本申请实施例提供的一种基于多核处理器的控制器的结构框图。
[0088] 本实施例提供的基于多核处理器的控制器,可以包括:
[0089] 多核处理器10、内存模块20;
[0090] 其中,多核处理器10包括主核心11和处理核心12,主核心11安装实时操作系统,处理核心12安装非实时操作系统;
[0091] 其中,多核处理器10又叫做多核CPU,多核处理器是指在一枚处理器中集成两个或多个完整的计算核心,此时处理器能支持系统总线上的多个处理器,由总线控制器提供所有总线控制信号和命令信号。对于安装不同操作系统的核心,可以处理不同实时性的任务。因此,将多核处理器10的核心分为主核心11和处理核心12,主核心11安装实时操作系统,处理核心12安装非实时操作系统,使得不同的核心可以执行不同的任务。
[0092] 需要注意的是,每个处理核心可以安装独立的操作系统,例如,多核处理器一共有4个处理核心,将两个处理核心分配为主核心,其余两个核心分配为处理核心,每个核心安装对应的其独立的操作系统。也可以几个处理核心共同安装一个操作系统,例如,多核处理器一共有4个处理核心,将一个处理核心分配为主核心,三个处理核心分配为处理核心,主核心安装实时操作系统,三个处理核心共同安装一个非实时操作系统。
[0093] 可以想到的是,主核心和处理核心的分配数量可以是依据控制器所应用的环境以及其所处理的问题而决定,可以是处理核心个数较多,也可以是主核心的个数较多,还可以是主核心的个数和处理核心的个数相同,在此不再做具体限定。
[0094] 内存模块20包括主核心内存模块、处理核心内存模块以及共享内存模块21;其中,共享内存模块21用于实时操作系统与非实时操作系统之间的数据交互。
[0095] 优选的,本申请实施例可以采用大小核的CPU芯片完成主核心和处理核心的划分处理,运算量较小的任务,也就是主核心划分给较小核心,具有较小的功耗,运算量较大的任务,也就是处理核心的划分给较大核心,可以保持一定的运算性能。
[0096] 具体可以例如下述分配:
[0097] 对1颗有2个Cortex-A7内核和1个Cortex-M4内核的CPU芯片,可以将2个Cortex-A7内核分配作为处理核心,将1个Cortex-M4内核分配作为主核心。同时可以兼顾性能和功耗。
[0098] 本申请实施例提供的一种基于多核处理器的控制器,通过在多核处理器中按照安装实时操作系统和非实时操作系统分配主核心和处理核心,分别处理不同实时性的任务,以满足不同实时性任务的执行要求,同时主核心可以通过共享内存与处理核心进行数据通信,可以使复杂任务需要不同实时性处理的任务以较快的速度进行数据交互。
[0099] 请参考图5,图5为本申请实施例提供的一种基于多核处理器的控制器的接口模块的结构框图。
[0100] 结合上一实施例,本实施例是针对上一实施例中的控制器的接口部分做一个具体限定,其他内容大体与上一实施例相同,相同部分可参考上一实施例,在此不再做赘述。
[0101] 本实施例的控制器可以包括:接口模块。
[0102] 其中,接口模块按照接口对应的中断事件或任务的实时性高低分为高实时性接口模块31和低实时性接口模块32;主核心11连接高实时性接口模块31,处理核心12连接低实时性接口模块32。
[0103] 也就是说,控制器中的主核心11和处理核心12通过不同的接口来执行不同实时性的任务,而接口就是作为不同中断事件和任务的入口,不同的接口代表了不同的任务或者是中断事件,通过区分接口已达到区分不同任务的作用。
[0104] 结合上一实施例,本实施例是针对上一实施例中的控制器的主核心以及处理核心做一个具体限定,其他内容与上一实施例大体相同,相同部分可参考上一实施例,在此不再做赘述。
[0105] 本实施例中,核心用于通过高实时性接口模块处理高实时性的中断事件或任务;主核心按照中断事件或任务的优先级执行中断事件或任务;当高实时性的中断事件或任务需要进行计算处理时,将待处理数据写入共享内存模块;当检测到结果数据写入共享内存模块时,读取结果数据。
[0106] 处理核心用于通过低实时性接口模块处理低实时性的中断事件或任务;处理核心按照中断事件或任务的优先级执行中断事件或任务;当主核心将待处理数据写入共享内存模块时,将待处理数据进行计算处理得到结果数据,并将结果数据写入共享内存模块。
[0107] 可选的,实时操作系统为RTOS系统,非实时操作系统为Linux系统。
[0108] 为方便理解,本实施例提供例如下图的硬件电路。
[0109] 请参考图6,图6为本申请实施例提供的一种基于多核处理器的控制器的一种硬件电路框图。
[0110] 对于多核处理器可以例如图中的硬件结构。一般多核处理器的外围电路一般包括以下几个硬件模块:
[0111] 电源模块,为控制器提供电源;
[0112] 内存模块,负责控制器内部数据缓存和交互;
[0113] 接口模块,包括但不限于普通IO接口、USB接口、HDMI接口、SD卡接口、串行接口、网络接口以及总线接口,该接口模块负责接入外部设备芯片、外部设备以及上位机通讯。
[0114] 对于多核处理器不同的接口对应了不同的事件输入和输出,以及相应的中断程序,可以使多核处理器中的应用程序面对不同中断做出反应。同时不同的接口也对应了控制器运行时面对的不同任务,例如,通过CAN总线控制电机,进而控制机器人的运动等需要高实时性的任务;控制器通过HDMI接口进行人机交互等实时性较低的任务。
[0115] 基于示例中的硬件电路,可以对多核处理器中的处理核心做如下分配。
[0116] 请参考图7,图7为本申请实施例提供的一种基于多核处理器的控制器的一种任务分配框图。
[0117] 划分一个处理核心作为主核心,在主核心上安装实时操作系统(以RTOS系统为例),接管设计高实时性的中断、硬件外设。例如上述说明,控制器控制机器人的运动轨迹的任务高实时性,需要通过CAN总线控制,因此,与CAN总线相关的中断、硬件外设均由实施操作系统接管。
[0118] 本实施例中,其余所有处理核心安装非实时操作系统(以Linux系统为例),并接管非实时、低实时性的中断程序和硬件外设。例如上述说明,控制器对外界进行人机交互,还通过以太网与调度中心进行数据交换等任务,对实时性要求较低,因此上述任务的相关终端、硬件外设均由非实时操作系统接管。同时,还可以将需要复杂运算的任务交给处理核心,例如图像处理、线路规划以及导航等。
[0119] 基于上述处理核心的分配,使不同的核心接管不同的接口,且接口模块中,为了避免各操作系统之间出现外设资源冲突,每个接口均被1个操作系统独占。且内存模块被划分为多个区域,该内存模块可以是多核处理器的内部缓存,也可以是外部的内存,在此不做限定。每个操作系统至少独占一片区域的内存,剩下的内存区域作为共享内存,用于各个核心之间的数据交互。
[0120] 说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0121] 专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0122] 结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0123] 以上对本申请所提供的一种基于多核处理器的控制器及任务执行方法进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。