定时器装置和提供定时的方法与流程

文档序号:30072179发布日期:2022-05-18 02:20阅读:123来源:国知局
定时器装置和提供定时的方法与流程

1.本技术涉及操作系统中的定时器技术领域,特别涉及定时器装置和提供定时的方法。


背景技术:

2.对于大型操作系统,比如linux操作系统,定时器是一个非常重要的基础组件,它为系统准确运行或者周期性的处理特定任务提供了必要的技术保障。
3.在linux操作系统上,有两种类型的定时器:低精度定时器和高精度定时器。低精度定时器的定时精度和linux系统的心跳(hz)频率相关,比如在一个心跳频率为100hz的系统上,低精度定时器能够提供10豪秒的定时精度。高精度定时器是一种全新的技术实现,不依赖系统心跳,能提供到纳秒级别的定时精度。
4.当这两种定时器开启后,他们会根据应用程序所选用的定时时间,周期性的产生中断,唤醒特定的应用,周期性的处理相关任务。
5.对于大部分的应用场景来说,这是很好的设计,它让系统得以按照准确的节奏去运行。但是在一些特殊的行业中,这种周期性的频繁中断却会带来一些负面作用。因此,在这些行业应用中,直接关闭了系统的高精度定时器,只保留了低精度定时器。
6.由于高精度定时器被关闭,该应用只能依赖低精度定时器。在系统心跳为100hz的系统中,低精度定时器能提供的定时精度只有10豪秒,很难满足应用程序所选用的定时精度。


技术实现要素:

