一种适用于多核板卡的通用系统及方法与流程

文档序号:18256952发布日期:2019-07-24 10:19阅读:200来源:国知局
一种适用于多核板卡的通用系统及方法与流程

本发明涉及混合多系统领域,具体涉及一种适用于多核板卡的通用系统及方法。



背景技术:

随着嵌入式产品的更新升级,越来越多的功能被集中在同一块硬件之上,往往各个功能之间互相联系,互相影响。为了更好的处理实时性任务与非实时任务,混合多系统可以使任务分工更精细,灵活地适应不同情景。

目前,公知的混合多系统为基于双核CPU的AMP(Accelerated Mobile Pages,移动页面加速)技术,大多使用Linux与μCOS(Micro-controller Operating System,实时多任务操作系统)搭配实现,即CPU0运行Linux,CPU1运行μCOS。这种方法有较大的缺陷和不足:

①消耗不必要的资源与时间

需要提前在代码阶段划分好内存资源,规定所运行的CPU,重新编译后再进行加载工作。这些代码实现往往分布在不同内核组件中,修改时费事费力;

②绑定硬件,大多只局限于ARM

现有方法仅适用于ARM体系架构的双核处理器,随着功能复杂度增加,硬件处理器性能提升更换硬件无法适用,例如X86架构的intel处理器,四核ARM Cortex A53的MPSOC处理器都无法适用。

③复杂度高,维护困难

在运行过程中无法判断其他CPU核是否正常运行,容易造成对应用提供数据、功能错误。

④对系统中其他运行应用程序影响极大,造成实时性任务抖动

如果其中一个CPU上的任务出现bug导致重启运行,那么另一个CPU将也被重启运行,这样会导致正常运行的CPU被重启;如果其中一个CPU上的任务进行大量的系统调用等进入内核特权态的操作,会对另一个CPU上任务的运行造成很大的抖动。



技术实现要素:

为了克服上述应用程序使用的不足,本发明提供了一种适用于多核板卡的通用系统。该平台不仅减少核间相互干扰,而且提供了很多直接可用的功能组件,方便程序员使用。

本发明技术方案如下:

一种适用于多核板卡的通用系统,其特征在于,包括ARCH层与板级支持包BSP(Board Support Package)层,自动化配置工具对应用所述通用系统的平台的资源进行修改,其中:

主核CPU0运行Linux,其他CPU运行SylixOS,将SylixOS的编译链部署在Linux上,ARCH层与BSP层提供不同的镜像库,其中SylixOS为国产大型嵌入式实时操作系统;

自动化配置工具对脚本进行修改,自动定位到配置代码处进行内存资源、CPU资源、中断资源、硬件架构等选择修改,编译后自动运行。

进一步地,抽象出ARCH层与BSP层,其中,ARCH层与BSP层是操作系统为上层应用所提供通用接口设计的,在应用编写过程中,直接调用应用程序编程接口;当没有ARCH层与BSP层的具体实现时,应用调用的仅为空函数接口,当操作系统将ARCH层与BSP层的具体实现链接到编程接口时,应用程序完成调用即可。

一种适用于多核板卡的通用系统的用户操作方法,其特征在于,包括如下步骤:

用户启动程序,打开所述配置工具,选择架构与所述BSP,对硬件资源进行配置,自动编译所有CPU上的操作系统OS,从而启动应用所述通用系统的平台。

一种适用于多核板卡的通用系统的运行方法,其特征在于,包括如下步骤:

所述通用系统启动程序,打开所述配置工具,自动导入源码工程,自动寻找目录修改相关系统文件,自动编译所有CPU上的操作系统OS,从而启动应用所述通用系统的平台。

一种适用于多核板卡的通用系统实现多核之间的独立重启的方法,其特征在于,包括如下步骤:

当其中一个CPU上的任务出现bug导致重启运行时,由于提前通过配置文件进行了中断的绑定,即私有中断,需要启动从核时进行判断是否为异常重启,即非掉电重启;如果不是异常重启,则初始化所有硬件资源;如果是异常重启,则判断是否为所述CPU所用的资源,如果是所述CPU所用的资源,则初始化硬件资源;如果不是所述CPU所用的资源,则不做初始化操作,即不再重新初始化其他CPU上的操作系统资源,从而实现多核之间的独立重启,不影响其他CPU上任务的正常运行。

进一步地,平台内部需提供心跳检测功能,用于判断其他CPU核是否正常运行;具体在于,所以所述CPU在正常运行的状态下,向其他CPU发送心跳包,所述其他CPU在收到所述心跳包后查询心跳数据,如果确认所述CPU正常运行,则继续进行所述心跳检测功能。

对last level cache进行划分处理,锁定于各个CPU之上,同时对硬件辅助寄存器进行操作,屏蔽由于转换检测缓冲区TLB(Translation Lookaside Buffer)一致性而产生的广播操作;如果其中一个CPU上的任务在进行大量的系统调用等进入内核特权态的操作时,其他CPU不会因此被影响。

一种计算机可读存储介质,包括处理器和存储器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器执行时,用以实现所述的方法。

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

①使用方便,节约时间

通过智能配置工具,轻松实现对硬件,资源的配额修改;可实现配置智能化,与硬件处理器多样化,满足足够多用户的使用场景。

②硬件丰富

通过对应用系统的平台的ARCH层与BSP层抽象,可以实现硬件平台的多样化,能够适配多种硬件平台。

③智能检测软件完整性

通过心跳检测功能,保证平台的健壮性以及完成性,保证上层应用正常运行。

④稳定性强

通过处理多核之间的影响如cache lock,广播屏蔽等操作保证平台稳定性。

