CN117667342A - 嵌入式rtos的灵活调度方法、设备和存储介质 - Google Patents
嵌入式rtos的灵活调度方法、设备和存储介质 Download PDFInfo
- Publication number
- CN117667342A CN117667342A CN202311637575.XA CN202311637575A CN117667342A CN 117667342 A CN117667342 A CN 117667342A CN 202311637575 A CN202311637575 A CN 202311637575A CN 117667342 A CN117667342 A CN 117667342A
- Authority
- CN
- China
- Prior art keywords
- time
- task
- timer
- current
- determining
- 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
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000000737 periodic effect Effects 0.000 claims abstract description 104
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种嵌入式RTOS的灵活调度方法、设备和存储介质,所述方法包括:在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,所述当前系统时间是由系统硬件定时器确定的;若所述剩余超时时间小于或等于零,则将所述目标软件定时器关联的任务添加至任务调度队列中等待执行。本发明既保证了正常的周期性调度,也能在更小颗粒度上进行灵活调度,进而实现任务的灵活调度。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种嵌入式RTOS的灵活调度方法、设备和存储介质。
背景技术
在各种控制类产品,尤其是工业控制类产品中,软件通常需要对设备进行非常强的实时访问来完成各种控制活动,这种产品通常需要依赖RTOS(Real-Time OperatingSystem,嵌入式实时操作系统)提供的各种实时技术。
目前市场上存在着多种不同的开源嵌入式RTOS,例如FreeRTOS(Free Real-TimeOperating System,免费嵌入式实时操作系统)、μCOS(Micro Controller OperatingSystem,微型嵌入式操作系统)、RT-Thread(Real-Time Thread Operating System,实时线程操作系统)等,它们大多都基于抢占式的时间片轮询调度技术来实现任务的调度,即某个时刻,高优先级的任务可以抢占低优先级任务执行,而同优先级的任务按时间片轮询式调度。
基于抢占式时间片轮询调度策略的RTOS需要一个周期性的定时器作为时钟节拍,时钟节拍决定了RTOS内部定时器的计数器更新频率,也就是任务之间切换的最小时间间隔。通常时钟节拍是固定的,并且由RTOS的配置参数设置。任务调度的最小单位即一个时钟节拍,如果将时钟节拍设置的过小,虽然可以提供更高的系统响应速度,但同时也会增加了系统的负载,而较大的节拍可以减少系统负载,但会降低系统的响应性能。
上述内容仅用于辅助理解本申请的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种嵌入式RTOS的灵活调度方法、设备和存储介质,旨在改善将时钟节拍设置的过小,在提供更高的系统响应速度同时会增加系统的负载,而较大的节拍在减少系统负载的同时会降低系统的响应性能的问题。
为实现上述目的,本发明提供的一种嵌入式RTOS的灵活调度方法,所述嵌入式RTOS的灵活调度方法包括以下步骤:
在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;
根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,所述当前系统时间是由系统硬件定时器确定的;
若所述剩余超时时间小于或等于零,则将所述目标软件定时器关联的任务添加至任务调度队列中等待执行。
可选地,所述根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间的步骤之后,还包括:
若所述剩余超时时间大于零,则重新确定所述周期硬件定时器的中断触发时间;
在达到所述中断触发时间后,执行所述根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间的步骤。
可选地,所述重新确定所述周期硬件定时器的中断触发时间的步骤包括:
确定正在执行的当前任务的任务剩余时间;
根据所述任务剩余时间、所述剩余超时时间和所述周期硬件定时器的调度周期三个中的最小值,重新确定所述周期硬件定时器的中断触发时间。
可选地,所述确定正在执行的当前任务的任务剩余时间的步骤包括:
根据所述当前系统时间减去当前任务开始调度的系统时间,得到当前任务已消耗时间;
根据所述当前任务已消耗时间,确定任务剩余时间。
可选地,所述将所述目标软件定时器关联的任务添加至任务调度队列中等待执行的步骤之后,还包括:
获取所述目标软件定时器关联的任务的优先级;
若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,则中断所述当前任务,执行所述目标软件定时器关联的任务。
可选地,所述获取所述目标软件定时器关联的任务的优先级的步骤之后,还包括:
若当前任务的优先级高于所述目标软件定时器关联的任务的优先级,则查询当前任务的时间片;
若所述当前任务的剩余时间耗尽,则执行当前任务同优先级的其他任务。
可选地,所述获取所述目标软件定时器关联的任务的优先级的步骤之后,还包括:
若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,确定正在执行的当前任务的任务剩余时间;
将所述任务剩余时间与所述周期硬件定时器的当前计数值进行比较,得到比较结果;
根据所述比较结果,确定所述周期硬件定时器的中断触发时间。
可选地,所述根据所述比较结果,确定所述目标软件定时器关联的任务的执行时间的步骤包括:
若所述任务剩余时间小于或等于所述周期硬件定时器的当前计数值,则根据所述任务剩余时间确定所述周期硬件定时器的中断触发时间;
若所述任务剩余时间大于所述周期硬件定时器的当前计数值,则根据所述周期硬件定时器的调度周期,确定所述周期硬件定时器的中断触发时间。
为实现上述目的,本发明还提供一种嵌入式RTOS的灵活调度设备,所述嵌入式RTOS的灵活调度设备包括存储器、处理器以及存储在所述存储器并可在所述处理器上执行的嵌入式RTOS的灵活调度程序,所述嵌入式RTOS的灵活调度程序被所述处理器执行时实现如上所述的嵌入式RTOS的灵活调度方法的各个步骤。
为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有嵌入式RTOS的灵活调度程序,所述嵌入式RTOS的灵活调度程序被处理器执行时实现如上所述的嵌入式RTOS的灵活调度方法的各个步骤。
本发明提供的一种嵌入式RTOS的灵活调度方法、设备和存储介质,在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;根据目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,当前系统时间是由系统硬件定时器确定的;若剩余超时时间小于或等于零,则将目标软件定时器关联的任务添加至任务调度队列中等待执行。通过设置系统硬件定时器和周期硬件定时器,系统硬件定时器负责系统时间颗粒度,周期硬件定时器负责任务调度,即周期硬件定时器基于系统硬件定时器的时间对任务进行调度,这样即保证了正常的周期性调度,也能在更小颗粒度上进行灵活调度,进而实现任务的灵活调度。
附图说明
图1为本发明实施例涉及的嵌入式RTOS的灵活调度设备的硬件结构示意图;
图2为本发明嵌入式RTOS的灵活调度方法的第一实施例的流程示意图;
图3为本发明嵌入式RTOS的灵活调度方法的第二实施例的流程示意图;
图4为本发明嵌入式RTOS的灵活调度方法的第三实施例的流程示意图;
图5为本发明嵌入式RTOS的灵活调度方法的第四实施例的流程示意图;
图6为本发明嵌入式RTOS的灵活调度方法的第五实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;根据目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,当前系统时间是由系统硬件定时器确定的;若剩余超时时间小于或等于零,则将目标软件定时器关联的任务添加至任务调度队列中等待执行。通过设置系统硬件定时器和周期硬件定时器,系统硬件定时器负责系统时间颗粒度,周期硬件定时器负责任务调度,即周期硬件定时器基于系统硬件定时器的时间对任务进行调度,这样即保证了正常的周期性调度,也能在更小颗粒度上进行灵活调度,进而实现任务的灵活调度。
作为一种实现方案,嵌入式RTOS的灵活调度设备可以如图1所示。
本发明实施例方案涉及的是嵌入式RTOS的灵活调度设备,嵌入式RTOS的灵活调度设备包括:处理器101,例如CPU,存储器102,通信总线103。其中,通信总线103用于实现这些组件之间的连接通信。
存储器102可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。如图1所示,作为一种计算机可读存储介质的存储器102中可以包括嵌入式RTOS的灵活调度程序;而处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;
根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,所述当前系统时间是由系统硬件定时器确定的;
若所述剩余超时时间小于或等于零,则将所述目标软件定时器关联的任务添加至任务调度队列中等待执行。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
若所述剩余超时时间大于零,则重新确定所述周期硬件定时器的中断触发时间;
在达到所述中断触发时间后,执行所述根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间的步骤。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
确定正在执行的当前任务的任务剩余时间;
根据所述任务剩余时间、所述剩余超时时间和所述周期硬件定时器的调度周期三个中的最小值,重新确定所述周期硬件定时器的中断触发时间。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
根据所述当前系统时间减去当前任务开始调度的系统时间,得到当前任务已消耗时间;
根据所述当前任务已消耗时间,确定任务剩余时间。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
获取所述目标软件定时器关联的任务的优先级;
若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,则中断所述当前任务,执行所述目标软件定时器关联的任务。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
若当前任务的优先级高于所述目标软件定时器关联的任务的优先级,则查询当前任务的时间片;
若所述当前任务的剩余时间耗尽,则执行当前任务同优先级的其他任务。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,确定正在执行的当前任务的任务剩余时间;
将所述任务剩余时间与所述周期硬件定时器的当前计数值进行比较,得到比较结果;
根据所述比较结果,确定所述周期硬件定时器的中断触发时间。
可选地,处理器101可以用于调用存储器102中存储的嵌入式RTOS的灵活调度程序,并执行以下操作:
若所述任务剩余时间小于或等于所述周期硬件定时器的当前计数值,则根据所述任务剩余时间确定所述周期硬件定时器的中断触发时间;
若所述任务剩余时间大于所述周期硬件定时器的当前计数值,则根据所述周期硬件定时器的调度周期,确定所述周期硬件定时器的中断触发时间。
基于上述嵌入式RTOS的灵活调度设备的硬件构架,提出本发明嵌入式RTOS的灵活调度方法的实施例。
参照图2,图2为本发明嵌入式RTOS的灵活调度方法的第一实施例,所述嵌入式RTOS的灵活调度方法包括以下步骤:
步骤S10,在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间。
可选地,RTOS(Real-Time Operating System,嵌入式实时操作系统)通常运行在各种处理器上,以处理器上的硬件定时器作为时钟节拍,以此来进行任务的调度与执行。
可选地,当定时器时钟节拍到来时,会进入配置好的定时器中断服务函数,在服务函数中,对系统时钟节拍计数器加一,同时将当前被中断任务的时间片减一,时钟节拍计数器值tick代表着RTOS系统的当前系统时间,与时间有关的调度任务都与tick值有关。对RTOS中的所有任务的软件定时器timer的超时时间进行检查,若软件定时器timer超时,即软件定时器timer的超时时间大于等于当前系统的tick值,则将timer关联的任务根据优先级挂接到调度队列中等待执行。
由此可见,时间片节拍的颗粒度大小决定了任务调度的颗粒度,任务调度基于硬件定时器,因此为了实现任务在任意时刻调度执行,硬件定时器必须提供更小颗粒度的定时服务,定时器的最小定时时间取决于输入的时钟频率,一般在us或者ns级别。
本实施例做出进一步改进,硬件定时器包括系统硬件定时器T0和周期硬件定时器T1,系统硬件定时器T0和周期硬件定时器T1两者输入时钟频率相同。其中,系统硬件定时器T0用于获取RTOS的系统时间,配置为计数器模式,例如每1us计数加1,系统硬件定时器T0用于RTOS中的时钟节拍值,只做计数使用。其中,周期硬件定时器T1用于确定任务的中断触发时间,周期硬件定时器作为RTOS时钟节拍定时器,周期为T1period,通常为ms级别。
可选地,软件定时器是基于软件实现的计时器,采用软件程序来实现对时间的计数和定时。与硬件定时器不同,软件定时器不依赖于硬件计数器或外部时钟信号,而是使用软件计时器来实现定时功能。
可选地,RTOS中所有任务均对应有软件定时器timer,即每一任务对应有一个软件定时器timer,软件定时器timer用于检测任务的超时时间。在软件定时器timer中,任务的超时时间是指任务被设置的执行时间间隔。当达到设定的超时时间时,软件定时器会触发相应的任务执行。例如,如果任务被设置为每隔10秒执行一次,那任务的超时时间就是10秒。当软件定时器timer计时达到10秒时,RTOS系统会触发任务执行,并按照预定的逻辑进行处理。
可选地,目标软件定时器是各个任务中最早到期的任务对应的软件定时器,确定最早到期的目标软件定时器的超时时间,从而确定最早超时的任务并进行处理,避免任务阻塞过久,保证系统的稳定性和响应性。
步骤S20,根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,所述当前系统时间是由系统硬件定时器确定的。
可选地,在中断服务函数中,获取系统硬件定时器中当前系统时间T0current。示例性的,确定目标软件定时器的超时时间T0sleep与当前系统时间T0current之间的差值作为剩余超时时间T0timerout,示例性的,如下公式所示:
T0timerout=T0sleep-T0current。
可选地,步骤S20之后包括:若所述剩余超时时间大于零,则获取所述目标软件定时器关联的任务的优先级。
可选地,若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,则中断所述当前任务,执行所述目标软件定时器关联的任务。
可选地,若当前任务的优先级高于所述目标软件定时器关联的任务的优先级,则查询当前任务的时间片;若所述当前任务的剩余时间耗尽,则执行当前任务同优先级的其他任务。
可选地,若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,确定正在执行的当前任务的任务剩余时间;将所述任务剩余时间与所述周期硬件定时器的当前计数值进行比较,得到比较结果;根据所述比较结果,确定所述周期硬件定时器的中断触发时间。
可选地,根据所述比较结果,确定所述周期硬件定时器的中断触发时间的步骤包括:若所述任务剩余时间小于或等于所述周期硬件定时器的当前计数值,则根据所述任务剩余时间确定所述周期硬件定时器的中断触发时间;若所述任务剩余时间大于所述周期硬件定时器的当前计数值,则根据所述周期硬件定时器的调度周期,确定所述周期硬件定时器的中断触发时间。
步骤S30,若所述剩余超时时间小于或等于零,则将所述目标软件定时器关联的任务添加至任务调度队列中等待执行。
可选地,若剩余超时时间T0timerout小于或等于零,则根据目标软件定时器关联的任务的优先级,将该任务挂接到调度队列中等待执行。其中,在调度队列中,根据任务的优先级执行任务,当任务的优先级较高时,将优先执行该任务;当任务的优先级较低时,需要等待优先级较高的任务先执行。
可选地,若剩余超时时间T0timerout小于或等于零,表示目标定时器已超时,需要尽快执行目标任务,因此,将目标软件定时器中的任务挂接到调度队列中等待执行。
本申请重点在新增加的硬件计数器T0即系统硬件定时器,颗粒度在1us,周期性定时器T1即周期硬件定时器,负责任务调度,即T0负责系统时间颗粒度,T1基于T0的时间对任务进行调度,这样即保证了大的正常的周期性调度,也能在更小颗粒度上进行灵活调度。
在本实施例的技术方案中,在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;根据目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,当前系统时间是由系统硬件定时器确定的;若剩余超时时间小于或等于零,则将目标软件定时器关联的任务添加至任务调度队列中等待执行。通过设置系统硬件定时器和周期硬件定时器,系统硬件定时器负责系统时间颗粒度,周期硬件定时器负责任务调度,即周期硬件定时器基于系统硬件定时器的时间对任务进行调度,这样既保证了正常的周期性调度,也能在更小颗粒度上进行灵活调度,进而实现任务的灵活调度。
参照图3,图3为本发明嵌入式RTOS的灵活调度方法的第二实施例,基于第一实施例,所述步骤S20之后,还包括:
步骤S40,若所述剩余超时时间大于零,则重新确定所述周期硬件定时器的中断触发时间;
步骤S50,在达到所述中断触发时间后,执行所述根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间的步骤。
可选地,若剩余超时时间T0timerout大于零,表示RTOS中的任务并未超时,则需要重新确定周期硬件定时器的中断触发时间。在周期硬件定时器达到新的中断触发时间后,执行步骤S10至步骤S30相关步骤。
可选地,步骤S40包括:确定正在执行的当前任务的任务剩余时间T0remaining;根据所述任务剩余时间T0remaining和所述周期硬件定时器的调度周期T1period两个中的最小值,重新确定所述周期硬件定时器的中断触发时间。即取MIN(T0remaining,T1period)来设置周期硬件定时器的中断触发时间T1。
可选地,步骤S40包括:确定正在执行的当前任务的任务剩余时间T0remaining;根据所述任务剩余时间T0remaining、所述剩余超时时间T0timerout和所述周期硬件定时器的调度周期T1period三个中的最小值,重新确定所述周期硬件定时器的中断触发时间。即取MIN(T0remaining,T0timerout,T1period)来设置周期硬件定时器的中断触发时间T1,取当前任务的任务剩余时间、剩余超时时间、系统调度周期中最先需要关注和处理的项作为下次中断触发时间。在保持较大的周期性调度的同时,可使RTOS的任务具备更小的非整数倍周期的调度能力。
可选地,确定正在执行的当前任务的任务剩余时间的步骤包括:根据所述当前系统时间T0current减去当前任务开始调度的系统时间T0start,得到当前任务已消耗时间T0runned;根据当前任务已消耗时间T0runned确定任务剩余时间T0remaining。可选地,使用任务剩余时间T0remaining减当前任务已消耗时间T0runned刷新任务剩余时间T0remaining。
每个任务的任务控制块中,存放任务开始调度的系统时间T0start,任务剩余时间T0remaining,任务的延时超时时间T0sleep。
可选地,任务开始调度的系统时间T0start是任务开始被调度执行的系统时间点。当任务被调度执行时,系统会记录下该时间点,以便后续进行时间计算和跟踪任务的执行情况。
可选地,任务剩余时间T0remaining是任务在某个时间点上还需要执行的剩余时间。当任务被暂停或中断时,系统会记录当前的剩余时间,以便在任务再次被调度执行时继续从剩余时间点开始执行。
可选地,任务的延时超期时间T0sleep是任务在某个时间点上被设置的延迟超时时间。当任务需要在未来的某个时间点执行时,系统会设置一个延时超期时间,任务将在达到该时间点后被调度执行。
可选地,周期硬件定时器的调度周期T1period是硬件定时器产生中断的时间间隔,或者是硬件定时器触发中断的频率。其中,调度周期是由硬件定时器的计数器和预设值来决定的。硬件定时器内部有一个计数器,计数器会以固定的时钟频率进行计数,当计数器的值达到预设的比较值时,就会触发定时器中断。这个比较值决定了定时器的调度周期,也就是定时器中断触发的频率。例如,如果一个硬件定时器的时钟频率为100Hz,那么设置比较值为1000,那么硬件定时器的调度周期就是10ms,即每隔10毫秒会触发一次定时器中断。
在本实施例的技术方案中,通过设置系统调度的周期硬件定时器和系统硬件定时器的时间,对任务进行调度,在保持较大的周期性调度的同时,可使RTOS的任务具备更小的非整数倍周期的调度能力,使得任务在任意时刻得到调度。
参照图4,图4为本发明嵌入式RTOS的灵活调度方法的第三实施例,基于第一或第二实施例,所述步骤S30之后,还包括:
步骤S60,获取所述目标软件定时器关联的任务的优先级;
步骤S70,若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,则中断所述当前任务,执行所述目标软件定时器关联的任务。
可选地,RTOS会取得调度队列中就绪的最高优先级的任务,若目标软件定时器关联的任务比当前任务的优先级高,则切换到高优先级的任务执行。因此,将中断当前任务,执行目标软件定时关联的任务。
可选地,若当前任务的优先级高于所述目标软件定时器关联的任务的优先级,则查询当前任务的时间片;若所述当前任务的剩余时间耗尽,则执行当前任务同优先级的其他任务。
若当前任务就是最高优先级的任务,则检查当前任务的时间片,若当前任务的时间片耗尽,则将当前任务根据优先级挂接到调度表的尾端,同时切换到同优先级的其他任务。
在本实施例的技术方案中,获取目标软件定时器关联的任务的优先级;若当前任务的优先级不高于目标软件定时器关联的任务的优先级,则中断当前任务,执行目标软件定时器关联的任务。通过目标软件定时器关联的任务的优先级和当前任务的优先级,对任务的执行进行调度,实现任务的灵活调度。
参照图5,图5为本发明嵌入式RTOS的灵活调度方法的第四实施例,基于第一至第三中任一实施例,所述步骤S60之后,还包括:
步骤S80,若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,确定正在执行的当前任务的任务剩余时间;
步骤S90,将所述任务剩余时间与所述周期硬件定时器的当前计数值进行比较,得到比较结果;
步骤S100,根据所述比较结果,确定所述周期硬件定时器的中断触发时间。
可选地,确定正在执行的当前任务的任务剩余时间的步骤包括:根据所述当前系统时间T0current减去当前任务开始调度的系统时间T0start,得到当前任务已消耗时间T0runned;根据当前任务已消耗时间T0runned确定任务剩余时间T0remaining。可选地,使用任务剩余时间T0remaining减当前任务已消耗时间T0runned刷新任务剩余时间T0remaining。
可选地,步骤S80包括:若所述任务剩余时间小于所述周期硬件定时器的当前计数值,则根据所述任务剩余时间确定所述目标软件定时器关联的任务的执行时间;若所述任务剩余时间大于或等于所述周期硬件定时器的当前计数值,则根据所述周期硬件定时器的调度周期,确定所述周期硬件定时器的中断触发时间。
示例性的,RTOS获取到下一次即将执行的任务即目标软件定时器关联的任务时,获取该任务的任务剩余时间T0remaining,与周期硬件定时器T1的当前计数值T1current进行比较;若任务剩余时间T0remaining较小,则设置到周期硬件定时器T1当前计数器中,否则设置为调度周期T1period,同时进行任务切换。
在本实施例的技术方案中,通过确定周期硬件定时器下一周期的中断触发时间,实现下一周期对任务进行调度,在保持较大的周期性调度的同时,可使RTOS的任务具备更小的非整数倍周期的调度能力,实现任务的灵活调度。
在一实施例中,参照图6,取系统硬件定时器T0和周期硬件定时器T1,两者输入时钟频率相同,系统硬件定时器T0配置为计数器模式,每1us计数加一,系统硬件定时器T0用于RTOS系统时钟节拍值,只做计数使用,用于获取RTOS的系统时间,周期硬件定时器T1作为RTOS时钟节拍定时器,依然配置为周期性定时器,调度周期为T1period,通常为ms级别。每个任务的任务控制块中,存放任务开始调度的系统时间T0start,任务剩余时间T0remaining,任务的延时超时时间T0sleep。
当周期硬件定时器T1的定时时间到来时,在中断服务函数中,获取当前系统时间T0current,使用T0current减去当前任务的T0start得到当前任务已消耗时间T0runned,同时使用任务剩余时间T0remaining减T0runned刷新任务剩余时间T0remaining。
对RTOS中的所有任务的软件定时器timer的超时时间进行检查时,首先取得最早到期的定时器超时时间T0sleep与当前系统时间T0current的差值作为剩余超时时间,即T0timerout,若剩余超时时间T0timerout小于0,定时器超时,则将timer关联的任务根据任务优先级挂接到调度队列中等待执行;否则,将剩余超时时间T0timerout与当前任务的剩余时间T0remaining进行比较,取T0timerout、T0remaining、调度周期T1period中最小者设置到定时器T1当前计数器T1current中,即取当前任务、定时器超时、系统调度周期中最先需要关注和处理的项作为下次中断触发的时间。
RTOS获取到下一次即将执行的任务时,获取该任务的任务剩余时间T0remaining,与周期硬件定时器T1的当前计数值T1current进行比较,若T0remaining较小,则设置到周期硬件定时器T1当前计数器中,否则设置为调度周期T1period,同时进行任务切换。
经过以上步骤,周期硬件定时器T1的当前计数值T1current始终保持为最先需要关注事项的到期时间,当周期硬件定时器T1产生中断时,再重复上述步骤。
本申请重点在新增加的硬件计数器T0即系统硬件定时器,颗粒度在1us,周期性定时器T1即周期硬件定时器,负责任务调度,即T0负责系统时间颗粒度,T1基于T0的时间对任务进行调度,这样即保证了大的正常的周期性调度,也能在更小颗粒度上进行灵活调度。
判断每个任务软件定时器的超时时间与当前任务的剩余时间,周期任务的定时周期比较,取最小值更新到T1,这样当T1时间到达中断时,即可处理最先需要关注的事项。
在中断函数中取最高优先级任务的剩余执行时间和当前周期性定时器T1的时间做比较,其中,最高优先级任务可能是当前任务或者就绪队列中最高优先级任务,若小于则更新T1当前值,否则本次中断结束。
T0使系统时间颗粒度更小,T1通常在大颗粒度时执行正常的周期调度,同时也支持在需要小颗粒度时进行调度。而修改前的RTOS只能基于T1的设置的调度周期进行任务调度,若T1设置为1ms,若某个任务想延时1.5ms则无法做到,使用本专利后,通常正常调度还是按1ms调度,但也支持1.5ms调度,原因在于引入了系统硬件定时器T0。
在本实施例的技术方案中,通过设置系统调度的周期硬件定时器和系统硬件定时器的时间,对任务进行调度,在保持较大的周期性调度的同时,可使RTOS的任务具备更小的非整数倍周期的调度能力,实现任务的灵活调度。
本发明还提供一种嵌入式RTOS的灵活调度设备,所述嵌入式RTOS的灵活调度设备包括存储器、处理器以及存储在所述存储器并可在所述处理器上执行的嵌入式RTOS的灵活调度程序,所述嵌入式RTOS的灵活调度程序被所述处理器执行时实现如上实施例所述的嵌入式RTOS的灵活调度方法的各个步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有嵌入式RTOS的灵活调度程序,所述嵌入式RTOS的灵活调度程序被处理器执行时实现如上实施例所述的嵌入式RTOS的灵活调度方法的各个步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、系统、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、系统、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、系统、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例系统可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个计算机可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,停车管理设备,空调器,或者网络设备等)执行本发明各个实施例所述的系统。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种嵌入式RTOS的灵活调度方法,其特征在于,所述嵌入式RTOS的灵活调度方法包括:
在达到周期硬件定时器的中断触发时间后,根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间;
根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间,所述当前系统时间是由系统硬件定时器确定的;
若所述剩余超时时间小于或等于零,则将所述目标软件定时器关联的任务添加至任务调度队列中等待执行。
2.如权利要求1所述的嵌入式RTOS的灵活调度方法,其特征在于,所述根据所述目标软件定时器的超时时间与当前系统时间的差值,确定剩余超时时间的步骤之后,还包括:
若所述剩余超时时间大于零,则重新确定所述周期硬件定时器的中断触发时间;
在达到所述中断触发时间后,执行所述根据RTOS中的所有任务的软件定时器的超时时间,确定最早到期的目标软件定时器的超时时间的步骤。
3.如权利要求2所述的嵌入式RTOS的灵活调度方法,其特征在于,所述重新确定所述周期硬件定时器的中断触发时间的步骤包括:
确定正在执行的当前任务的任务剩余时间;
根据所述任务剩余时间、所述剩余超时时间和所述周期硬件定时器的调度周期三个中的最小值,重新确定所述周期硬件定时器的中断触发时间。
4.如权利要求3所述的嵌入式RTOS的灵活调度方法,其特征在于,所述确定正在执行的当前任务的任务剩余时间的步骤包括:
根据所述当前系统时间减去当前任务开始调度的系统时间,得到当前任务已消耗时间;
根据所述当前任务已消耗时间,确定任务剩余时间。
5.如权利要求1所述的嵌入式RTOS的灵活调度方法,其特征在于,所述将所述目标软件定时器关联的任务添加至任务调度队列中等待执行的步骤之后,还包括:
获取所述目标软件定时器关联的任务的优先级;
若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,则中断所述当前任务,执行所述目标软件定时器关联的任务。
6.如权利要求5所述的嵌入式RTOS的灵活调度方法,其特征在于,所述获取所述目标软件定时器关联的任务的优先级的步骤之后,还包括:
若当前任务的优先级高于所述目标软件定时器关联的任务的优先级,则查询当前任务的时间片;
若所述当前任务的剩余时间耗尽,则执行当前任务同优先级的其他任务。
7.如权利要求5所述的嵌入式RTOS的灵活调度方法,其特征在于,所述获取所述目标软件定时器关联的任务的优先级的步骤之后,还包括:
若当前任务的优先级不高于所述目标软件定时器关联的任务的优先级,确定正在执行的当前任务的任务剩余时间;
将所述任务剩余时间与所述周期硬件定时器的当前计数值进行比较,得到比较结果;
根据所述比较结果,确定所述周期硬件定时器的中断触发时间。
8.如权利要求7所述的嵌入式RTOS的灵活调度方法,其特征在于,所述根据所述比较结果,确定所述目标软件定时器关联的任务的执行时间的步骤包括:
若所述任务剩余时间小于或等于所述周期硬件定时器的当前计数值,则根据所述任务剩余时间确定所述周期硬件定时器的中断触发时间;
若所述任务剩余时间大于所述周期硬件定时器的当前计数值,则根据所述周期硬件定时器的调度周期,确定所述周期硬件定时器的中断触发时间。
9.一种嵌入式RTOS的灵活调度设备,其特征在于,所述嵌入式RTOS的灵活调度设备包括存储器、处理器以及存储在所述存储器并可在所述处理器上执行的嵌入式RTOS的灵活调度程序,所述嵌入式RTOS的灵活调度程序被所述处理器执行时实现如权利要求1-8任一项所述的嵌入式RTOS的灵活调度方法的各个步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有嵌入式RTOS的灵活调度程序,所述嵌入式RTOS的灵活调度程序被处理器执行时实现如权利要求1-8任一项所述的嵌入式RTOS的灵活调度方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311637575.XA CN117667342A (zh) | 2023-11-30 | 2023-11-30 | 嵌入式rtos的灵活调度方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311637575.XA CN117667342A (zh) | 2023-11-30 | 2023-11-30 | 嵌入式rtos的灵活调度方法、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667342A true CN117667342A (zh) | 2024-03-08 |
Family
ID=90063477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311637575.XA Pending CN117667342A (zh) | 2023-11-30 | 2023-11-30 | 嵌入式rtos的灵活调度方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667342A (zh) |
-
2023
- 2023-11-30 CN CN202311637575.XA patent/CN117667342A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8504753B2 (en) | Suspendable interrupts for processor idle management | |
KR101189842B1 (ko) | 멀티스레딩 환경에서 스레드인 처리 유닛에서 데이터를처리하는 방법 및 장치 | |
CN111143045B (zh) | 智能家居操作系统的任务调度方法及装置、存储介质 | |
US10271326B2 (en) | Scheduling function calls | |
CN112099975A (zh) | 一种消息处理方法及系统、存储介质 | |
US8458508B2 (en) | Information processing device which specifies a waiting time until execution of a given event and makes a system call | |
KR20000060827A (ko) | 실시간 운영체계 커널(Real-time operating systemKernel)의 이벤트 전달 체계 구현방법 | |
US10613495B2 (en) | Motor drive system, motor control system, and self-propelled robot | |
JP4675891B2 (ja) | タスクスケジューリング装置、タスクスケジューリング方法、タスクスケジューリングプログラム、記録媒体、及び伝送媒体 | |
CN117667342A (zh) | 嵌入式rtos的灵活调度方法、设备和存储介质 | |
CA2767782C (en) | Suspendable interrupts for processor idle management | |
JP2001216170A (ja) | 専用ポーリング処理組み込みオペレーティング方法及び専用ポーリング処理組み込みオペレーティングシステム | |
JPS62284437A (ja) | タスク管理方式 | |
US20050160425A1 (en) | Limitation of the response time of a software process | |
WO2018211865A1 (ja) | 車両制御装置 | |
JP2001236236A (ja) | タスク制御装置およびそのタスクスケジューリング方法 | |
CN114035926A (zh) | 应用线程调度方法、装置、存储介质及电子设备 | |
JP2002073354A (ja) | タスク制御装置とタスク制御方法 | |
CN114153571A (zh) | 基于固定时间片的任务调度方法、系统、设备及存储介质 | |
JP2001092676A (ja) | 組み込みプログラムにおけるタスク管理システム | |
JP2003241978A (ja) | デバイスドライバの負荷分散方法および負荷分散システム | |
JPH01292539A (ja) | タスクのスケジュール装置 | |
JP5127541B2 (ja) | タイマ管理方法、並びにタイマ管理装置 | |
CN117032993B (zh) | 任务调度方法 | |
CN115543461A (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 |