CN112256419A - 一种基于定时器时钟控制的嵌入式系统多任务调度方法 - Google Patents
一种基于定时器时钟控制的嵌入式系统多任务调度方法 Download PDFInfo
- Publication number
- CN112256419A CN112256419A CN202011159559.0A CN202011159559A CN112256419A CN 112256419 A CN112256419 A CN 112256419A CN 202011159559 A CN202011159559 A CN 202011159559A CN 112256419 A CN112256419 A CN 112256419A
- Authority
- CN
- China
- Prior art keywords
- task
- clock
- delay time
- timer
- delay
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种基于定时器时钟控制的嵌入式系统多任务调度方法,根据嵌入式软件实现的功能将整个程序划分为具有单一特定功能的多个任务功能模块,设置延时时钟和延时时钟的最小基准时间,在延时时钟列表中以枚举类型对各任务标记对应的时钟序列,根据任务的先后执行顺序依次将任务标记封装在时钟列表中,并定义任务执行对应的预定延时时间,在定时器中断服务子程序中定义两个指针,第一个指针指向存放各任务是否启用延时时钟标记的数组,第二个指针指向存放所述预定延时时间的数组;根据所述时钟序列和各任务对应的预定延时时间,依次对各任务轮询和执行,从而使得某一任务堵塞或占用CPU时,不会造成资源浪费和时间浪费。
Description
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种基于定时器时钟控制的嵌入式系统多任务调度方法。
背景技术
随着物联网技术的不断发展和深入,各种嵌入式软件系统广泛应用在不同行业领域中。其中绝大多数物联网设备需要采集多种类型传感器设备数据,并对数据进行处理、传输和响应操作。传统的嵌入式软件开发主要采用前后台软件设计模式,其多任务程序运行流程是采用顺序执行和延时等待策略,这造成在多任务调度过程中CPU资源若被某一任务堵塞或占用,其他任务将无法得到及时有效的处理,会导致时间、资源的严重浪费。为解决这一问题,通常使用具有更高计算能力的芯片或采用具备多任务并行处理能力的嵌入式操作系统来加快系统的运行速度,但是这种方案提高了系统的研发和采购成本,整个系统的开发难度也相应增大,不便于嵌入式软件开发人员掌握。因此亟需一种更优的多任务调度方法,能应对某一任务堵塞或占用CPU导致的时间、资源浪费问题,又能减少系统开销。
发明内容
(一)要解决的技术问题
基于上述问题,本发明提供一种基于定时器时钟控制的嵌入式系统多任务调度方法,在不采用计算能力更高的芯片和多任务并行处理能力的嵌入式操作系统的前提下,减少某一任务堵塞或占用CPU导致的对时间、资源的浪费。
(二)技术方案
基于上述的技术问题,本发明提供一种基于定时器时钟控制的嵌入式系统多任务调度方法,包括以下步骤:
S1、根据嵌入式软件实现的功能将整个程序划分为具有单一特定功能的多个任务功能模块;
S2、采用主控芯片的通用定时器作为延时时钟,设置所述延时时钟的最小基准时间t0;
S3、在延时时钟列表中以枚举类型对各任务标记对应的时钟序列,并根据任务实际执行情况定义任务执行对应的预定延时时间t;
S4、在定时器中断服务子程序中定义两个指针,第一个指针指向存放各任务是否启用延时时钟标记的数组,第二个指针指向存放所述预定延时时间t的数组;
S5、根据所述时钟序列依次对各任务轮询,当各任务开启了延时时钟,并到达了所述预定延时时间t时执行,执行后轮询下一任务。
进一步的,所述步骤S3中包括开启时钟序列中第一个任务的延时时钟,并在初始化设置子程序中将第一个任务的预定延时时间t设置为零。
进一步的,所述步骤S5包括以下步骤:
S5.1、根据所述时钟序列进入第一个任务;
S5.2、判断当前任务是否开启了延时时钟,若否,则跳过该任务,进入下一任务,重新进入步骤S5.2;若是,则进入步骤S5.3;
S5.3、判断当前任务执行对应的延时时间是否到达,若是,则执行主程序中相应的任务,若否,则跳过该任务,进入下一任务,返回步骤S5.2;
S5.4、执行完当前任务后,若当前任务为第一个任务,则重置第一个任务的预定延时时间t,否则,清除任务对应的延时时钟,并开启下一任务的时钟;
S5.5、判断是否所有任务均经过了轮询,若否,则进入下一任务,返回步骤S5.2;若是,则主程序进入下一循环,根据时钟序列重新开始新一轮的轮询,返回步骤S5.1。
进一步的,步骤S5.3中所述判断当前任务执行对应的预定延时时间是否到达的方法包括以下步骤:
S5.3.1、判断任务执行对应的所述预定延时时间t是否为零,若是零,则任务延时时间t′为所述预定延时时间t,即t′=t;若不是零,则将所述预定延时时间t减去最小基准时间t0得到任务延时时间t′,即t′=t-t0;
S5.3.2、判断所述任务延时时间t′与零值是否相等,若是,则任务执行对应的预定延时时间t已到达,若否,则任务执行对应的预定延时时间未到达。
进一步的,所述预定延时时间t与所述最小基准时间t0是倍乘关系。
进一步的,所述延时时钟的最小基准时间t0为所述定时器的溢出时间,所述溢出时间根据自动重装载值和预分频系统确定。
本发明还公开了一种嵌入式系统,包括:
至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行所述的基于定时器时钟控制的嵌入式系统多任务调度方法。
本发明还公开了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行所述的基于定时器时钟控制的嵌入式系统多任务调度方法。
(三)有益效果
本发明的上述技术方案具有如下优点:
本发明使得系统能根据时钟序列和设置的各任务执行对应的延时时间依次执行各任务,即使出现某一任务堵塞或占用CPU时,不会一直停在某一任务处理程序中等待其执行完成,而是继续下一任务,保证其它任务也能正常顺利执行,优化了嵌入式系统的多任务的调度流程,主控芯片始终处于工作状态,避免了CPU处理资源和时间浪费;且在不采用计算能力更高的芯片和多任务并行处理能力的嵌入式操作系统的前提下达到上述效果,相对减少了系统成本。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1为本发明实施例的一种基于定时器时钟控制的嵌入式系统多任务调度方法的流程示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明实施例公开了一种基于定时器时钟控制的嵌入式系统多任务调度方法,如图1所示,包括以下步骤:
S1、根据嵌入式软件实现的功能将整个程序划分为具有单一特定功能的多个任务功能模块,完成各任务的程序设计和功能测试,在主程序中实现各个任务的相互调用逻辑;
以外接5个不同类型传感器的数据采集设备嵌入式软件实现为例,可将5种传感器的采集程序分别设置为5个任务模块。
S2、采用主控芯片的某一通用定时器作为延时时钟,通过设置定时器的溢出时间作为延时时钟的最小基准时间t0;
以STM32F4系列的主控芯片为例,可将其通用定时器TIM3设置为延时时钟,并通过配置自动重装载值和预分频系数设置溢出时间10ms作为最小基准时间。
S3、在延时时钟列表中以枚举类型对各任务标记对应的时钟序列,根据任务的先后执行顺序依次将任务标记封装在时钟列表中,并根据任务实际执行情况定义任务执行对应的预定延时时间t,所述预定延时时间t与所述最小基准时间t0是倍乘关系,开启时钟序列中第一个任务的延时时钟,并在初始化设置子程序中将第一个任务的预定延时时间t设置为零;
此预定延时时间t的设置依据通常为与嵌入式软件功能实现的实体进行通信的其它设备的数据准备时间,以数据采集设备与传感器进行通信的嵌入式软件实现为例,预定延时时间t即为传感器的上电启动时间。
S4、在定时器中断服务子程序中定义两个指针,第一个指针指向存放各任务是否启用延时时钟标记的数组,第二个指针指向存放定义的预定延时时间t的数组;
S5、根据所述时钟序列依次对各任务轮询,当某一任务开启了延时时钟,并到达了所述预定延时时间t时执行,执行后轮询下一任务:
S5.1、根据所述时钟序列进入第一个任务;
S5.2、判断当前任务是否开启了延时时钟,若否,则跳过该任务,进入下一任务,重新进入步骤S5.2;若是,则进入步骤S5.3;
S5.3、判断当前任务执行对应的延时时间是否到达,若是,则执行主程序中相应的任务,若否,则跳过该任务,进入下一任务,返回步骤S5.2;
该判断延时时间是否到达的方法为:
S5.3.1、判断任务执行对应的所述预定延时时间t是否为零,若是零,则任务延时时间t′为定义的任务延时时间t,即t′=t;若不是零,则将所述预定延时时间t减去最小基准时间t0得到任务延时时间t′,即t′=t-t0;
若所述预定延时时间t为零,则该任务立即启动延时时钟;若t不为零,则该任务还需要一个溢出时间即最小基准时间后才启动延时时钟;
S5.3.2、判断所述任务延时时间t′与零值是否相等,若是,则任务执行对应的预定延时时间t已到达,执行主程序中相应的任务,若否,则任务执行对应的延时时间未到达,跳过该任务,进入下一任务,返回步骤S5.2;
依此来对任务进行调度,则在某一任务堵塞时,在达到延时时间要求后,会跳到下一任务,使得其它任务能正常顺利执行,而不会一直停在某一任务处理程序中等待其执行完成。在这一步作业中,系统内主控芯片始终处于工作状态,极大节约时间开销。
S5.4、执行完当前任务后,若当前任务为第一个任务,则重置第一个任务的预定延时时间t,否则,清除任务对应的延时时钟,并开启下一任务的时钟;
特别注意,第一个任务的延时时钟开启标志始终不会被清除,只会在执行完第一个任务后重置其预定延时时间t,以便程序进入下一次循环时能再次开始执行。
S5.5、判断是否所有任务均经过了轮询,若否,则进入下一任务,返回步骤S5.2;若是,则主程序进入下一循环,根据时钟序列重新开始新一轮的轮询,返回步骤S5.1。
对于发生堵塞的某一任务,在循环程序进行新一轮的轮询时,根据时钟序列重新轮询。
最后需要说明的是,上述的方法可以转换为软件程序指令,既可以使用包括处理器和存储器的控制系统来运行实现,也可以通过非暂态计算机可读存储介质中存储的计算机指令来实现。上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
综上可知,通过上述的一种基于定时器时钟控制的嵌入式系统多任务调度方法,使得系统能根据时钟序列和设置的各任务执行对应的延时时间依次执行各任务,即使出现某一任务堵塞或占用CPU时,不会一直停在某一任务处理程序中等待其执行完成,而是继续下一任务,保证其它任务也能正常顺利执行,优化了嵌入式系统的多任务的调度流程,主控芯片始终处于工作状态,避免了CPU处理资源和时间浪费;且在不采用计算能力更高的芯片和多任务并行处理能力的嵌入式操作系统的前提下达到上述效果,相对减少了系统成本。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (8)
1.一种基于定时器时钟控制的嵌入式系统多任务调度方法,其特征在于,包括以下步骤:
S1、根据嵌入式软件实现的功能将整个程序划分为具有单一特定功能的多个任务功能模块;
S2、采用主控芯片的通用定时器作为延时时钟,设置所述延时时钟的最小基准时间t0;
S3、在延时时钟列表中以枚举类型对各任务标记对应的时钟序列,并根据任务实际执行情况定义任务执行对应的预定延时时间t;
S4、在定时器中断服务子程序中定义两个指针,第一个指针指向存放各任务是否启用延时时钟标记的数组,第二个指针指向存放所述预定延时时间t的数组;
S5、根据所述时钟序列依次对各任务轮询,当各任务开启了延时时钟,并到达了所述预定延时时间t时执行,执行后轮询下一任务。
2.根据权利要求1所述的基于定时器时钟控制的嵌入式系统多任务调度方法,其特征在于,所述步骤S3中包括开启时钟序列中第一个任务的延时时钟,并在初始化设置子程序中将第一个任务的预定延时时间t设置为零。
3.根据权利要求1所述的基于定时器时钟控制的嵌入式系统多任务调度方法,其特征在于,所述步骤S5包括以下步骤:
S5.1、根据所述时钟序列进入第一个任务;
S5.2、判断当前任务是否开启了延时时钟,若否,则跳过该任务,进入下一任务,重新进入步骤S5.2;若是,则进入步骤S5.3;
S5.3、判断当前任务执行对应的延时时间是否到达,若是,则执行主程序中相应的任务,若否,则跳过该任务,进入下一任务,返回步骤S5.2;
S5.4、执行完当前任务后,若当前任务为第一个任务,则重置第一个任务的预定延时时间t,否则,清除任务对应的延时时钟,并开启下一任务的时钟;
S5.5、判断是否所有任务均经过了轮询,若否,则进入下一任务,返回步骤S5.2;若是,则主程序进入下一循环,根据时钟序列重新开始新一轮的轮询,返回步骤S5.1。
4.根据权利要求3所述的基于定时器时钟控制的嵌入式系统多任务调度方法,其特征在于,步骤S5.3中所述判断当前任务执行对应的预定延时时间是否到达的方法包括以下步骤:
S5.3.1、判断任务执行对应的所述预定延时时间t是否为零,若是零,则任务延时时间t′为所述预定延时时间t,即t′=t;若不是零,则将所述预定延时时间t减去最小基准时间t0得到任务延时时间t′,即t′=t-t0;
S5.3.2、判断所述任务延时时间t′与零值是否相等,若是,则任务执行对应的预定延时时间t已到达,若否,则任务执行对应的预定延时时间未到达。
5.根据权利要求1所述的基于定时器时钟控制的嵌入式系统多任务调度方法,其特征在于,所述预定延时时间t与所述最小基准时间t0是倍乘关系。
6.根据权利要求1所述的基于定时器时钟控制的嵌入式系统多任务调度方法,其特征在于,所述延时时钟的最小基准时间t0为所述定时器的溢出时间,所述溢出时间根据自动重装载值和预分频系统确定。
7.一种嵌入式系统,其特征在于,包括:
至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一项所述的基于定时器时钟控制的嵌入式系统多任务调度方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一项所述的基于定时器时钟控制的嵌入式系统多任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011159559.0A CN112256419A (zh) | 2020-10-27 | 2020-10-27 | 一种基于定时器时钟控制的嵌入式系统多任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011159559.0A CN112256419A (zh) | 2020-10-27 | 2020-10-27 | 一种基于定时器时钟控制的嵌入式系统多任务调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112256419A true CN112256419A (zh) | 2021-01-22 |
Family
ID=74262489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011159559.0A Pending CN112256419A (zh) | 2020-10-27 | 2020-10-27 | 一种基于定时器时钟控制的嵌入式系统多任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256419A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925633A (zh) * | 2021-05-12 | 2021-06-08 | 浙江华创视讯科技有限公司 | 嵌入式的任务调度方法、装置、电子设备及存储介质 |
-
2020
- 2020-10-27 CN CN202011159559.0A patent/CN112256419A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925633A (zh) * | 2021-05-12 | 2021-06-08 | 浙江华创视讯科技有限公司 | 嵌入式的任务调度方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106293919B (zh) | 一种时间触发的嵌入式任务调度装置与方法 | |
CN113010275B (zh) | 一种中断处理方法和装置 | |
KR20210011451A (ko) | 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링 | |
CN102081555B (zh) | 调整时钟中断周期的方法和装置 | |
WO2009023461A1 (en) | Multi-threaded processing with reduced context switching | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
CN109522128B (zh) | 分段式多线程任务执行方法及装置 | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
CN110908724A (zh) | 一种Android App启动方法及相关组件 | |
US20240202024A1 (en) | Thread processing methods, scheduling component, monitoring component, server, and storage medium | |
CN111324432A (zh) | 处理器调度方法、装置、服务器及存储介质 | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
CN112256419A (zh) | 一种基于定时器时钟控制的嵌入式系统多任务调度方法 | |
CN114461365A (zh) | 一种进程调度处理方法、装置、设备和存储介质 | |
CN117573355A (zh) | 任务处理方法、装置、电子设备以及存储介质 | |
CN110955503A (zh) | 任务调度方法及装置 | |
CN108241522B (zh) | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 | |
US10761512B2 (en) | Numerical controller | |
CN109800166B (zh) | 一种嵌入式实时操作系统的调试方法及装置 | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
Hills | Structured interrupts | |
JP2009048358A (ja) | 情報処理装置及びスケジューリング方法 | |
CN115686863A (zh) | 一种混合轮询方法、装置、设备及可读存储介质 | |
CN115454592A (zh) | 任务调度方法及装置 | |
CN114911538A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: No.755, bachelor Road, Yuelu District, Changsha City, Hunan Province, 410205 Applicant after: CUHK testing (Hunan) Co.,Ltd. Applicant after: Hunan zhongyun Technology Co., Ltd Address before: No.755, Xueshi street, Yuelu District, Changsha City, Hunan Province, 410205 Applicant before: HUNAN ZHONGDA TESTING Co.,Ltd. Applicant before: Hunan zhongyun Technology Co., Ltd |