基于多核CPU的FreeRTOS运行任务方法及装置制造方法及图纸

技术编号:31830727 阅读:13 留言:0更新日期:2022-01-12 13:07
本发明专利技术公开了一种基于多核CPU的FreeRTOS运行任务方法及装置,涉及嵌入式实时操作系统技术领域,使得FreeRTOS实时操作系统支持多核CPU的多任务运行。本发明专利技术的主要技术方案为:如果目标核抢占了自旋锁去访问全局任务就绪表,就可以根据全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第一任务,全局任务就绪表内存储了未与核绑定的任务,每个核均有自身对应的核任务就绪表且存储了与核绑定的任务;目标核运行第一任务并释放自旋锁;在目标核运行第一任务的同时,如果其他核抢占了自旋锁去访问全局任务就绪表,也可以根据全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第二任务,并运行第二任务。并运行第二任务。并运行第二任务。

【技术实现步骤摘要】
基于多核CPU的FreeRTOS运行任务方法及装置


[0001]本专利技术涉及嵌入式实时操作系统
,尤其涉及一种基于多核CPU的FreeRTOS运行任务方法及装置。

技术介绍

[0002]开源的嵌入式实时操作系统(Free Real Time Operating System,FreeRTOS)作为一个轻量级的操作系统,它具有的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,采用FreeRTOS可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。
[0003]目前,FreeRTOS已可以支持多种架构的CPU,包括RiscV架构。RiscV,即RISC

