掌桥专利:专业的专利平台
掌桥专利
首页

物理定时器共享方法、电子设备及可读存储介质

文献发布时间:2024-04-18 19:52:40


物理定时器共享方法、电子设备及可读存储介质

技术领域

本申请涉及嵌入式软件开发领域,具体而言,涉及一种物理定时器共享方法、电子设备及可读存储介质。

背景技术

当前在嵌入式系统中,运行操作系统的处理核心能够利用软件定时器来实现程序的定时功能,这种方式功耗高。但不搭载操作系统的处理核心大多数情况下只能利用物理定时器驱动定时任务。然而,在复杂的多核嵌入式系统中,往往存在物理定时器的数量不满足多核应用需求的问题。比如,在AMP(Asymmetric Multi-processing)架构下,每个独立处理核心对定时器这种重要外设资源都有各自不同的使用规则,需要单独使用一个物理定时器。

发明内容

本申请实施例提供了一种物理定时器共享方法、电子设备和可读存储介质,其能够解决多核系统中物理定时数量不满足多核应用需求的问题。

本申请的实施例可以这样实现:

第一方面,本申请实施例提供一种物理定时器共享方法,应用于电子设备,所述电子设备包括多核处理器及至少一个物理定时器,所述多核处理器包括第一处理核心及第二处理核心,所述至少一个物理定时器包括第一物理定时器,所述第一物理定时器与所述第一处理核心连接,所述方法包括:

所述第二处理核心在有第一定时需求的情况下,向所述第一处理核心发送分配请求;

所述第一处理核心根据所述分配请求,从与所述第一物理定时器对应的第一虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第一定时需求对应的第一目标虚拟定时器;

在所述第一目标虚拟定时器基于所述第一物理定时器生成第一虚拟定时中断信号的情况下,所述第一处理核心将所述第一虚拟定时中断信号发送给所述第二处理核心,以驱动相应的任务。

在可选的实施方式中,所述分配请求中包括定时器的第一数量及各定时器的中断频率要求,所述第一处理核心根据所述分配请求,从与所述第一物理定时器对应的第一虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第一定时需求对应的第一目标虚拟定时器,包括:

所述第一处理核心根据所述第一数量,从所述第一虚拟定时器队列中选出待实例化的第一虚拟定时器;

所述第一处理核心根据各定时器的所述中断频率要求,对各所述第一虚拟定时器进行实例化,以得到所述第一目标虚拟定时器。

在可选的实施方式中,所述第二处理核心在有第一定时需求的情况下,向所述第一处理核心发送分配请求,包括:

所述第二处理核心在有定时需求时,根据预先配置的处理核心与物理定时器的对应关系,确定出作为所述分配请求的发送对象的所述第一处理核心;

向所述第一处理核心发送所述分配请求。

在可选的实施方式中,所述第二处理核心包括虚拟定时器封装单元,所述方法还包括:

所述第二处理核心接收所述第一虚拟定时中断信号;

所述第二处理核心利用所述虚拟定时器将所述第一虚拟定时中断信号封装为物理定时器的中断信号,以驱动相应的任务。

在可选的实施方式中,所述第一处理核心包括核间通信接口及核间中断接口,所述第一处理核心通过所述核间通信接口接收所述分配请求,所述第一虚拟定时中断信号通过所述核间中断接口被发送给所述第二处理核心;和/或,

所述第一虚拟定时器队列具有控制接口及中断接口,所述第一处理核心通过所述控制接口对所述第一虚拟定时器队列中的虚拟定时器进行控制,通过所述中断接口接收到虚拟定时中断信号。

在可选的实施方式中,所述方法还包括:

预先将所有所述物理定时器进行统一封装,其中,虚拟定时器队列基于封装后的物理定时器生成。

在可选的实施方式中,所述方法还包括:

所述第一处理核心在有第二定时需求时,根据所述第二定时需求,从所述第一虚拟定时器队列或者连接的其他物理定时器对应的虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第二定时需求对应的第二目标虚拟定时器;

在所述第二目标虚拟定时器基于对应的物理定时器生成第二虚拟定时中断信号的信号下,所述第一处理核心基于该第二虚拟定时中断信号驱动相应的任务。

在可选的实施方式中,所述第一处理核心在有第二定时需求时,根据所述第二定时需求,从所述第一虚拟定时器队列或者连接的其他物理定时器对应的虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第二定时需求对应的第二目标虚拟定时器,包括:

所述第一处理核心根据预先配置的处理核心与物理定时器的对应关系,确定出与所述第二定时需求对应的目标物理定时器;

从所述目标物理定时器对应的虚拟定时器队列中选出虚拟定时器进行实例化。

第二方面,本申请实施例提供一种电子设备,包括多核处理器、存储器及至少一个物理定时器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述多核处理器可执行所述机器可执行指令以实现前述实施方式中任意一项所述的物理定时器多核共享方法。

第三方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述实施方式中任意一项所述的物理定时器多核共享方法。

本申请实施例提供的物理定时器共享方法、电子设备及可读存储介质,第二处理核心在有第一定时需求的情况下,向与第一物理定时器连接的第一处理核心发送分配请求;第一处理核心基于该分配请求,从所连接的第一物理定时器对应的第一虚拟定时器队列中选出虚拟定时器进行实例化,以得到与该第一定时需求对应的第一目标虚拟定时器;在第一目标虚拟定时器基于第一物理定时器生成第一虚拟定时中断信号的情况下,第一处理核心将该第一虚拟定时中断信号发送给第二处理核心,以驱动相应的任务。本申请实施例通过将一个普通的物理定时器封装成多个虚拟定时器,供给有定时需求的处理核心同时使用,从而提高了对物理定时器的使用效率。该方式能够解决多核系统中,物理定时器资源不够的问题,使得可以不必为了因为有很多时间驱动的任务需求而被迫选择具有软定时功能的操作系统,可以在芯片选型时有更多的选择,不必因为物理定时器的数量而选择性价比相对较低的芯片,并且能够让资源有限的嵌入式系统软件开发设计更加灵活。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的电子设备100的方框示意图;

图2为本申请实施例提供的物理定时器共享方法的流程示意图之一;

图3为本申请实施例提供的物理定时器共享方法的流程示意图之二;

图4为本申请实施例提供的物理定时器与虚拟定时器队列的示意图;

图5为图2中步骤S110包括的子步骤的流程示意图;

图6为本申请实施例提供的核间调用虚拟定时器的示意图;

图7为图2中步骤S120包括的子步骤的流程示意图;

图8为本申请实施例提供的物理定时器共享方法的流程示意图之三;

图9为本申请实施例提供的物理定时器共享方法的流程示意图之四;

图10为本申请实施例提供的软件需求示意图;

图11为基于图10所示需求搭建的系统架构示意图。

图标:100-电子设备;110-存储器;120-处理器;130-通信单元。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前在嵌入式系统中,运行操作系统的处理核心能够利用软件定时器来实现程序的定时功能,这种方式功耗高。但不搭载操作系统的处理核心大多数情况下只能利用物理定时器驱动定时任务,并且一个处理核心中只能存在一个任务。由此可知,在裸机(即无操作系统的设备)中运行时,由于没有操作系统提供软件定时器服务,在需要时间驱动的软件架构下对硬件定时器的需求就变得特别高。

为了解决多核系统中定时器外设数量不足的问题,本申请实施例提供了一种物理定时器共享方法、电子设备及可读存储介质,基于核间通信技术调用基于物理定时器生成的虚拟定时器,从而满足定时需求,并且无需设备中一定搭载有操作系统,既可以降低功耗,同时可以提高物理定时器的使用效率。

值得说明的是,针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得到的结果,因此,上述问题的发现过程以及下文中本申请实施例针对上述问题所提出的解决方案,都应是发明人在本申请过程中对本申请做出的贡献。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。

请参照图1,图1为本申请实施例提供的电子设备100的方框示意图。所述电子设备100可以是,但不限于,电脑、服务器等。所述电子设备100包括存储器110、处理器120及通信单元130。所述存储器110、处理器120以及通信单元130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。

