CN115809128A - 应用于汽车ecu的多核任务调度方法及系统 - Google Patents
应用于汽车ecu的多核任务调度方法及系统 Download PDFInfo
- Publication number
- CN115809128A CN115809128A CN202211458411.6A CN202211458411A CN115809128A CN 115809128 A CN115809128 A CN 115809128A CN 202211458411 A CN202211458411 A CN 202211458411A CN 115809128 A CN115809128 A CN 115809128A
- Authority
- CN
- China
- Prior art keywords
- entity
- scheduling
- core
- automobile
- operable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供一种应用于汽车ECU的多核任务调度方法及系统,方法包括:对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个可运行实体自动映射到对应的进程上;将各个进程分别绑定至汽车ECU的多个CUP核上,生成各个CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个调度表对应的工程代码,以基于各个调度表及对应的工程代码调度各个可运行实体。本申请能够有效降低可运行实例与进程之间映射所需的人工成本及时间成本,能够有效提高应用于汽车ECU的多核任务调度过程的效率、自动化程度及开发效率等。
Description
技术领域
本申请涉及汽车软件技术领域,尤其涉及应用于汽车ECU的多核任务调度方法及系统。
背景技术
随着汽车逐步由机械化转向电气化,并且伴随着广大用户对汽车舒适性以及安全性越来越高的要求,现代汽车上的软件系统也变得越来越重要。于是世界上主流的汽车厂商以及提供汽车ECU的半导体厂商等供应商一起联合制定了AUTOSAR这种应用在汽车上的软件系统标准。并且随着对性能要求的不断提高,在多核同构处理器上资源的最大化的合理利用是非常重要的。
目前,现有的应用于汽车ECU的多核任务调度方法主要采用有开源主机性能监控框架vector的符合汽车开放式系统架构autosar标准的软件系统,以及一些其它的用非免费IP授权的实时操作系统实现的符合autosar标准的软件系统来实现。但现有方法的缺点主要是成本太高,并且周期性可运行实体映射到进程上需要考虑到可运行实体的调度开销以及可运行实体之间的相互依赖关系和数据一致性等问题,需要有经验的工程师进行手动映射,这无疑是增加了人工成本。而且由于缺乏基于所建模型和数据生成代码的方案,导致开发效率大幅降低。
发明内容
鉴于此,本申请实施例提供了应用于汽车ECU的多核任务调度方法及系统,以消除或改善现有技术中存在的一个或更多个缺陷。
本申请的一个方面提供了一种应用于汽车ECU的多核任务调度方法,包括:
对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上;
将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体。
在本申请的一些实施例中,在所述对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理之前,还包括:
采用智能汽车平台软件中间件对汽车的应用软件组件及各个所述应用软件组件中的各个可运行实体进行建模,以生成对应的数据库描述文件;
对所述数据库描述文件中的各个所述应用软件组件进行分类,并将同类型的所述应用软件组件放在相同的列表容器中。
在本申请的一些实施例中,所述对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,包括:
将各个所述列表容器中的应用软件组件对应的各个所述可运行实体全部抽取出来;
按照预设的调度点对抽取出的各个所述可运行实体进行排序。
在本申请的一些实施例中,所述基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上,包括:
基于预设的基于纳什均衡策略,依次将排序的各个所述可运行实体自动映射到对应的进程上。
在本申请的一些实施例中,所述将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并动生成各个所述调度表对应的工程代码,包括:
根据汽车ECU的各个CUP核各自的核结构数据,将各个所述进程分别绑定至各个所述CUP核上;
根据各个所述CUP核各自对应的所述可运行实体分别确定各个所述CUP核各自对应的超周期,以生成各个所述CPU核各自对应的用于调度可运行实体的调度表;
采用模板化自动渲染生成代码技术提取各个所述调度表的信息并生成对应的结构体数组,以基于所述结构体数组自动生成各个所述调度表对应的工程代码。
在本申请的一些实施例中,所述基于各个所述调度表及对应的工程代码调度各个所述可运行实体,包括:
根据各个所述调度表中的信息,依次在每个所述可运行实体中的调度点到达时,基于对应的工程代码触发对应的进程进行该可运行实体的调度。
在本申请的一些实施例中,所述触发对应的进程进行该可运行实体的调度,包括:
触发所述可运行实体对应的进程以进行针对该可运行实体的调度;
或者,
触发所述可运行实体对应的进程并动态调整该进程的优先级,以进行针对该可运行实体的调度。
本申请的另一个方面提供了一种应用于汽车ECU的多核任务调度系统,包括:
自动映射模块,用于对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上;
自动代码生成模块,用于将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体。
本申请的第三个方面提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的应用于汽车ECU的多核任务调度方法。
本申请的第四个方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的应用于汽车ECU的多核任务调度方法。
本申请提供的应用于汽车ECU的多核任务调度方法,通过对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上,能够有效降低可运行实例与进程之间映射所需的人工成本及时间成本,能够有效提高应用于汽车ECU的多核任务调度过程的效率;通过将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体,能够有效提高应用于汽车ECU的多核任务调度过程的效率、自动化程度及开发效率等。
本申请的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本申请的实践而获知。本申请的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本申请实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本申请能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。附图中的部件不是成比例绘制的,而只是为了示出本申请的原理。为了便于示出和描述本申请的一些部分,附图中对应部分可能被放大,即,相对于依据本申请实际制造的示例性系统中的其它部件可能变得更大。在附图中:
图1为本申请一实施例中的应用于汽车ECU的多核任务调度方法的第一种流程示意图。
图2为本申请一实施例中的应用于汽车ECU的多核任务调度方法的第二种具体流程示意图。
图3为本申请另一实施例中的应用于汽车ECU的多核任务调度系统的结构示意图。
图4为本申请应用实例中提供的可运行实体的调度的原理框图。
图5为本申请应用实例中提供的针对触发调度的第一个方案的具体实现流程图。
图6为本申请应用实例中提供的针对触发调度的第二个方案的具体实现流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本申请做进一步详细说明。在此,本申请的示意性实施方式及其说明用于解释本申请,但并不作为对本申请的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本申请,在附图中仅仅示出了与根据本申请的方案密切相关的结构和/或处理步骤,而省略了与本申请关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本申请的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
在本申请的一个或多个实施例中,超周期是指:超周期是指一个调度表内调度点Expiry Point的最大公约数。
在本申请的一个或多个实施例中,汽车开放系统体系结构是指:一种汽车软件体系结构的实现规范,是一种汽车软件系统的标准,可以简称为:Autosar。
在本申请的一个或多个实施例中,应用软件组件是指:用符合Autosar规范的建模软件建模后生成的软件组件。
在本申请的一个或多个实施例中,可调度实体是指:是用来放在SWC中的可运行实体runnable,一般一个可运行实体runnable对应一个函数。
在本申请的一个或多个实施例中,调度表是指:用符合autosar规定的软件建模后生成的可运行实体runable调度信息(调度信息包含每个CPU核中的每个可运行实体runnable的调度点信息等),是按照开发者自己设计好的顺序、到指定的tick激活相应的runnable,触发任务的运行。
在本申请的一个或多个实施例中,调度点是指:是开发者静态定义好的时间点,该时间点是相对于系统启动时的时间点的偏移。
在本申请的一个或多个实施例中,Jinja2是指:一种根据模板用来动态生成代码的python工具。
在本申请的一个或多个实施例中,多核同构是指:对称多核处理器,也就是多核同构。每个核的处理能力基本上差不多。每个核的地位也是对等的。
在本申请的一个或多个实施例中,多核异构是指:非对称多核处理器,也就是多核异构。一般分主核与协核,主核处理能力一般比较强,协核一般处理能力毕竟弱,协核一般做一些辅助性的工作。
在本申请的一个或多个实施例中,复杂驱动层是指:AUTOSAR架构中的复杂驱动层。
在本申请的一个或多个实施例中,汽车微控制器简称为ECU或汽车ECU。
针对现有的应用于汽车ECU的多核任务调度方法需要有经验的工程师进行手动映射进而导致增加了人工成本及时间成本等问题,本申请提供的方法并不需要手动映射,而是可以通过运行本申请自己的python脚本实现合理性的自动化映射。
而针对现有技术并没有提供一套基于所建模型的和数据库的自动化代码生成和集成方法,导致开发效率太低等问题,本申请能够有效提高进行事件触发调度可运行实体的效率。
本申请是基于AUTOSAR标准的一种软件系统实现,通过智能汽车平台软件中间件linearx的上位机建模以及调度表完成进程和可运行实体的映射,并实现代码的自动化生成。通过该方法可以最大化的利用好处理器上的资源。
本申请的目的是在为需要运行基于AUTOSAR标准软件系统的厂商提供一套可以基于所建模型的自动化生成数据库,并基于生成的数据库完成工程软件代码的自动化生成和集成方法。并将该申请的软件系统的响应速度和运行效率较现有技术有更好的提升以及稳定性得到增强。
具体通过下述实施例进行详细说明。
本申请实施例提供一种可以由应用于汽车ECU的多核任务调度系统执行的应用于汽车ECU的多核任务调度方法,参见图1,所述应用于汽车ECU的多核任务调度方法具体包含有如下内容:
步骤100:对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上。
步骤200:将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体。
具体来说,具体来说,根据AUTOSAR提供的方法论可知,AUTOSAR采用了系统级开发跟ECU级开发并行的流程来提高开发的效率。系统级开发主要是搭建整个系统的框架,主要就是建模,也就是列出具体的需求,这些需求的实现是靠分布在应用软件组件中的可运行实体来实现的。但是这些可运行实体必须放在OS服务层的进程里运行。因此需要把各个应用软件组件里的可运行实体抽出来,然后把这些可运行实体按照一定的合理策略映射到具体的进程上。然后也需要把这些进程按照一定的合理策略分配到不同的CPU核上运行。
可运行实体必须被触发才能运行,而可运行实体的触发又分为定时器触发、初始化事件触发、接收数据触发、数据发送完成触发等。本申请专门给周期触发的可运行实体创建了调度表信息。因为多核处理器中的每个核可以并行运行,为了最大化的利用多核处理器的运行资源并且提高软件运行效率,每个核会专门创建一个属于自己的调度表。周期调度表的生成是先由linearx提供的建模软件生成应用软件组件以及相关的可运行实体,然后通过脚本将这些可运行实体映射到具体进程上,最后将这些进程按照一定的合理策略绑定到具体的核上。据此生成每个核的调度表。
调度表生成后本申请用python脚本解析该表,提取所需信息后再由Jinja2脚本文件渲染生成调度表的工程代码。再之后本申请会根据这个调度表的调度点来通知相应的进程进行调度。
从上述描述可知,本申请实施例提供的应用于汽车ECU的多核任务调度方法,能够有效降低可运行实例与进程之间映射所需的人工成本及时间成本,能够有效提高应用于汽车ECU的多核任务调度过程的效率、自动化程度及开发效率等。
为了进一步提高可运行实体抽取的有效性及可靠性,在本申请实施例提供的一种应用于汽车ECU的多核任务调度方法中,参见图2,所述应用于汽车ECU的多核任务调度方法中的步骤100之前还具体包含有如下内容:
步骤010:采用智能汽车平台软件中间件对汽车的应用软件组件及各个所述应用软件组件中的各个可运行实体进行建模,以生成对应的数据库描述文件;
步骤020:对所述数据库描述文件中的各个所述应用软件组件进行分类,并将同类型的所述应用软件组件放在相同的列表容器中。
具体来说,先由linearx的工具链进行应用层级的应用软件组件和可运行实体等的设计,然后生成相应的数据库描述文件。
为了进一步提高可运行实体抽取的有效性及可靠性,在本申请实施例提供的一种应用于汽车ECU的多核任务调度方法中,参见图2,所述应用于汽车ECU的多核任务调度方法中的步骤100还具体包含有如下内容:
步骤110:将各个所述列表容器中的应用软件组件对应的各个所述可运行实体全部抽取出来;
步骤120:按照预设的调度点对抽取出的各个所述可运行实体进行排序。
具体来说,可以由预设的python脚本先把建模产生的所有可运行实体都抽取出来,然后对所有可运行实体按调度周期进行排序。
为了进一步提高可运行实体自动映射到对应的进程上的有效性及可靠性,在本申请实施例提供的一种应用于汽车ECU的多核任务调度方法中,参见图2,所述应用于汽车ECU的多核任务调度方法中的步骤120之后还具体包含有如下内容:
步骤130:基于预设的基于纳什均衡策略,依次将排序的各个所述可运行实体自动映射到对应的进程上。
为了进一步提高绑定CUP核、生成调度表及代码生成的有效性及可靠性,在本申请实施例提供的一种应用于汽车ECU的多核任务调度方法中,参见图2,所述应用于汽车ECU的多核任务调度方法中的步骤200具体包含有如下内容:
步骤210:根据汽车ECU的各个CUP核各自的核结构数据,将各个所述进程分别绑定至各个所述CUP核上。
步骤220:根据各个所述CUP核各自对应的所述可运行实体分别确定各个所述CUP核各自对应的超周期,以生成各个所述CPU核各自对应的用于调度可运行实体的调度表。
步骤230:采用模板化自动渲染生成代码技术提取各个所述调度表的信息并生成对应的结构体数组,以基于所述结构体数组自动生成各个所述调度表对应的工程代码。
具体来说,根据各种类型的应用软件组件中的所有周期性可运行实体,本申请会计算出多核处理器中每个核对应的调度表中的超周期,然后自动化生成每个核对应的调度表。再根据各个调度表,用Jinja2这种模板化自动渲染生成代码的技术,将各个调度表的信息提取出来放在容器中,生成代码中的结构体数组。然后自动化生成代码。
为了进一步提高绑定CUP核及生成调度表的有效性及可靠性,在本申请实施例提供的一种应用于汽车ECU的多核任务调度方法中,参见图2,所述应用于汽车ECU的多核任务调度方法中的步骤230之后还具体包含有如下内容:
步骤240:根据各个所述调度表中的信息,依次在每个所述可运行实体中的调度点到达时,基于对应的工程代码触发对应的进程进行该可运行实体的调度。
具体来说,自动化生成代码后,就是按照调度表中的信息依次在每个可运行实体中的调度点到达时,触发对应的进程进行该可运行实体的调度。
为了进一步触发进程的有效性及可靠性,在本申请实施例提供的一种应用于汽车ECU的多核任务调度方法中,所述应用于汽车ECU的多核任务调度方法中的步骤240中的所述触发对应的进程进行该可运行实体的调度具体包含有如下内容:
方案一:触发所述可运行实体对应的进程以进行针对该可运行实体的调度;
或者,
方案二:触发所述可运行实体对应的进程并动态调整该进程的优先级,以进行针对该可运行实体的调度。
其中,第一种方案是在系统定时器中统计系统运行的时间戳,并在每个可运行实体的调度点到达时,触发事件通知可运行实体对应的进程可以调度了,但是不改变可运行实体对应进程的优先级。第二个方案也是通过在系统定时器中统计系统运行的时间戳,在每个可运行实体的调度点到达时,触发事件通知可运行实体对应的进程可以调度了,同时动态调整该可运行实体对应进程的优先级,以满足各个可运行实体的及时响应需求。
另外,本申请还提供一种用于执行所述应用于汽车ECU的多核任务调度方法中全部或部分内的应用于汽车ECU的多核任务调度系统,参见图3,所述应用于汽车ECU的多核任务调度系统具体包含有如下内容:
自动映射模块10,用于对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上;
自动代码生成模块20,用于将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体。
本申请提供的应用于汽车ECU的多核任务调度系统的实施例具体可以用于执行上述实施例中的应用于汽车ECU的多核任务调度方法的实施例的处理流程,其功能在此不再赘述,可以参照上述应用于汽车ECU的多核任务调度方法实施例的详细描述。
从上述描述可知,本申请实施例提供的应用于汽车ECU的多核任务调度系统,能够有效降低可运行实例与进程之间映射所需的人工成本及时间成本,能够有效提高应用于汽车ECU的多核任务调度过程的效率、自动化程度及开发效率等。
为了进一步说明本方案,本申请还提供一种应用于汽车ECU的多核任务调度方法的具体应用实例,具体提供可运行实体以及进程的自动化映射以及代码的自动化生成技术;调度表的自动化生成,以及调度表中每个可运行实体的具体触发实现与流程。
本申请应用实例提供的应用于汽车ECU的多核任务调度方法的总体流程如下:
S1:先由linearx的工具链进行应用层级的应用软件组件和可运行实体等的设计,然后生成相应的数据库描述文件。
S2:让本申请的python脚本对该数据库描述文件进行解析,并进行关键信息的提取,以对应用软件组件进行分类存储。其中,关键信息是指能够表现应用软件组件的关键类型特征的信息,例如,对于APP类型的应用软件组件则关键信息为ctAp,对于cdd类型的应用软件组件则关键信息为ctCd等。
S3:将关键信息提取后,会由本申请的python脚本先把建模产生的所有可运行实体都抽取出来,然后按一定合理的逻辑策略(例如纳什均衡策略)进行可运行实体自动化映射到具体进程上。
S4:再将进程按CPU的核结构进行合理的逻辑策略进行进程绑定到核的操作。并为每个核生成对应核的调度表。在一种举例中,步骤S4中的逻辑策略举例可以为:对于对称多核同构是基于纳什均衡策略来进行进程绑定到核的操作,而对于多核异构就需要根据每个核的算力来进行进程绑定到核的操作。
S5:在代码中对该调度表中的每个核的每个可运行实体进行触发调度,并且保证相应的可运行实体能稳定的及时调度;把python脚本解析出来的关键信息按照合理逻辑策略依次放入容器中,然后用python的Jinja2工具自动化生成工程代码。
具体来说,保证可运行实体能稳定的及时调度的具体方式可以为:在可运行实体的调度点到了的时候,就在系统定时器中断服务函数中进行任务通知(任务通知的效率相比其它通信机制效率更高),通知相应的进程进行调度。
在一种举例中,步骤S5中的逻辑策略举例可以为:对于对称多核同构是基于纳什均衡策略来进行进程绑定到核的操作,而对于多核异构就需要根据每个核的算力来进行进程绑定到核的操作。
S6:自动化生成代码后,接下来就是按照调度表中的信息依次在每个可运行实体中的调度点到达时,触发对应的进程进行该可运行实体的调度。可运行实体的调度的原理参见图4。
1、应用软件组件分类
由于应用软件组件的种类不唯一,因此本申请应用实例的上述步骤S2的应用软件组件分类的流程具体包含有如下内容:
S201:根据建模生成的数据库描述文件中的应用软件组件的类型,用正则表达式来匹配不同应用软件组件的名字,然后进行分类并分别放在对应的列表容器中。
例如:应用型的应用软件组件放在APP_SWC的列表中,复杂驱动层的应用软件组件放在CDD_SWC的列表中,其它类型的应用软件组件以此类推。
2、可运行实体抽取
本申请应用实例的上述步骤S3的可运行实体抽取的流程具体包含有如下内容:
S301:将所有应用软件组件中的可运行实体全部抽取出来先放在一个容器里,然后对所有可运行实体按调度点进行排序。
S302:因为在不同的CPU核结构中的每个核的运算能力不同,所以本申请会依次对排好序的可运行实体根据不同的CPU核结构进行基于纳什均衡策略的映射,这种映射策略即考虑到了各个可运行实体之间的通信关系以及依赖关系,也有考虑到每个可运行实体的调度点。
3、调度表生成
本申请应用实例的上述步骤S4的生成调度表的流程具体包含有如下内容:
S401:根据各种类型的应用软件组件中的所有周期性可运行实体,计算出多核处理器中每个核对应的调度表中的超周期,然后自动化生成每个核对应的调度表。
4、代码自动生成
本申请应用实例的上述步骤S5的自动生成代码的流程具体包含有如下内容:
步骤501:根据各个调度表,用Jinja2这种模板化自动渲染生成代码的技术,将各个调度表的信息提取出来放在容器中,生成代码中的结构体数组。然后自动化生成代码。
5、可运行实体调用
针对在每个可运行实体的调度点到达时,触发调度有两种实现方案:
参见图5,第一种方案是在系统定时器中统计系统运行的时间戳,并在每个可运行实体的调度点到达时,触发事件通知可运行实体对应的进程可以调度了,但是不改变可运行实体对应进程的优先级。
该方案是在系统运行时,在每次进入系统定时器的中断处理函数后会先对每个核对应的调度表项按顺序进行遍历,然后判断可运行实体的调度点是否到达,如果到达则在定时器中断处理函数中触发对应的事件通知该可运行实体对应的进程可以进行调度了。
参见图6,第二个方案也是通过在系统定时器中统计系统运行的时间戳,在每个可运行实体的调度点到达时,触发事件通知可运行实体对应的进程可以调度了,同时动态调整该可运行实体对应进程的优先级,以满足各个可运行实体的及时响应需求。
该方案是在系统运行时,在每次进入系统定时器的中断处理函数后会先对每个核对应的调度表项按顺序进行遍历,然后判断可运行实体的调度点是否到达,如果到达则在定时器中断处理函数中触发对应的事件通知该可运行实体对应的进程可以进行调度了。并在指定的回调函数中完成动态优先级的调整,把该可运行实体对应的进程优先级调整到最大,并在调度完成后自动恢复其优先级。
需要说明的是,在本申请应用实例中,还可以用其它的IPC通信机制代替本申请不需要另外开辟内存的通信机制,比如说用消息队列、信号量、事件组等代替。可以用别的自动化代码生成技术代替本申请用的Jinja2,比如说mvvm、Mako等代替。可以用别的策略完成建模后数据库描述文件的关键信息提取,比如选取实体运行环境RTE的名字做正则匹配完成应用软件组件的分类。或者用别的高级程序语言来提取数据库描述文件的关键信息。可以用别的策略完成可运行实体与进程的自动化映射。可以在周期性的触发调度表的每个可运行实体时采用不同的方案,比如在别的定时器里进行周期触发,比如说软件定时器。或者是采用延时的方式来进行周期性的触发。均在本申请的可实现方案范围内。
综上所述,本申请应用实例提供的应用于汽车ECU的多核任务调度方法,首先成本比现有技术要低,本申请软件系统OS服务层用的OS是现成的开源、免费IP授权的实时操作系统的基础上进行改进来满足车载ECU环境下时间触发调度对于实时性的要求。因为可运行实体触发调度本申请用的是任务描述结构体里面的通信机制,而不是通过另外开辟内存的方式来做通信机制,所以内存开销以及响应速度肯定要比其它IPC通信机制好。
现有技术缺少部署在多核架构上的基于AUTOSAR标准的软件系统,另外现有技术的可运行实体以及进程的映射需要有经验的工程师来手动映射,这会增加人工成本。但是本申请并不需要手动映射r可运行实体以及进程,因为本申请会自动映射可运行实体到对应的进程上,并对进程进行运行开销分析后进行绑核。
本申请实施例还提供了一种电子设备(可以为汽车ECU),该电子设备可以包括处理器、存储器、接收器及发送器,处理器用于执行上述实施例提及的应用于汽车ECU的多核任务调度方法,其中处理器和存储器可以通过总线或者其他方式连接,以通过总线连接为例。该接收器可通过有线或无线方式与处理器、存储器连接。
处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本申请实施例中的应用于汽车ECU的多核任务调度方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的应用于汽车ECU的多核任务调度方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器中,当被所述处理器执行时,执行实施例中的应用于汽车ECU的多核任务调度方法。
在本申请的一些实施例中,用户设备可以包括处理器、存储器和收发单元,该收发单元可包括接收器和发送器,处理器、存储器、接收器和发送器可通过总线系统连接,存储器用于存储计算机指令,处理器用于执行存储器中存储的计算机指令,以控制收发单元收发信号。
作为一种实现方式,本申请中接收器和发送器的功能可以考虑通过收发电路或者收发的专用芯片来实现,处理器可以考虑通过专用处理芯片、处理电路或通用芯片实现。
作为另一种实现方式,可以考虑使用通用计算机的方式来实现本申请实施例提供的服务器。即将实现处理器,接收器和发送器功能的程序代码存储在存储器中,通用处理器通过执行存储器中的代码来实现处理器,接收器和发送器的功能。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述应用于汽车ECU的多核任务调度方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本申请中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种应用于汽车ECU的多核任务调度方法,其特征在于,包括:
对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上;
将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体。
2.根据权利要求1所述的应用于汽车ECU的多核任务调度方法,其特征在于,在所述对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理之前,还包括:
采用智能汽车平台软件中间件对汽车的应用软件组件及各个所述应用软件组件中的各个可运行实体进行建模,以生成对应的数据库描述文件;
对所述数据库描述文件中的各个所述应用软件组件进行分类,并将同类型的所述应用软件组件放在相同的列表容器中。
3.根据权利要求2所述的应用于汽车ECU的多核任务调度方法,其特征在于,所述对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,包括:
将各个所述列表容器中的应用软件组件对应的各个所述可运行实体全部抽取出来;
按照预设的调度点对抽取出的各个所述可运行实体进行排序。
4.根据权利要求3所述的应用于汽车ECU的多核任务调度方法,其特征在于,所述基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上,包括:
基于预设的基于纳什均衡策略,依次将排序的各个所述可运行实体自动映射到对应的进程上。
5.根据权利要求1所述的应用于汽车ECU的多核任务调度方法,其特征在于,所述将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并动生成各个所述调度表对应的工程代码,包括:
根据汽车ECU的各个CUP核各自的核结构数据,将各个所述进程分别绑定至各个所述CUP核上;
根据各个所述CUP核各自对应的所述可运行实体分别确定各个所述CUP核各自对应的超周期,以生成各个所述CPU核各自对应的用于调度可运行实体的调度表;
采用模板化自动渲染生成代码技术提取各个所述调度表的信息并生成对应的结构体数组,以基于所述结构体数组自动生成各个所述调度表对应的工程代码。
6.根据权利要求1所述的应用于汽车ECU的多核任务调度方法,其特征在于,所述基于各个所述调度表及对应的工程代码调度各个所述可运行实体,包括:
根据各个所述调度表中的信息,依次在每个所述可运行实体中的调度点到达时,基于对应的工程代码触发对应的进程进行该可运行实体的调度。
7.根据权利要求6所述的应用于汽车ECU的多核任务调度方法,其特征在于,所述触发对应的进程进行该可运行实体的调度,包括:
触发所述可运行实体对应的进程以进行针对该可运行实体的调度;
或者,
触发所述可运行实体对应的进程并动态调整该进程的优先级,以进行针对该可运行实体的调度。
8.一种应用于汽车ECU的多核任务调度系统,其特征在于,包括:
自动映射模块,用于对汽车软件建模产生的应用软件组件中的各个可运行实体进行抽取处理,并基于预设的映射策略将抽取到的各个所述可运行实体自动映射到对应的进程上;
自动代码生成模块,用于将各个所述进程分别绑定至汽车ECU的多个CUP核上,生成各个所述CPU核各自对应的用于调度可运行实体的调度表,并自动生成各个所述调度表对应的工程代码,以基于各个所述调度表及对应的工程代码调度各个所述可运行实体。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的应用于汽车ECU的多核任务调度方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述的应用于汽车ECU的多核任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211458411.6A CN115809128A (zh) | 2022-11-21 | 2022-11-21 | 应用于汽车ecu的多核任务调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211458411.6A CN115809128A (zh) | 2022-11-21 | 2022-11-21 | 应用于汽车ecu的多核任务调度方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115809128A true CN115809128A (zh) | 2023-03-17 |
Family
ID=85483853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211458411.6A Pending CN115809128A (zh) | 2022-11-21 | 2022-11-21 | 应用于汽车ecu的多核任务调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115809128A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116339957A (zh) * | 2023-05-30 | 2023-06-27 | 北京理工大学 | 一种异构分布式平台混合关键系统的任务调度方法及系统 |
-
2022
- 2022-11-21 CN CN202211458411.6A patent/CN115809128A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116339957A (zh) * | 2023-05-30 | 2023-06-27 | 北京理工大学 | 一种异构分布式平台混合关键系统的任务调度方法及系统 |
CN116339957B (zh) * | 2023-05-30 | 2023-08-11 | 北京理工大学 | 一种异构分布式平台混合关键系统的任务调度方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sangiovanni-Vincentelli et al. | Embedded system design for automotive applications | |
Wandeler | Modular performance analysis and interface-based design for embedded real-time systems | |
US8656102B2 (en) | Method for preloading configurations of a reconfigurable heterogeneous system for information processing into a memory hierarchy | |
CN115809128A (zh) | 应用于汽车ecu的多核任务调度方法及系统 | |
CN115826938B (zh) | 实时操作系统的生成、使用方法及装置、电子设备、介质 | |
US20130103379A1 (en) | Apparatus and method for verifying interoperability between application software and autosar service | |
Peng et al. | Deployment optimization for AUTOSAR system configuration | |
CN109932588B (zh) | 一种航电设备验证测试引擎 | |
CN111052083B (zh) | 用于在启动期间管理服务的调度的方法和装置 | |
Cuomo et al. | Towards a risc-v open platform for next-generation automotive ecus | |
Zimmermann et al. | Model-driven virtual prototyping for real-time simulation of distributed embedded systems | |
Muttillo et al. | HW/SW co-design framework for mixed-criticality embedded systems considering Xtratum-Based SW partitions | |
Gu et al. | Design and implementation of an automotive telematics gateway based on virtualization | |
Möstl et al. | Synthesis of monitors for networked systems with heterogeneous safety requirements | |
Di Natale | Design and development of component-based embedded systems for automotive applications | |
CN109002325B (zh) | 一种程序的睡眠时间控制方法及装置 | |
Chakraborty et al. | Timing and schedulability analysis for distributed automotive control applications | |
Frank et al. | Methods, tools and standards for the analysis, evaluation and design of modern automotive architectures | |
US20230305829A1 (en) | Correctness verification system, method, device, and program | |
Belaggoun et al. | Towards adaptive autosar: a system-level approach | |
Bijlsma et al. | A real-time multi-sensor fusion platform for automated driving application development | |
CN110430227B (zh) | 基于contiki操作系统内核的微功率协议栈系统 | |
CN117957531A (zh) | 用于多个线程的序列监测的方法和设备 | |
Chen et al. | Certification-cognizant real-time scheduling for mixed-criticality tasks in avionics system | |
CN117104252A (zh) | 一种高级辅助驾驶系统处理方法、装置、车辆和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |