CN103257864A - 嵌入式软件任务调度方法 - Google Patents
嵌入式软件任务调度方法 Download PDFInfo
- Publication number
- CN103257864A CN103257864A CN2013101678775A CN201310167877A CN103257864A CN 103257864 A CN103257864 A CN 103257864A CN 2013101678775 A CN2013101678775 A CN 2013101678775A CN 201310167877 A CN201310167877 A CN 201310167877A CN 103257864 A CN103257864 A CN 103257864A
- Authority
- CN
- China
- Prior art keywords
- task
- activated
- stand
- period
- scheduling
- 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
- Debugging And Monitoring (AREA)
Abstract
一种嵌入式软件任务调度方法,所述方法包括:任务调度内核初始化,包括定义等待任务队列、待激活任务队列和最大任务数量,并创建任务计时器;创建任务,需要指定任务函数指针和响应时间;任务删除,任务删除是在等待任务队列中查找任务,并将其对应的任务函数指针置空;刷新任务等待时间,定时刷新等待任务队列中任务的等待时间,若等待时间为零,则将任务放入待激活任务队列;获取待激活任务,查找待激活队列中任务的任务函数指针是否为空,非空则执行该函数。
Description
技术领域
本发明涉及一种嵌入式软件任务调度方法,其主要应用于嵌入式软件领域中。
背景技术
嵌入式软件是嵌入式系统重要的一部分。很多嵌入式软件是基于嵌入式操作系统设计的,其具有系统化、标准化和功能强大的特点。但是,对于功能相对简单的嵌入式系统,应用嵌入式操作系统会有复杂度高和灵活度低的问题。而且,嵌入式操作系统的内核维护的开销,也不可小视。因此,针对功能相对简单的嵌入式系统设计一种简单、灵活和快速的任务调度微内核,将对此类系统设计起到重要的帮助作用。
目前,嵌入式操作系统大部分是基于优先级驱动的,任务调度采用优先级抢占调度。虽然很多操作系统也支持时间片轮转调度,但是使用操作系统意味着复杂度的增加,对于任务相对简单的嵌入式系统,即使采用时间片轮转,依然会造成系统资源浪费。而如果不采用嵌入式操作系统的情况下,一般采用前后台系统方式设计嵌入式软件。
针对这种情况,确有必要对现有技术进行改进以解决现有技术之不足。
发明内容
本发明通过在在前后台嵌入式系统中,设计一种嵌入式软件任务调度方法,进而实现任务调度,支持任务动态创建,同时保证任务调度内核简单,嵌入式软件复杂度低,移植灵活和系统资源占用少。
本发明采用如下技术方案:一种嵌入式软件任务调度方法,所述方法包括:
任务调度内核初始化,包括定义等待任务队列、待激活任务队列和最大任务数量,并创建任务计时器;
创建任务,需要指定任务函数指针和响应时间;
任务删除,任务删除是在等待任务队列中查找任务,并将其对应的任务函数指针置空;
刷新任务等待时间,定时刷新等待任务队列中任务的等待时间,若等待时间为零,则将任务放入待激活任务队列;
获取待激活任务,查找待激活队列中任务的任务函数指针是否为空,非空则执行该函数。
所述最大任务数量的定义根据实际系统需求进行灵活设置。
所述更新任务等待时间的更新分辨率根据实际系统需求进行灵活设置,其刷新任务等待时间为所有任务同步刷新。
在采用所述方法创建任务时,最少仅需指定任务函数和任务响应时间,其它任务参数根据实际系统需求灵活设置。
本发明具有如下有益效果:本发明设计出的非常精简的任务内核调度方式,内核只系统任务调度的要求,而且内核简单,复杂度低,移植灵活,系统资源占用极小。
附图说明
图1是本发明调度管理示意图。
图2是系统运行相关流程图。
具体实施方式
以下结合附图和实例对本发明的技术方案作进一步描述:
本发明具体实施方式中符号定义
:任务等待队列;
:任务初始化函数;
本方案从任务初始化开始,系统时钟定时产生中断,然后在前后台系统的主循环中,刷新任务等待时间,之后从待激活任务队列获取待激活任务,如果有任务则激活任务运行,否则继续循环,执行系统其他操作。同时,系统其他功能模块可以执行任务创建和删除等操作。任务调度管理如图1所示。方案包含的任务管理操作具体如下:
(1)任务管理初始化
函数原型:void Task_Init(void)
输入值:无
返回值:无
系统初始化时,根据最大任务数目,创建等待任务队列和待激活队列*WaitTask[NUM_TASK]和*ActiveTask[NUM_TASK]。最大任务数目的定义应根据系统实际情况确定,一般略大于系统需要的最大任务数目。
(2)任务创建
函数原型:void CreatTask(void (*fun)(), WORD d_time)
输入值:*fun--待创建的任务函数指针
d_time--创建到激活该任务的等待时间,以定时器中断时间为时间单元
返回值:无
创建任务时,创建一个任务,放入等待任务队列WaitTask中,并将指定的响应时间记录下来,延时指定时间后激活。
(3)任务删除
函数原型:void DelWaitTask(void (*fun)())
输入值:*fun--创建的任务函数指针
返回值:无
删除任务时,在等待任务队列中查找对应的任务函数,如果找到对应的任务函数,则在等待任务队列中删除指定的任务,并将该任务对应的等待时间清零。
(4)刷新任务等待时间
函数原型:void ModifyWaitTaskTimer(void)
输入值:无
返回值:无
刷新任务等待时间,在前后台系统主循环中每隔一定时间调用该函数一次,扫描等待任务队列中各任务对应的等待时间,只要等待时间不为零,对应的WaitTaskTimer减少固定时间。一旦某个任务对应的等待时间减到零,从等待队列中删除该任务,同时将该等待任务移动到待激活任务队列尾部,CPU依先后顺序启动待激活任务。
(5)获取待激活任务
函数原型:void (*GetActiveTask(void))()
输入值:无
返回值:无
获得待激活任务,CPU空闲时调用该函数,只要待激活任务队列中有任务,CPU将调用队列中排在最前面的任务函数。
整个系统的运行流程如图2所示。
首先,系统初始化时,调用任务管理初始化函数,初始化系统定时器。其中在初始化定时器时,需要设计合理的定时器中断间隔时间,中断间隔时间直接影响任务等待时间更新的分辨率。然后,启动定时器,启动系统主循环。启动待激活任务。最后,更新等待任务队列等待时间,每次主循环更新一次任务的等待时间,每次对应任务等待时间减量为调用刷新等待时间函数的时间间隔。另外,系统中任务的创建、删除等操作可以在其他功能模块中完成,十分灵活。为了保证系统的实时性,任务必须保证足够短小。较大任务可以使用分解为小任务,分步创建小任务的方式实现。任务函数原则上,非特殊需要,应设计为不可重入函数,以避免任务分步后,可能出现的任务创建重复导致任务交叉影响。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下还可以作出若干改进,这些改进也应视为本发明的保护范围。
Claims (4)
1.一种嵌入式软件任务调度方法,其特征在于,所述方法包括:
任务调度内核初始化,包括定义等待任务队列、待激活任务队列和最大任务数量,并创建任务计时器;
创建任务,需要指定任务函数指针和响应时间;
任务删除,任务删除是在等待任务队列中查找任务,并将其对应的任务函数指针置空;
刷新任务等待时间,定时刷新等待任务队列中任务的等待时间,若等待时间为零,则将任务放入待激活任务队列;
获取待激活任务,查找待激活队列中任务的任务函数指针是否为空,非空则执行该函数。
2.根据权利要求1所述的嵌入式软件任务调度方法,其特征在于:所述最大任务数量的定义根据实际系统需求进行灵活设置。
3.根据权利要求1所述的嵌入式软件任务调度方法,其特征在于:所述更新任务等待时间的更新分辨率根据实际系统需求进行灵活设置,其刷新任务等待时间为所有任务同步刷新。
4.根据权利要求1所述的嵌入式软件任务调度方法,其特征在于:在采用所述方法创建任务时,最少仅需指定任务函数和任务响应时间,其它任务参数根据实际系统需求灵活设置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101678775A CN103257864A (zh) | 2013-05-09 | 2013-05-09 | 嵌入式软件任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2013101678775A CN103257864A (zh) | 2013-05-09 | 2013-05-09 | 嵌入式软件任务调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103257864A true CN103257864A (zh) | 2013-08-21 |
Family
ID=48961800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2013101678775A Pending CN103257864A (zh) | 2013-05-09 | 2013-05-09 | 嵌入式软件任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103257864A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000461A (zh) * | 2020-06-30 | 2020-11-27 | 航天信息股份有限公司 | 一种用于嵌入式终端任务运行时间的采集方法及装置 |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN117421106A (zh) * | 2023-12-11 | 2024-01-19 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
CN1577261A (zh) * | 2003-06-30 | 2005-02-09 | 中兴通讯股份有限公司 | 一种对单片机封装的系统和方法 |
CN101382968A (zh) * | 2008-10-17 | 2009-03-11 | 北京航空航天大学 | 一种先进综合式航空电子仿真系统及其仿真方法 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN101950260A (zh) * | 2010-09-10 | 2011-01-19 | 中兴通讯股份有限公司 | 一种处理器程序调度方法及装置 |
CN102043667A (zh) * | 2010-11-25 | 2011-05-04 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式操作系统的任务调度方法 |
CN102752136A (zh) * | 2012-06-29 | 2012-10-24 | 广东东研网络科技有限公司 | 通信设备操作调度方法 |
-
2013
- 2013-05-09 CN CN2013101678775A patent/CN103257864A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
CN1577261A (zh) * | 2003-06-30 | 2005-02-09 | 中兴通讯股份有限公司 | 一种对单片机封装的系统和方法 |
CN101382968A (zh) * | 2008-10-17 | 2009-03-11 | 北京航空航天大学 | 一种先进综合式航空电子仿真系统及其仿真方法 |
CN101859260A (zh) * | 2010-05-14 | 2010-10-13 | 中国科学院计算技术研究所 | 用于操作系统中的定时器管理装置和管理方法 |
CN101950260A (zh) * | 2010-09-10 | 2011-01-19 | 中兴通讯股份有限公司 | 一种处理器程序调度方法及装置 |
CN102043667A (zh) * | 2010-11-25 | 2011-05-04 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式操作系统的任务调度方法 |
CN102752136A (zh) * | 2012-06-29 | 2012-10-24 | 广东东研网络科技有限公司 | 通信设备操作调度方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000461A (zh) * | 2020-06-30 | 2020-11-27 | 航天信息股份有限公司 | 一种用于嵌入式终端任务运行时间的采集方法及装置 |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN117421106A (zh) * | 2023-12-11 | 2024-01-19 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
CN117421106B (zh) * | 2023-12-11 | 2024-03-08 | 湖南行必达网联科技有限公司 | 一种嵌入式软件的任务调度方法、系统及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105159776B (zh) | 进程处理方法及装置 | |
CN101556545B (zh) | 一种实现进程支持的方法、装置和多线程系统 | |
US8261284B2 (en) | Fast context switching using virtual cpus | |
US9858115B2 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
CN102779072B (zh) | 一种嵌入式系统及其应用进程的休眠与唤醒方法 | |
EP3281125B1 (en) | Event processing system paging | |
CN102096603B (zh) | MapReduce系统中的作业分解控制方法及设备 | |
US20140237476A1 (en) | Centralized task scheduling | |
CN105608049A (zh) | 智能终端的cpu控制方法及控制装置 | |
CN108536531B (zh) | 一种基于单片机的任务调度和电源管理方法 | |
CN107291481B (zh) | 一种组件更新方法、装置和系统 | |
US9529625B2 (en) | Method and system for providing stack memory management in real-time operating systems | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
CN103473129A (zh) | 线程数目可伸缩的多任务队列调度系统及其实现方法 | |
CN103488536A (zh) | 任务调度方法、装置及操作系统 | |
US8132171B2 (en) | Method of controlling thread access to a synchronization object | |
CN103902319A (zh) | 基于服务器端javascript的热部署方法 | |
CN103257864A (zh) | 嵌入式软件任务调度方法 | |
CN105740075B (zh) | 一种cpu调度方法与系统 | |
US20160147577A1 (en) | System and method for adaptive thread control in a portable computing device (pcd) | |
CN106095055B (zh) | 一种应用程序的关闭方法和装置 | |
CN112256419A (zh) | 一种基于定时器时钟控制的嵌入式系统多任务调度方法 | |
CN104597820A (zh) | 一种扩展单片机硬件定时器的方法 | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
Yokoyama et al. | A real-time operating system with location-transparent inter-core and inter-node system calls for distributed embedded control systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20130821 |