其中,存储器110用于存储程序或者数据。所述存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。

处理器120为多核处理器,即包括多个处理核心。处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。比如,存储器110中存储有物理定时器共享装置,所述物理定时器共享装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块。所述处理器120通过运行存储在存储器110内的软件程序以及模块,如本申请实施例中的物理定时器共享装置,从而执行各种功能应用以及数据处理,即实现本申请实施例中的物理定时器共享方法。

通信单元130用于通过网络建立所述电子设备100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。

应当理解的是,图1所示的结构仅为电子设备100的结构示意图,所述电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请参照图2,图2为本申请实施例提供的物理定时器共享方法的流程示意图之一。所述方法可以用于上述电子设备100,所述电子设备100包括多核处理器及至少一个物理定时器,所述多核处理器包括至少一个第一处理核心及至少一个第二处理核心,所述至少一个物理定时器包括第一物理定时器,所述第一物理定时器与所述第一处理核心连接。所述第二处理核心可以为未连接有物理定时器的处理核心。下面对物理定时器共享方法的具体流程进行详细阐述。在本实施例中,所述方法可以包括步骤S110~步骤S130。

步骤S110,所述第二处理核心在有第一定时需求的情况下,向所述第一处理核心发送分配请求。

在本实施例中,所述第二处理核心中有任务存在定时需求时,所述第二处理核心可以基于该需求确定出第一定时需求。所述分配请求基于所述第一定时需求确定,所述分配请求用于描述所述第二处理核心中的任务需要的定时器。所述第二处理核心可以将该分配请求发送给可提供虚拟定时器的第一处理核心。

步骤S120,所述第一处理核心根据所述分配请求,从与所述第一物理定时器对应的第一虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第一定时需求对应的第一目标虚拟定时器。

所述第一处理核心在接收到所述第一处理核心的分配请求的情况下,可以从用于共享的第一物理定时器对应的第一虚拟定时器队列中选出一定数量的虚拟定时器进行实例化,从而得到与所述第一定时需求对应的第一目标虚拟定时器。其中,所述第一虚拟定时器队列中包括多个虚拟定时器,所述第一虚拟定时器队列基于所述第一物理定时器生成。

步骤S130,在所述第一目标虚拟定时器基于所述第一物理定时器生成第一虚拟定时中断信号的情况下,所述第一处理核心将所述第一虚拟定时中断信号发送给所述第二处理核心,以驱动相应的任务。

各所述第一目标虚拟定时器基于所述第一物理定时器的中断产生相应的第一虚拟定时中断信号。在有第一目标虚拟定时器产生第一虚拟定时中断信号的情况下,所述第一处理核心可以将该第一虚拟定时中断信号发送给所述第二处理核心,以驱动该第一虚拟定时中断信号对应的任务。

如此,通过将一个普通的物理定时器封装成多个虚拟定时器,并结合核间通信技术进行虚拟定时器的调用,即可满足多核应用需求,并且需要设备中一定搭载有操作系统,既可以降低功耗,同时可以提高物理定时器的使用效率。

在本实施例中,可以预先针对各物理定时器,将各物理定时器封装为虚拟定时器队列,一个物理定时器对应的虚拟定时器队列中的虚拟定时器在实例化基于该物理定时器的中断产生虚拟定时中断信号。

可选地,作为一种可能的方式,可以直接针对各物理定时器进行封装,从而得到与各物理定时器对应的虚拟定时器队列。

作为外设的物理定时器种类众多,若直接针对不同类型的物理定时器通过封装得到虚拟定时器队列较为不便。可选地,作为另一种可能的实现方式,为提高算法的复用及便于开发人员开发等,可以如图3所示先对物理定时器进行处理。请参照图3,图3为本申请实施例提供的物理定时器共享方法的流程示意图之二。在本实施例中,在步骤S110之前,所述方法还可以包括步骤S101。

步骤S101,预先将所有所述物理定时器进行统一封装。

