System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及嵌入式软件开发,具体涉及一种嵌入式软件的任务调度方法、系统及设备。
技术介绍
1、嵌入式软件是指运行在嵌入式设备(如嵌入式多任务车用控制器设备)中的软件,它通常需要实现多种功能和任务,如数据采集、信号处理、通信协议、用户界面等。为了有效地管理和执行这些任务,需要对任务进行调度,以保证任务的实时性、可靠性和性能。
2、现有一种嵌入式软件任务分时调度方法,其通过初始化各任务执行基本信息,设置任务管理队列,将要执行的任务添加至任务管理队列中;然后分时调用任务调度函数,将任务执行周期划分为多个时间片,每个时间片查询任务管理队列成员,判断是否需要执行该任务管理队列成员相应任务,如果需要执行该任务管理队列成员相应任务,则按照执行频率调用任务执行函数,直至该任务执行完成或超出执行时间,最后根据是否允许自删除标志,将该任务从队列中删除。
3、然而,上述方法虽能实现任务调度,但仍存在结构分层不清晰,造成代码耦合度高的缺陷,且资源消耗大,不能满足毫秒级的调度时间需求。
技术实现思路
1、本专利技术为克服现有嵌入式软件任务调度方法存在的代码耦合度高、资源消耗大、不能满足毫秒级的调度时间需求的缺陷,提出如下技术方案:
2、第一个方面,本专利技术提出一种嵌入式软件的任务调度方法,包括:
3、s10:创建并初始化用于存储和管理已注册的任务的任务管理结构体。
4、s20:注册新的任务,并将新的任务添加到所述任务管理结构体中。
6、s40:遍历所述任务管理结构体中的任务,并计算当前时间变量与上次任务调度时间变量的差值。
7、s50:判断所述差值是否大于或等于预设的任务周期变量,若是,则执行当前遍历到的任务,并更新上次任务调度时间变量然后跳转执行s30,若否,则不执行当前遍历到的任务直接跳转执行s30。
8、作为优选的技术方案,所述任务管理结构体包括任务数组、任务注册个数变量和当前时间变量。
9、所述任务数组用于为新注册的任务分配空闲的数组位置。
10、所述任务注册个数变量用于记录当前注册的任务个数。
11、所述当前时间变量用于存储当前系统的时间戳。
12、作为优选的技术方案,所述任务数组中的结构体成员包括任务回调函数、任务周期变量、上次任务调度时间变量和任务id变量。
13、s20中,所述注册新的任务,并将新的任务添加到所述任务管理结构体中的步骤包括:
14、根据当前任务注册个数变量获取任务数组中的空闲位置。
15、将当前任务回调函数、当前任务周期变量、当前时间变量和当前数组索引赋值分别赋值给所述任务结构体指针中的任务回调函数、任务周期变量、上次任务调度时间变量和任务id变量。
16、将任务注册个数变量自增1。
17、作为优选的技术方案,在s20中,所述方法还包括:在注册新的任务后,将新的任务设置为动态调整任务或周期性任务。
18、作为优选的技术方案,在s50中,所述方法还包括:
19、在执行当前遍历到的任务时,若被执行的任务的实际执行时间大于预设的任务周期变量且该被执行的任务被设置为动态调整任务,则预设的任务周期变量自增到大于该被执行的任务实际执行时间。
20、作为优选的技术方案,在s50中,所述方法还包括:在执行当前遍历到的任务时,若该任务被设置为周期性任务,则在执行完该任务后,将该任务的上次任务调度时间变量加上该任务的任务周期变量,得到该任务的下次任务调度时间变量,并将该任务按照下次任务调度时间变量的大小重新插入到任务管理结构体中。
21、作为优选的技术方案,所述执行当前遍历到的任务,包括:
22、从任务管理结构体中取出当前遍历到的任务的任务结构体。
23、从所述任务结构体中获取任务回调函数的地址,通过所述地址调用该任务的任务回调函数。
24、利用所述任务回调函数执行该任务相应的逻辑。
25、作为优选的技术方案,在利用该任务回调函数执行当前遍历到的任务相应的逻辑时,若遇到需要等待的条件或事件,则将该任务的任务状态变量设置为阻塞,并将该任务从任务管理结构体中移除,直至条件或事件满足后再将当前任务重新加入到任务管理结构体中,继续利用该任务回调函数执行当前遍历到的任务相应的逻辑。
26、第二个方面,本专利技术还提出一种嵌入式软件的任务调度方法,包括:
27、任务管理模块,用于创建并初始化用于存储和管理已注册的任务的任务管理结构体。
28、任务注册模块,用于注册新的任务,并将新的任务添加到所述任务管理结构体中。并判断所有已注册的任务是否已执行,若是,则结束任务调度,若否,则调用任务调度模块进行任务调度。
29、任务调度模块,用于遍历所述任务管理模块中的任务,并计算当前时间变量与上次任务调度时间变量的差值,当该差值大于或等于预设的任务周期变量,则执行当前遍历到的任务,并更新上次任务调度时间变量,当该差值小于预设的任务周期变量时,则不执行当前遍历到的任务。
30、第三个方面,本专利技术还提出一种电子设备,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如第一个方面中所述的嵌入式软件的任务调度方法所执行的操作。
31、本专利技术的有益效果至少包括:
32、(1)本专利技术通过将任务的存储和管理与任务的注册分离,实现了任务的动态注册和调度,相比于传统的嵌入式软件任务调度方法通常需要在代码中预先定义所有的任务,并在一个固定的循环中依次执行,降低了代码耦合度。
33、(2)本专利技术根据当前时间变量和上次任务调度时间变量的差值,判断是否需要执行当前遍历到的任务,从而避免了不必要的任务执行,且可以根据不同任务的实时性要求,设置不同的任务调度周期,相比于传统的嵌入式软件任务调度方法,通常需要使用固定的调度周期或者基于优先级的抢占式调度,减少了资源消耗,从而满足毫秒级的调度时间需求。
本文档来自技高网...【技术保护点】
1.一种嵌入式软件的任务调度方法,其特征在于,包括:
2.根据权利要求1所述的嵌入式软件的任务调度方法,其特征在于,所述任务管理结构体包括任务数组、任务注册个数变量和当前时间变量;
3.根据权利要求2所述的嵌入式软件的任务调度方法,其特征在于,所述任务数组中的结构体成员包括任务回调函数、任务周期变量、上次任务调度时间变量和任务ID变量;
4.根据权利要求1所述的嵌入式软件的任务调度方法,其特征在于,在S20中,所述方法还包括:在注册新的任务后,将新的任务设置为动态调整任务或周期性任务。
5.根据权利要求4所述的嵌入式软件的任务调度方法,其特征在于,在S50中,所述方法还包括:
6.根据权利要求4所述的嵌入式软件的任务调度方法,其特征在于,在S50中,所述方法还包括:在执行当前遍历到的任务时,若该任务被设置为周期性任务,则在执行完该任务后,将该任务的上次任务调度时间变量加上该任务的任务周期变量,得到该任务的下次任务调度时间变量,并将该任务按照下次任务调度时间变量的大小重新插入到任务管理结构体中。
7.根据权利要
8.根据权利要求7所述的嵌入式软件的任务调度方法,其特征在于,在利用该任务回调函数执行当前遍历到的任务相应的逻辑时,若遇到需要等待的条件或事件,则将该任务的任务状态变量设置为阻塞,并将该任务从任务管理结构体中移除,直至条件或事件满足后再将当前任务重新加入到任务管理结构体中,继续利用该任务回调函数执行当前遍历到的任务相应的逻辑。
9.一种嵌入式软件的任务调度系统,其特征在于,包括:
10.一种电子设备,其特征在于,所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至8中任一项所述的嵌入式软件的任务调度方法所执行的操作。
...【技术特征摘要】
1.一种嵌入式软件的任务调度方法,其特征在于,包括:
2.根据权利要求1所述的嵌入式软件的任务调度方法,其特征在于,所述任务管理结构体包括任务数组、任务注册个数变量和当前时间变量;
3.根据权利要求2所述的嵌入式软件的任务调度方法,其特征在于,所述任务数组中的结构体成员包括任务回调函数、任务周期变量、上次任务调度时间变量和任务id变量;
4.根据权利要求1所述的嵌入式软件的任务调度方法,其特征在于,在s20中,所述方法还包括:在注册新的任务后,将新的任务设置为动态调整任务或周期性任务。
5.根据权利要求4所述的嵌入式软件的任务调度方法,其特征在于,在s50中,所述方法还包括:
6.根据权利要求4所述的嵌入式软件的任务调度方法,其特征在于,在s50中,所述方法还包括:在执行当前遍历到的任务时,若该任务被设置为周期性任务,则在执行完该任务后,将该任务的上次任务调度时间变量加上该任务的任务周期变...
【专利技术属性】
技术研发人员:陈雄宏,梁谷羿,郭峰,
申请(专利权)人:湖南行必达网联科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。