7.本技术提供了定时器装置和提供定时的方法,其能够在实现高度精度定时器的同时又能满足一些特殊应用显示。
8.在第一方面,提供一种定时器装置。该定时器装置包括:显示控制器,被配置为根据设定周期执行显示控制,其中所述显示控制器包括:寄存器模块,被配置为存储基于所述设定周期的定时信息;以及中断模块,被配置为根据所述定时信息产生中断。
9.在一些实施例中,该定时器装置还包括:显示驱动,被配置为控制所述显示控制器的运行,其中所述显示驱动包括:第一系统调用模块,被配置为:根据来自应用的调用信息生成中断模式信息;以及将所述中断模式信息发送至所述显示控制器以设置所述定时信息。
10.在一些实施例中,所述显示驱动还包括:中断服务函数模块,被配置为:当所述中断产生时,记录操作信息,所述操作信息包括由所述显示控制器控制的显示器的当前屏幕刷新到第几行的信息、当前系统时间;以及当所述中断产生时,唤醒所述应用的休眠线程,其中所述应用在发送所述调用信息之后启动所述休眠线程直到被唤醒。
11.在一些实施例中,所述显示驱动还包括:第二系统调用模块,被配置为响应于来自所述应用的用于获取所述操作信息的指令,将所述操作信息发送至所述应用。
12.在一些实施例中,所述定时信息与所述设定周期的整数倍相关联;所述定时信息包括与以下相关联的信息:对于每一帧图像数据发送到显示的第几行时产生中断和/或每发送多少行图像数据即产生一次中断;或者所述中断未被注册至与所述显示控制器相对应的操作系统的定时器框架中。
13.在第二方面,提供一种提供定时的方法。该方法包括:由显示控制器内的寄存器模块存储基于设定周期的定时信息,其中所述显示控制器根据所述设定周期执行显示控制;以及由所述显示控制器内的中断模块根据所述定时信息产生中断。
14.在一些实施例中,该方法还包括:由与所述显示控制器电耦合的显示驱动的第一系统调用模块根据来自应用的调用信息生成中断模式信息,其中所述应用根据所述中断被运行;由所述第一系统调用模块将所述中断模式信息发送至所述显示控制器;以及由所述显示控制器根据所述中断模式信息设置所述定时信息。
15.在一些实施例中,该方法还包括:当所述中断产生时,由所述显示驱动的中断服务函数模块记录操作信息,所述操作信息包括由所述显示控制器控制的显示器的当前屏幕刷新到第几行的信息、当前系统时间;以及当所述中断产生时,由所述中断服务函数模块唤醒所述应用的休眠线程,其中所述应用在发送所述调用信息之后启动所述休眠线程直到被唤醒。
16.在一些实施例中,该方法还包括:由所述显示驱动的第二系统调用模块响应于来自所述应用的用于获取所述操作信息的指令,将所述操作信息发送至所述应用。
17.在一些实施例中,所述定时信息与所述设定周期的整数倍相关联;所述定时信息包括与以下相关联的信息:对于每一帧图像数据发送到显示的第几行时产生中断和/或每发送多少行图像数据即产生一次中断;或者所述中断未被注册至与所述显示控制器相对应的操作系统的定时器框架中。
18.根据本公开的实施例,由于显示控制器是一个天生按照特定周期性去工作的硬件模块,也就是天生具有定时功能,而且很容易达到微秒级的定时精度,比系统的低精度定时器10毫秒的定时精度要高很多。通过在显示控制器中加入中断功能,由其上的中断模块来产生中断,而产生中断的时机则由一个寄存器模块来存储,如此即可模拟出一个精度适当的具有定时器功能的硬件模块,进而解决背景技术中给特定应用提供高精度的定时功能。
19.进一步地,通过在显示驱动中设计第一系统调用模块用于给对应应用软件调用,该应用软件可以通过这个第一系统调用来设置产生中断的模式来控制显示控制器在对应的时间周期和节点上产生中断,以便于用户直接在软件层面根据具体的需求设定中断产生的时机。
20.进一步地,当中断产生时,记录当前系统数据,在后续对应应用软件可通过第二系统调用模块来获取这些系统数据,因为这些系统数据包含了当前屏幕刷新的行数和当前系统时间,如此便能得到一个精度比较高的时间信息。
21.进一步地,因中断模块的中断功能未被注册至操作系统的定时器框架中,故此其可避免出现现有技术直接使用高精度定时器造成的频繁的中断引起系统中其他关键任务被抢占的负面作用。
22.上述发明内容相关记载仅是本技术技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本技术的技术方案,进而可以依据说明书的文字及附图记载的内容予以
实施,并且为了让本技术的上述目的及其它目的、特征和优点能够更易于理解,以下结合本技术的具体实施方式及附图进行说明。
附图说明
23.附图仅用于示出本技术具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本技术的限制。
24.图1是示出根据本公开的实施例的定时器装置的框图;
25.图2是示出根据本公开的实施例的定时器装置的框图;
26.图3是示出根据本公开的实施例的定时器装置的框图;
27.图4是示出根据本公开的实施例的定时器装置的框图;
28.图5是示出根据本公开的实施例的提供定时的方法的流程图;以及
29.图6是示出根据本公开的实施例的用于说明提供定时的方案的示意图。
具体实施方式
30.为详细说明本技术可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本技术的技术方案,因此只作为示例,而不能以此来限制本技术的保护范围。
31.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本技术中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。
32.除非另有定义,本文所使用的技术术语的含义与本技术所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本技术。
33.在本技术的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如a和/或b,表示:存在a,存在b,以及同时存在a和b这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。
34.在本技术中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。
35.在没有更多限制的情况下,在本技术中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。
36.在本技术中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本技术实施例的描述中“多个”的含义是两个以上
(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。
37.如前面提到,周期性的频繁中断在一些行业应用中会带来一些负面作用。例如,在安防领域视频监控相关的产品设计中,录像机希望能持续稳定的接收网络中传递过来的视频流,然后解码显示,或者进一步编码存储,这种长久持续的任务希望能够保持稳定,高效。但是这时候如果有任何其他的应用启动了高精度的定时器,就会给系统带来频繁的定时中断,而这些中断会引起整个系统任务的重新调度和分配,这使得网络录像机的解码或者显示任务存在被打断或者抢占的可能,这是这种应用场景中不希望看到的。
38.在已有技术方案中,在网络录像机产品中直接关闭了系统的高精度定时器,只保留了低精度定时器。然而,这种选择也带来了一定的负面作用。虽然这种应用场景中大部分任务不需要高精度定时器,但是还是有小部分任务有这种需求,比如网络录像机中负责视频显示的应用。目前的网络录像机都希望能支持每秒60帧的高刷新率显示,这就意味着应用要保持每16豪秒更新一帧图像。一般显示任务会把这16豪秒的显示周期做进一步分解,比如前5豪秒做一个阶段的工作,后5个豪秒做一个阶段的工作,在剩下的6豪秒内,要保证把待显示的内容送给系统的显示模块(显示控制器),供显示控制器去显示。由于高精度定时器被关闭,该应用只能依赖低精度定时器,在系统心跳为100hz的系统中,低精度定时器能提供的定时精度只有10豪秒,很难满足上述的定时需求。
39.对于小部分任务,其实是需要高精度定时器的,但是又必须关掉系统的高精度定时器。为了解决至少上述技术问题,本公开的实施例提供了一种定时器装置。根据本公开的实施例,在显示控制器内配置中断模块和寄存器模块。由于显示控制器是一个天生按照特定周期来执行工作的硬件模块,也就是天生具有定时功能,而且很容易达到微秒级的定时精度,比系统的低精度定时器的定时精度要高很多。通过中断模块来执行中断,而产生中断的时机则由一个寄存器模块来存储。以此方式,即可配置精度适当的具有定时器功能的硬件模块,进而能够给特定应用提供高精度的定时功能。
40.下文中将参考示例性实施例并且结合附图详细描述根据本公开的具体实施方式。
41.图1是示出根据本公开的实施例的定时器装置100的框图。如图1所示,定时器装置100包括显示控制器101。所述显示控制器101包括中断模块1011和寄存器模块1012。所述显示控制器101被配置为根据设定周期执行显示控制。所述寄存器模块1012被配置为存储基于所述设定周期的定时信息。所述中断模块1011被配置为根据所述定时信息产生中断。所述寄存器模块1012用于存放产生中断的时机信息。所述中断模块1011用于根据所述寄存器模块1012内产生中断的时机信息产生中断。在一些实施例中,产生中断的时机信息即指的是用来指明需要什么时候产生中断的信息。例如,每一帧图像发送到第几行产生中断和/或每发送多少行数据即产生一次中断。具体如何规定不做限定,可根据实际场景个性化设置。
42.在一些实施例中,所述定时信息与所述设定周期的整数倍相关联。所述定时信息包括与以下相关联的信息:对于每一帧图像数据发送到显示的第几行时产生中断和/或每发送多少行图像数据即产生一次中断。在一些实施例中,所述中断不会被注册至与所述显示控制器相对应的操作系统的定时器框架中。
43.在一些实施例中,寄存器模块1012可以为vcnt(可变范围寄存器计数)寄存器。可以通过应用软件配置这个寄存器的值,这个值控制着显示控制器101向显示器的屏幕发送
显示数据的定时,也就是发送到多少行即产生中断信息。产生中断的模式也可以设置,例如可以设置为在发送当前帧图像数据的时候刷新到第几行产生中断,或者每发送多少行数据即产生一次中断。
44.在本公开的实施例中,显示控制器101可以被配置为接收来自计算机的画面显示信息,将其置入帧存储器,并且按分区驱动方式生成显示屏所需的显示数据和扫描控制时序。此外,显示驱动102可以用来驱动显卡的程序,是硬件所对应的软件。
45.在一些实施例中,显示控制器101按照显示屏幕的分辨率,按照固定的频率逐行地把要显示的像素点发送到屏幕上显示。比如对于1920
×
1080(即1080p)分辨率的屏幕,每显示一帧图像需要显示控制器101按照固定的频率发送1080行的数据。如果图像刷新的频率为60hz,则显示控制器101需要以1000/60/1080=0.016豪秒每行的周期向外发送数据。如果屏幕的分辨率是3840
×
2160(即4k),同样刷新频率为60hz,则显示控制器101需要以1000/60/2160=0.008豪秒每行的周期向外发送数据。
46.因此,显示控制器101是一个天生按照特定周期性去工作的硬件模块,也就是天生具有定时功能,而且很容易达到微秒级的定时精度,比系统的低精度定时器10豪秒的定时精度要高很多。在本公开的实施例中,在芯片设计的时候,就给显示控制器101加入对应的中断功能,而产生中断的时机则可以通过一个寄存器来配置。
47.在一些实施例中,本公开的应用场景可以适用于如背景实施方式中所提及的在网络录像机这种产品中。在该应用场景中需要直接关闭系统的高精度定时器,只保留低精度定时器,然而却存在小部分任务对高精度定时器是有需求的。
48.如以上已经说明的,显示控制器101天生便具有定时功能,再加上在芯片设计的时候,在显示控制器101中加入中断功能,由其上的中断模块1011来执行中断,而产生中断的时机则由一个寄存器模块1012来存储。以此方式,即可配置出一个精度适当的具有定时器功能的硬件模块,进而解决背景技术中给特定应用提供高精度的定时功能。
49.在一些实施例中,为了避免出现高精度定时器频繁的中断引起系统中关键任务被抢占的负面作用,在对应软件的实现上,显示控制器101设计的这种中断模块1011的中断功能并不被注册到操作系统的定时器框架中,而是实现成一个特殊的软件接口给需要这种高精度定时器的应用(比如背景技术中描述的负责视频显示的应用)。
50.图2是示出根据本公开的实施例的定时器装置200的框图。在一些实施例中,如图2所示的定时器装置200与如图1所示的定时器装置100相比不同点在于,所述定时器装置200还包括显示驱动102。所述显示驱动102被配置为控制所述显示控制器101的运行。所述显示驱动102包括第一系统调用模块1021。所述第一系统调用模块1021被配置为根据来自应用的调用信息生成中断模式信息,以及将所述中断模式信息发送至所述显示控制器101以设置所述定时信息。所述应用可以根据所述中断被运行。
51.当这个应用需要高精度定时器的时候,可以通过第一系统调用模块1021(比如通过ioctl)启动该定时器,并设置每一帧图像发送到第几行的时候产生中断。中断产生后该应用会收到对应的通知,就知道定时的时间到了,然后处理需要处理的工作。在一些实施例中,通过在linux内核drm显示驱动102中设计第一系统调用模块1021用于给对应应用软件调用。该应用软件可以通过这个第一系统调用来设置产生中断的模式来控制显示控制器101在对应的时间周期和节点上产生中断,以便于用户直接在软件层面根据具体的需求设
定中断产生的时机。然后该应用软件启动一个可休眠的线程等待被这个定时服务唤醒。
52.图3是示出根据本公开的实施例的定时器装置300的框图。在一些实施例中,如图3所示的定时器装置300与如图2所示的定时器装置200相比不同点在于,所述显示驱动102还包括中断服务函数模块1022。所述中断服务函数模块1022被配置为当所述中断产生时记录操作信息。所述操作信息包括由所述显示控制器控制的显示器的当前屏幕刷新到第几行的信息、当前系统时间。此外,所述中断服务函数模块1022被配置为当所述中断产生时唤醒所述应用的休眠线程。所述应用在发送所述调用信息之后启动所述休眠线程直到被唤醒。
53.在一些实施例中,所述中断服务函数模块1022用于当中断产生时记录当前系统数据。所述系统数据包括但不限于:当前屏幕刷新到第几行、当前系统时间。所述中断服务函数模块1022还用于当中断产生时唤醒对应应用软件的休眠线程。在一些实施例中,在linux内核drm显示驱动102中实现对应的中断服务函数。当对应的定时中断产生的时候,该中断服务函数会把当前屏幕刷新到第几行以及当前的系统时间等信息记录在一个特定构造的数据结构里面。同时该中断服务函数唤醒对应应用的休眠线程。
54.图4是示出根据本公开的实施例的定时器装置400的框图。在一些实施例中,如图4所示的定时器装置400与如图3所示的定时器装置300相比不同点在于,所述显示驱动102还包括第二系统调用模块1023。所述第二系统调用模块1023被配置为响应于来自所述应用的用于获取所述操作信息的指令,将所述操作信息发送至所述应用。
55.在一些实施例中,所述第二系统调用模块1023用于响应对应应用软件获取系统数据指令,发送所述系统数据至对应应用软件。在一些实施例中,在linux内核drm显示驱动102中实现另外一个ioctl系统调用给对应的应用软件。当中断产生时,记录当前系统数据,在后续对应应用软件可通过第二系统调用模块1023来获取这些系统数据,因为这些系统数据包含了当前屏幕刷新的行数和当前系统时间,如此便能得到一个精度比较高的时间信息。
56.图5是示出根据本公开的实施例的提供定时的方法500的流程图。如图5所示,在本实施例中,该方法500包括以下步骤s501和步骤s502。
57.在步骤s501,由显示控制器内的寄存器模块存储基于设定周期的定时信息,其中所述显示控制器根据所述设定周期执行显示控制。显示控制器内的中断模块获取显示控制器内的寄存器模块存放的产生中断的时机信息。
58.在步骤s502,由所述显示控制器内的中断模块根据所述定时信息产生中断。显示控制器内的中断模块根据所述产生中断的时机信息产生中断。产生中断的时机信息即指的是用来指明需要什么时候产生中断的信息,例如每一帧图像发送到第几行产生中断和/或每发送多少行数据即产生一次中断。具体如何规定不做限定,可根据实际场景个性化设置。寄存器模块可以为vcnt寄存器。
59.在一些实施例中,该方法500还可以包括由与所述显示控制器电耦合的显示驱动的第一系统调用模块根据来自应用的调用信息生成中断模式信息,并且由所述第一系统调用模块将所述中断模式信息发送至所述显示控制器。此外,由所述显示控制器根据所述中断模式信息设置所述定时信息。所述应用根据所述中断被运行。
60.在一些实施例中,对应应用软件通过显示驱动的第一系统调用模块对显示控制器的寄存器模块内存放的产生中断的时机信息进行设置。即可以通过软件配置这个寄存器的
值,这个值控制着显示控制器向屏幕上送显示数据的时候,发送到多少行即产生中断信息。产生中断的模式也可以设置,如上所说,可以设置为在发送当前帧图像数据的时候刷新到第几行产生中断,或者每发送多少行数据即产生一次中断。在一些实施例中,通过在linux内核drm显示驱动中设计第一系统调用模块用于给对应应用软件调用。该应用软件可以通过这个第一系统调用来设置产生中断的模式来控制显示控制器在对应的时间周期和节点上产生中断,以便于用户直接在软件层面根据具体的需求设定中断产生的时机。然后该应用软件启动一个可休眠的线程等待被这个定时服务唤醒。
61.如以上已经说明的,显示控制器天生便具有定时功能,再加上在芯片设计的时候,在显示控制器中加入中断功能,由其上的中断模块来执行中断,而产生中断的时机则由一个寄存器模块来存储。以此方式,即可模拟出一个精度适当的具有定时器功能的硬件模块,进而解决背景技术中给特定应用提供高精度的定时功能。
62.在一些实施例中,为了避免出现高精度定时器频繁的中断引起系统中关键任务被抢占的负面作用,在对应软件的实现上,显示控制器设计的这种中断模块的中断功能并不被注册到操作系统的定时器框架中,而是实现成一个特殊的软件接口给需要这种高精度定时器的应用(比如背景技术中描述的负责视频显示的应用)。
63.图6是示出根据本公开的实施例的用于说明提供定时的方案的示意图。如图6所示,图形应用将调用信息ioctl发送给drm驱动,并且drm驱动基于此生成中断模式信息vcnt。drm驱动将中断模式信息vcnt发送给显示控制器,使得显示控制器根据通过图形应用而配置的值来设置定时信息。图形应用通过第一系统调用模块发送用于产生中断的时机信息至drm驱动。显示控制器获取信息vcnt内的中断的时机信息。
64.在定时信息被设置之后,显示控制器基于该定时信息产生中断。当中断的时间条件达到时,显示控制器产生中断。drm驱动从显示控制器接收该中断,并且基于此发送vcnt事件。该vcnt事件将唤醒处于睡眠状态的图形应用,使得图形应用运行,以执行应用操作。应用软件中休眠的应用线程被唤醒后,就说明定时的时间到了,则可以根据需求做所需的工作。
65.在一些实施例中,该方法500还可以包括当所述中断产生时,由所述显示驱动的中断服务函数模块记录操作信息。所述操作信息包括由所述显示控制器控制的显示器的当前屏幕刷新到第几行的信息、当前系统时间。此外,当所述中断产生时,由所述中断服务函数模块唤醒所述应用的休眠线程。所述应用在发送所述调用信息之后启动所述休眠线程直到被唤醒。
66.在一些实施例中,当中断产生时,显示驱动的中断服务函数模块记录当前系统数据并唤醒对应应用软件的休眠线程。同时当中断产生时,会唤醒对应应用软件的休眠线程。在一些实施例中,在linux内核drm显示驱动中实现对应的中断服务函数。当对应的定时中断产生的时候,该中断服务函数会把当前屏幕刷新到第几行以及当前的系统时间等信息记录在一个特定构造的数据结构里面,同时该中断服务函数唤醒对应应用的休眠线程。
67.在一些实施例中,该方法500还可以包括由所述显示驱动的第二系统调用模块响应于来自所述应用的用于获取所述操作信息的指令,将所述操作信息发送至所述应用。
68.在一些实施例中,显示驱动的第二系统调用模块响应对应应用软件获取系统数据指令,发送所述系统数据至对应应用软件。在一些实施例中,在linux内核drm显示驱动中实
现另外一个ioctl系统调用给对应的应用软件。当中断产生时,记录当前系统数据,在后续对应应用软件可通过第二系统调用模块来获取这些系统数据,因为这些系统数据包含了当前屏幕刷新的行数和当前系统时间,如此便能得到一个精度比较高的时间信息。
69.最后需要说明的是,尽管在本技术的说明书文字及附图中已经对上述各实施例进行了描述,但并不能因此限制本技术的专利保护范围。凡是基于本技术的实质理念,利用本技术说明书文字及附图记载的内容所作的等效结构或等效流程替换或修改产生的技术方案,以及直接或间接地将以上实施例的技术方案实施于其他相关的技术领域等,均包括在本技术的专利保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1