在本实施例中,可以首先对所有的物理定时器进行统一封装。比如,存在A类定时器0、A类定时器1、B类定时器0;如图4所示,在经过统一封装后则为:定时器0、定时器1、定时器2,便于后续直接基于定时器0生成虚拟定时器0-1、0-2等,基于定时器1生成虚拟定时器1-1、1-2等,以及基于定时器2生成虚拟定时器2-1、2-2等。即,虚拟定时器队列是基于封装后的物理定时器生成的。

可选地,各物理定时器对应的虚拟定时器队列,可以是预先基于物理定时器统一生成的,也可以是物理定时器所连接的处理核心直接预先生成的,还可以是可使用某物理定时器的处理核心中的最早有定时需求的处理核心使物理定时器所连接的处理核心生成的。值得说明的是,上述方式仅为举例说明,虚拟定时器队列的具体生成时间及生成方式可以结合实际需求设置,在此不进行具体限定。

其中,各物理定时器对应的虚拟定时器队列中包括的虚拟定时器的数量可以相同,也可以不同,具体可以结合实际需求设置。可以根据一般情况下的定时需求的数量确定出物理定时器对应的虚拟定时器队列中虚拟定时器的数量。为避免虚拟定时器不满足需求,虚拟定时器队列中虚拟定时器的数量可以设置地比较大。

可选地,作为一种可能的示例,所述第二处理核心在有第一定时需求的情况下,可以从连接有物理定时器的处理核心中选出一个处理核心作为本次的请求发送对象,即确定出第一处理核心。然后,可将基于所述第一定时需求确定的分配请求发送给所述第一处理核心。

可选地,作为另一种可能的示例,可如图5所述方式确定出分配请求的发送对象。请参照图5,图5为图2中步骤S110包括的子步骤的流程示意图。在本实施例中,步骤S110可以包括子步骤S111~子步骤S112。

子步骤S111,所述第二处理核心在有第一定时需求时,根据预先配置的处理核心与物理定时器的对应关系,确定出作为所述分配请求的发送对象的所述第一处理核心。

子步骤S113,向所述第一处理核心发送所述分配请求。

可预先配置好处理核心与物理定时器的对应关系,该对应关系表示某处理核心可以使用基于所对应的物理定时器生成的虚拟定时器。该对应关系可以是人为预先配置好的。比如,如4所示,定时器0与处理核心0存在对应关系,定时器1与处理核心1及处理核心2存在对应关系,定时器2与处理核心3存在对应关系,则处理核心0可以使用基于定时器0生成的虚拟定时器0-1、0-2、……、0-n,处理核心1、2可以使用基于定时器1生成的虚拟定时器1-1、1-2、……、1-n,处理核心3可以使用基于定时器2生成的虚拟定时器2-1、2-2、……、2-n。

所述第二处理核心在有第一定时需求的情况下,则可以根据预先配置好的处理核心与物理定时器的对应关系,确定自身对应的处理核心,并将该处理核心作为所述第一处理核心。然后,将基于所述第一定时需求确定的分配请求发送给所述第一处理核心。

可选地,作为一种可能的实现方式,所述第一处理核心包括核间通信接口及核间中断接口,所述第一处理核心通过所述核间通信接口接收所述分配请求,所述第一虚拟定时中断信号通过所述核间中断接口被发送给所述第二处理核心。即,所述核间通信接口用于传输控制信号等,所述核间中断接口用于传输中断信号。

如图6所示,处理核心1与物理定时器0连接,处理核心1包括核间终端接口及核间中断接口;处理核心0不与物理定时器连接。处理核心0在应用有定时需求的情况下,通过处理核心1的核间通信连接向处理核心1发送分配请求,以调用处理核心1中基于物理定时器0生成的虚拟定时器队列中的虚拟定时器。在被调用的虚拟定时器生成了中断信号的情况下,处理核心1通过核间中断接口将生成的中断信号发送给处理核心0,以驱动应用。

为减少生成的用于核间传输信息的接口数量,连接有物理定时器的处理核心可仅包括一个核间通信接口及一个核间中断接口,即设备包括的核间通信接口的数量、核间中断接口的数量可以等于连接有物理定时器的处理核心的数量。