附图说明

图1为本发明实施例中适用于多核板卡的通用系统的示意图。

图2为本发明实施例中适用于多核板卡的通用系统的架构图。

图3为本发明实施例中适用于多核板卡的通用系统的用户操作方法和平台运行方法的示意图。

图4为本发明实施例中适用于多核板卡的通用系统实现多核之间的独立重启的流程图。

图5为本发明实施例中适用于多核板卡的通用系统内部心跳检测的流程图。

具体实施方式

为了使本发明的发明目的、技术方案和有益技术效果更加清晰,以下结合实施例,对本发明进行进一步详细说明。应当理解的是,本说明书中描述的实施例仅仅是为了解释本发明,并能予以实施,但所举实施例不作为对本发明的限定。

实施例1

如图1和图2所示,本发明实施例中适用于多核板卡的通用系统,其特征在于,包括ARCH层与板级支持包BSP(Board Support Package)层,自动化配置工具对应用所述通用系统的平台的资源进行修改,其中:

主核和从核可以是任意操作系统,图1中的主核和从核均为SylixOS,所述主核和从核均包括通用异步收发传输器URAR1、媒体访问控制MAC、嵌入式多媒体卡eMMC和寄存器CACHE;硬件公有部分包括中断控制器GIC和片上存储器OCM。

以下以主核运行Linux,其他核CPU运行SylixOS为例,其中SylixOS为国产大型嵌入式实时操作系统;

主核CPU0运行Linux,其他核CPU运行SylixOS,将SylixOS的编译链部署在Linux上,ARCH层与BSP层提供不同的镜像库;

自动化配置工具对脚本进行修改,自动定位到配置代码处对内存资源、CPU资源、中断资源、硬件架构选择修改,编译后自动运行。

抽象出ARCH层与BSP层,其中,ARCH层与BSP层是操作系统为上层应用所提供通用接口设计的,在应用编写过程中,直接调用应用程序编程接口;当没有ARCH层与BSP层的具体实现时,应用调用的仅为空函数接口,当操作系统将ARCH层与BSP层的具体实现链接到编程接口时,应用程序完成调用即可。

实施例2

如图3所示,为本发明所述的适用于多核板卡的通用系统的用户操作方法和所述通用系统运行方法,其特征在于,

所述用户操作方法包括:用户启动程序,打开所述配置工具,选择架构与所述BSP,对硬件资源进行配置,自动编译所有CPU上的操作系统OS,从而启动应用所述通用系统的平台;

所述通用系统运行方法包括:所述通用系统启动程序,打开所述配置工具,自动导入源码工程,自动寻找目录修改相关系统文件,自动编译所有CPU上的操作系统OS,从而启动应用所述通用系统的平台。

实施例3

如图4所示,为本发明所述的适用于多核板卡的通用系统实现多核之间的独立重启的方法,其特征在于,

当其中一个CPU上的任务出现bug导致重启运行时,由于提前通过配置文件进行了中断的绑定,即私有中断,需要启动从核时进行判断是否为异常重启,即非掉电重启;如果不是异常重启,则初始化所有硬件资源;如果是异常重启,则判断是否为所述CPU所用的资源,如果是所述CPU所用的资源,则初始化硬件资源;如果不是所述CPU所用的资源,则不做初始化操作,即不再重新初始化其他CPU上的操作系统资源,从而实现多核之间的独立重启,不影响其他CPU上任务的正常运行。

实施例4

如图5所示,为本发明所述的适用于多核板卡的通用系统内部心跳检测的方法,其特征在于,平台内部需提供心跳检测功能,用于判断其他CPU是否正常运行;具体在于,所以所述CPU在正常运行的状态下,向其他CPU发送心跳包,所述其他CPU在收到所述心跳包后查询心跳数据,如果确认所述CPU核正常运行,则继续进行所述心跳检测功能。

并且,提前对last level cache进行划分处理,锁定于各个CPU之上,同时对硬件辅助寄存器进行操作,屏蔽由于转换检测缓冲区TLB(Translation Lookaside Buffer)一致性而产生的广播操作。如果其中一个CPU上的任务在进行大量的系统调用等进入内核特权态的操作时,其他CPU不会因此被影响,真正做到任务更加独立。

在处理器设计中,一般last level cache被所有CPU核所共享使用,在ARMv7架构中会提供相应寄存器,可以设置使用cache保证不被其他核清除,具体代码如下所示:

REG_WRITE(L2CACHE_BAR+L2CACHE_OFFSET_LOCKDOWN+0x0,0xFFF0);设置cpu0的icache

REG_WRITE(L2CACHE_BAR+L2CACHE_OFFSET_LOCKDOWN+0x4,0xFFF0);设置cpu0的dcache

REG_WRITE(L2CACHE_BAR+L2CACHE_OFFSET_LOCKDOWN+0x8,0xFF0F);设置cpu1的icache

REG_WRITE(L2CACHE_BAR+L2CACHE_OFFSET_LOCKDOWN+0xC,0xFF0F);设置cpu1的dcache

另外在ARMv7架构中,当我们对cache进行操作时,会对同簇CPU进行广播,从而干扰CPU的运行效率,主要时由ACTLR寄存器控制,通过操作cp15寄存器关闭此广播,具体代码如下:

本发明通过上述技术方案,提供了自动化配置工具对硬件资源进行配置,将应用所述系统的平台抽象出ARCH与BSP层,通过心跳包检测其他CPU是否正常运行,通过cache划分与通用寄存器设置消除了核间广播,增加系统稳定性。

基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

上面对本专利的较佳实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下做出各种变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1