V(英文发音为"risk

five")是一个全新的指令集架构,该架构最初由美国加州大学伯克利分校的EECS部门的计算机科学部门的Krste Asanovic教授、Andrew Waterman和Yunsup Lee等开发人员于2010年专利技术。其中"RISC"表示精简指令集,而其中"V"表示伯克利分校从RISCI开始设计的第五代指令集。
[0004]然而,现有的FreeRTOS实时操作系统,只能运行在单核CPU上,而不支持多核CPU,如对于创建的多个任务,它不能支持真正的同时运行,导致对于多核CPU无法充分发挥CPU的性能。

技术实现思路

[0005]有鉴于此,本专利技术提供一种基于多核CPU的FreeRTOS运行任务方法及装置,主要目的在于当FreeRTOS实时操作系统运行在多核CPU时能够支持多任务同时运行,确保了多核CPU充分发挥CPU的性能。
[0006]为了达到上述目的,本专利技术主要提供如下技术方案:
[0007]本申请第一方面提供了一种基于多核CPU的FreeRTOS运行任务方法,该方法包括:
[0008]初始化配置多核CPU,所述多核包括一个目标核和至少一个其他核;
[0009]若所述目标核抢占了自旋锁去访问全局任务就绪表,则所述目标核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第一任务,所述全局任务就绪表内存储了未与核绑定的任务,每个核均有自身对应的核任务就绪表,用于存储与核绑定的任务;
[0010]所述目标核运行所述第一任务并释放所述自旋锁;
[0011]在所述目标核运行所述第一任务的同时,若所述其他核抢占了所述自旋锁去访问所述全局任务就绪表,则所述其他核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第二任务,并运行所述第二任务。
[0012]在本申请第一方面的一些变更实施方式中,
[0013]所述目标核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第一任务,包括:所述目标核
[0014]通过将全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,确定任务运行优先级最高的任务为第一任务;
[0015]所述其他核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第二任务,包括:所述其他核
[0016]通过将全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,确定任务运行优先级最高的任务为第二任务。
[0017]在本申请第一方面的一些变更实施方式中,所述通过将全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,包括:
[0018]从所述全局任务就绪表中获取表内最高优先级任务对应的第一优先级标识;
[0019]所述目标核或所述其他核从自身的核任务就绪表中获取表内最高优先级任务对应的第二优先级标识;
[0020]将所述第一优先级标识和所述第二优先级标识进行比较,获取较高的优先级标识,其中,所述较高的优先级标识对应的任务为任务运行优先级最高的任务。
[0021]在本申请第一方面的一些变更实施方式中,在所述目标核运行所述第一任务时,所述方法还包括:
[0022]若所述目标核等待所述第一任务对应触发消息的时长达到预设阈值,则将所述第一任务添加到所述目标核的阻塞列表内;
[0023]当所述其他核监测到所述触发消息时,所述其他核向所述目标核释放信号量,所述信号量用于通知所述目标核释放阻塞的信号;
[0024]若所述第一任务与所述目标核不存在绑定关系,则所述目标核在获取到所述信号量之后,将所述第一任务从所述阻塞列表中释放并返回到所述全局任务就绪表内。
[0025]在本申请第一方面的一些变更实施方式中,若所述第一任务与所述目标核存在绑定关系,所述方法还包括:
[0026]所述目标核在获取到所述信号量之后,将所述第一任务从所述阻塞列表中释放并添加到所述目标核的核任务就绪表内;
[0027]所述其他核将所述触发消息传递给所述目标核并触发核间中断指令,所述核间中断指令用于通知所述目标核做任务切换;
[0028]根据所述核间中断指令,所述目标核从所述核任务就绪表内获取所述第一任务;
[0029]根据所述触发消息,所述目标核重新运行所述第一任务。
[0030]在本申请第一方面的一些变更实施方式中,所述方法还包括:
[0031]当所述目标核接收到定时中断指令时,所述目标核终止运行当前任务;
[0032]根据所述定时中断指令,所述目标核执行任务切换操作。
[0033]在本申请第一方面的一些变更实施方式中,所述根据所述定时中断指令,所述目标核执行任务切换操作,包括:
[0034]所述目标核通过抢占所述自旋锁去获取访问所述全局任务就绪表的权限;
[0035]所述目标核通过将所述全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,确定任务运行优先级当前最高的第三任务;
[0036]所述目标核运行所述第三任务并释放自旋锁。
[0037]本申请第二方面提供了一种基于多核CPU的FreeRTOS运行任务装置,该装置包括:
[0038]配置单元,用于初始化配置多核CPU,所述多核包括一个目标核和至少一个其他核;
[0039]确定单元,用于当所述目标核抢占了自旋锁去访问全局任务就绪表时,使所述目标核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第一任务,所述全局任务就绪表内存储了未与核绑定的任务,每个核均有自身对应的核任务就绪表,用于存储与核绑定的任务;
[0040]运行单元,用于使所述目标核运行所述第一任务并释放所述自旋锁;
[0041]所述确定单元,还用于在所述目标核运行所述第一任务的同时,当所述其他核抢占了所述自旋锁去访问所述全局任务就绪表时,使所述其他核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第二任务;
[0042]所述运行单元,还用于使所述其他核运行所述第二任务。
[0043]在本申请第二方面的一些变更实施方式中,所述确定单元包括:比较模块和确定模块,...

【技术保护点】

【技术特征摘要】
1.一种基于多核CPU的FreeRTOS运行任务方法,其特征在于,所述方法包括:初始化配置多核CPU,所述多核包括一个目标核和至少一个其他核;若所述目标核抢占了自旋锁去访问全局任务就绪表,则所述目标核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第一任务,所述全局任务就绪表内存储了未与核绑定的任务,每个核均有自身对应的核任务就绪表,用于存储与核绑定的任务;所述目标核运行所述第一任务并释放所述自旋锁;在所述目标核运行所述第一任务的同时,若所述其他核抢占了所述自旋锁去访问所述全局任务就绪表,则所述其他核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第二任务,并运行所述第二任务。2.根据权利要求1所述的方法,其特征在于,所述目标核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第一任务,包括:所述目标核通过将全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,确定任务运行优先级最高的任务为第一任务;所述其他核根据所述全局任务就绪表和自身的核任务就绪表内任务的优先级确定出第二任务,包括:所述其他核通过将全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,确定任务运行优先级最高的任务为第二任务。3.根据权利要求2所述的方法,其特征在于,所述通过将全局任务就绪表内任务与自身的核任务就绪表内任务进行比较,包括:从所述全局任务就绪表中获取表内最高优先级任务对应的第一优先级标识;所述目标核或所述其他核从自身的核任务就绪表中获取表内最高优先级任务对应的第二优先级标识;将所述第一优先级标识和所述第二优先级标识进行比较,获取较高的优先级标识,其中,所述较高的优先级标识对应的任务为任务运行优先级最高的任务。4.根据权利要求1所述的方法,其特征在于,在所述目标核运行所述第一任务时,所述方法还包括:若所述目标核等待所述第一任务对应触发消息的时长达到预设阈值,则将所述第一任务添加到所述目标核的阻塞列表内;当所述其他核监测到所述触发消息时,所述其他核向所述目标核释放信号量,所述信号量用于通知所述目标核释放阻塞的信号;若所述第一任务与所述目标核不存在绑定关系,则所述目标核在获取到所述信号量之后,将所述第一任务从所述阻塞列表中释放并返回到所述全局任务就绪表内。5.根据权利要求4所述的方法,其特征在于,若所述第一任务与所述目标核存在绑定关系,所述方法还包括:所述目标...

【专利技术属性】
技术研发人员:张雷正
申请(专利权)人:北京奕斯伟计算技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1