在本实施例中,所述分配请求中包括定时器的第一数量及各定时器的中断频率要求。请参照图7,图7为图2中步骤S120包括的子步骤的流程示意图。在本实施例中,步骤S120可以包括子步骤S121~子步骤S122。

子步骤S121,所述第一处理核心根据所述第一数量,从所述第一虚拟定时器队列中选出待实例化的第一虚拟定时器。

子步骤S122,所述第一处理核心根据各定时器的所述中断频率要求,对各所述第一虚拟定时器进行实例化,以得到所述第一目标虚拟定时器。

在本实施例中,所述第一处理核心可从所述分配请求中获得第一数量及中断频率要求。所述第一数量为满足所述第二处理核心的第一定时需求所需的虚拟定时器数量。所述第一处理核心可以从所述第一虚拟定时器队列中未实例化的虚拟定时器中,选出所述第一数量个虚拟定时器,作为待实例化的第一虚拟定时器。然后,根据第二处理核心需要的各定时器对应的中断频率要求,对各第一虚拟定时器进行实例化,从而得到第一目标虚拟定时器。

可选地,作为一种可能的实现方式,所述第一虚拟定时器队列具有控制接口及中断接口。所述第一处理核心通过所述控制接口对所述第一虚拟定时器队列中的虚拟定时器进行控制,通过所述中断接口接收到虚拟定时中断信号。即每一个虚拟定时器队列对外具有统以的控制接口及中断接口。如此,针对一个虚拟定时器队列,仅通过该虚拟定时器队列的程序接口(包括控制接口及中断接口),即可控制虚拟定时器队列中的各虚拟定时器的中断频率,并获得相应的虚拟定时中断信号。

如图6所示,基于物理定时器0生成的虚拟定时器队列具有一个控制接口及一个中断接口,处理核心1可通过该控制接口对虚拟定时器队列中的虚拟定时器进行控制,并通过该中断接口获得虚拟定时器生成的虚拟定时中断信号。

可选地,所述第一处理核心在实例化之后,可以将各第一目标虚拟定时器的标识及对应的中断频率要求发送给所述第二处理核心。所述第二处理核心根据任务与中断频率要求的对应关系、以及第一目标虚拟定时器的标识与中断频率要求的对应关系,得到并保存任务与虚拟定时器的标识的对应关系。如此,后续第一处理核心在发送第一虚拟定时中断信号时,通过在该信号中携带虚拟定时器标识,即可使得第二处理核心确定出要驱动的任务。

所述第一目标虚拟定时器可对所对应的物理定时器的物理中断进行计数,在满足自身的中断频率要求,则生成一个第一虚拟定时中断信号。所述第一处理核心将该第一虚拟定时中断信号发送给所述第二处理核心,以驱动相应的任务。

请参照图8图8为本申请实施例提供的物理定时器共享方法的流程示意图之三。在本实施例中,所述第二处理核心包括虚拟定时器封装单元,在步骤S130之后,所述方法还可以包括步骤S140~步骤S150。

步骤S140,所述第二处理核心接收所述第一虚拟定时中断信号。

步骤S150,所述第二处理核心利用所述虚拟定时器封装单元将所述第一虚拟定时中断信号封装为物理定时器的中断信号,以驱动相应的任务。

所述第一虚拟定时中断信号此时为核间中断信号。所述第二处理核心在接收到第一虚拟定时中断信号的情况下,可以利用所述虚拟定时器封装单元将其识别为一个物理定时器的中断信号,并执行相应的中断响应函数。

如图6所示,处理核心1将一个虚拟定时器生成的虚拟定时中断信号发送给处理核心0,处理核心0将该核间中断信号识别为一个物理定时器的中断信号,从而驱动相应的任务。

请参照图9,图9为本申请实施例提供的物理定时器共享方法的流程示意图之四。在本实施例中,所述方法还可以包括步骤S160及步骤S170。

步骤S160,所述第一处理核心在有第二定时需求时,根据所述第二定时需求,从所述第一虚拟定时器队列或者连接的其他物理定时器对应的虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第二定时需求对应的第二目标虚拟定时器。

步骤S170,在所述第二目标虚拟定时器基于对应的物理定时器生成第二虚拟定时中断信号的信号下,所述第一处理核心基于该第二虚拟定时中断信号驱动相应的任务。

所述第一处理核心在自身存在第二定时需求时,可以根据该第二定时需求,从自身对应的物理定时器所对应的虚拟定时器队列中选出虚拟定时器进行实例化,以得到与所述第二定时需求对应的第二目标虚拟定时器。其中,所述第二定时需求为所述第一处理核心的定时需求,所述第一定时需求为所述第二处理核心的定时需求。

可选地,作为一种可能的实现方式,所述第一处理核心可以从自身所连接的物理定时器中随机选择一个物理定时器,然后将选择的物理定时器所对应的虚拟定时器队列作为第二虚拟定时器队列,并从该第二虚拟定时器队列中选出待实例化的第二虚拟定时器。

可选地,作为另一种可能的实现方式,所述第一处理核心可以根据预先配置的处理核心与物理定时器的对应关系,确定出自身对应的物理定时器,并将该物理定时器作为与所述第二定时需求对应的目标物理定时器,将目标物理定时器对应的虚拟定时器队列作为第二虚拟定时器队列。然后,从所述第二虚拟定时器队列中选出第二虚拟定时器进行实例化。

在选出第二虚拟定时器的情况下,可根据所述第二定时需求对应的虚拟定时器的第二数量及中断频率要求,对第二虚拟定时器进行实例化,从而得到与第二定时需求匹配的第二目标虚拟定时器。

所述第一处理核心可以保存第二虚拟定时器的标识与任务的对应关系。在第二目标虚拟定时器基于所对应的物理定时器的物理中断产生第二虚拟定时中断信号的情况下,所述第一处理核心可以根据保存的第二虚拟定时器的标识与任务的对应关系、以及产生第二虚拟定时中断信号的虚拟定时器的标识,确定出要驱动的任务,进而驱动相应的任务。如此,通过核内共享物理定时器,即可满足核内的多定时需求。

值得说明的是,所述第一处理核心中的任务可以使用的虚拟定时器与第二处理核心中的任务可以使用的虚拟定时器可以位于同一个虚拟定时器队列,也可以位于不同的虚拟定时器队列,具体可以结合实际需求确定。另外,可以一个或多个第二处理核心调用所述第一处理核心所连接的第一物理定时器对应的第一虚拟定时器队列中的虚拟定时器。上述方案可以应用于搭载有操作系统、但不使用操作系统提供软件定时服务的设备上,也可以应用于未搭载有操作系统的设备上。

在本实施例中,将物理定时器进行统一封装,进而将每一个物理定时器拆分成一组虚拟定时器队列,每一组定时器队列对外具有统一的控制接口及中断接口。而每一个独立的虚拟定时器的中断都是基于物理定时中断触发,但根据使用者的不同会进行分别的中断转发。通过虚拟定时器队列的控制接口,可以控制每个虚拟定时器的中断频率。

其中,基于共享的虚拟定时器的软件包括两部分:定时中断信号发生侧与信号接收侧。发生侧的软件主要功能封装物理定时器为虚拟定时器,并将产生的中断信号发送给接收侧。接收侧的软件主要功能是基于保存的任务与虚拟定时器的对应关系,将初始化时任务绑定的对应中断信号识别为一个虚拟定时器信号,用于驱动处理核心内的定时任务。

由于虚拟定时器的使用者(即任务)根据使用方式不同又可以分为核内调用和核间调用。核内使用虚拟定时器时,使用者可按任务需求初始化虚拟定时器,并分配到基于物理定时器生成的定时中断。核间调用时,虚拟定时器的配置与中断信号都要通过核间通信进行转发。如6所示,控制指令通过核间通信接口经由处理核心0发送至处理核心1实例化一个虚拟定时器,虚拟定时器的中断由物理定时器中断产生,并经过核间中断接口转发给处理核心0,在处理核心0的虚拟定时器wrapper中将其识别为一个定时器中断并执行相应的中断响应函数。

由此可知,本申请实施例通过将一个普通物理定时器封装成多个虚拟定时器,同时供给一个或者多个处理核心同时使用,从而利用软件方法提高了嵌入式系统对物理定时器的使用效率。该方式解决了多核系统中,一个物理定时器只能在同一段时间内为同一个处理核心服务的问题,同时也解决了裸机系统中无法使用软件定时器,对硬件定时器数量需求增加的问题。

下面以一个具有3个处理核心、两个公共定时器外设的嵌入式系统为例,结合图10及图11,对上述物理定时器共享方法进行举例说明。

该嵌入式系统的软件需求如图10所示:处理核心0中有任务1~3,其中,任务1的驱动方式为10s定时,任务2的驱动方式为60s定时,任务3的驱动方式为3600ms定时;处理核心1中有任务4,任务4中的驱动方式为1s定时;处理核心2中有任务5,任务5的驱动方式为10ms定时。任务1-5是不同的任务。

由于实时性和安全性的要求,三个处理核心均未搭载任何操作系统,因此无法使用系统的软件定时器。3个处理核心处理5个时间驱动任务,2个硬件定时器无法直接用传统方法实现。在应用上述物理定时器共享方法时,可搭建出图11所示的系统架构。

其中,处理核心0此时作为主控核心。主控核心为可与其他处理核心共享自身所连接的物理定时器的处理核心。可将两个仅有的硬件定时器分为两组,一组供处理核心0内部使用,另一组供处理核心1&处理核心2使用。

组别为0的定时器通过内部配置产生三个源于物理定时器中断的虚拟定时中断信号,分别用于触发任务1、2、3。

组别为1的定时器通过核间通信分别由处理核心1与处理核心2实例化两个虚拟定时器,处理核心1根据任务表中需要将虚拟定时器1-1配置为1s,虚拟定时器1-1通过定时器1的物理中断进行计数,每1s产生一个核间中断给处理核心1,该核间中断在处理核心1中通过虚拟定时器wrapper封装为一个定时器中断,驱动任务4运行。同理,虚拟定时器1-2每10ms产生一次核间中断,并将中断信号发送给处理核心2驱动任务5。

如此,在物理定时器资源不足、只在一个处理核心或部分处理核心下设置物理定时器时,通过将物理定时器转化成多个虚拟定时器,核间、核内共享虚拟定时器,可有效解决物理定时器资源不足的问题。

本申请实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的物理定时器共享方法。

综上所述,本申请实施例提供一种物理定时器共享方法、电子设备及可读存储介质,第二处理核心在有第一定时需求的情况下,向与第一物理定时器连接的第一处理核心发送分配请求;第一处理核心基于该分配请求,从所连接的第一物理定时器对应的第一虚拟定时器队列中选出虚拟定时器进行实例化,以得到与该第一定时需求对应的第一目标虚拟定时器;在第一目标虚拟定时器基于第一物理定时器生成第一虚拟定时中断信号的情况下,第一处理核心将该第一虚拟定时中断信号发送给第二处理核心,以驱动相应的任务。本申请实施例通过将一个普通的物理定时器封装成多个虚拟定时器,供给有定时需求的处理核心同时使用,从而提高了对物理定时器的使用效率。该方式能够解决多核系统中,物理定时器资源不够的问题,使得可以不必为了因为有很多时间驱动的任务需求而被迫选择具有软定时功能的操作系统,可以在芯片选型时有更多的选择,不必因为物理定时器的数量而选择性价比相对较低的芯片,并且能够让资源有限的嵌入式系统软件开发设计更加灵活。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

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

以上所述仅为本申请的可选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 引导电子设备系统开机的方法,电子设备,可读存储介质
  • 模态框构建方法、装置、电子设备、计算机可读存储介质
  • 日志信息处理方法、装置、电子设备及可读存储介质
  • 电子设备、音量调节方法及装置、计算机可读存储介质
  • 路线规划方法、装置、电子设备及可读存储介质
  • 定时器的处理方法、装置、电子设备及可读存储介质
  • 定时器调整方法、装置、电子设备和计算机可读存储介质
技术分类

06120116332904