您的位置: 旅游网 > 社会

通過任務分割提高嵌入式系統的實時性軟件編

发布时间:2019-11-09 08:10:41

通过任务分割提高嵌入式系统的实时性 - 软件编程/OS - 电子工程

多任务系统的执行过程实际上就是一系列任在这5种状态中循环流动、轮流被内核调度的过程多任务运行使CPU的利用率得到最大的发挥,并使应用程序模块化

1.2 嵌入式多任务实时系统

RTOS本质上就是嵌入的实时内核,它负责管理各个任务,或者说是为每上任务分配CPU时间,并且负务之间的通信实时内核可分为可剥夺型和不同剥夺型两类因此,按照所使用内核的不同,嵌入式实时系统也可分为两类:使用不可剥夺型内核的嵌入式实时系统和使用可剥夺型内核的嵌入式实时系统

2 实时系统中的长任务问题

2.1 长任务的定义

在RTOS中,长任务就是指整个任务的执行时间较长,超出了RTOS中其它某一个或某几个任务的实时要求容限,而对整个RTOS 的实时性构成威胁的那些任务

2.2 长任务对RTOS的影响

当使用可剥夺型实时内核时,长任务由于执行的时间较长,因而更容易被高优先级的任务打断;一旦高优先级的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说任务被挂起了,那个高优先级的任务立刻得到了CPU的控制权这样会出现两个问题:一是长任务可能在一次执行的过程中被频敏打断,长时间得不到一次完整的执行;二是长任务被打断时,可能要保存大量的现场信息,其目的是为了保证在高优先级的任务执行完返回后,长任务能得以继续执行然而,这样做要占用一定的系统资源,同时保存现场本身也是要占用CPU时间的,因此,实时性也会下降

当使用不可剥夺型实时内核时,长任务对RTOS的影响更为明显,因为在这种内核中,任务级响应时间取决于最长的任务执行时间这也就是说由于长任务的存在,任务级的响应时间要变长其结果是CPU长时间停留在长任务中,其它的任务得不到实时的响应,甚至于根本得不到执行,系统的实时性势必要下降

总之,无论是使用可剥夺型内核,还是使用不可剥夺型内核,长任务都会对RTOS构成严重的威胁

3 长任务问题的解决

解决长任务问题最有效的途径是进行任务分割所谓任务分割指将影响系统实时性的长任务分割成若干个小任务这样单个任务的执行时间变短,系统的任务级响应时间变短,实时性提高

3.1 对RTOS的分析与计算

当然,长任务的分割必须结合系统中所使用的内核,以及各任务对实时性的要求情况,进行必要的分析计算,才能保证分割的合理性和有效怀,具体的步骤如下:

①分析系统共有多少个任务,这些任务对实时性的要求有多高,求出各个任务所要求的最小执行频率 f1,f2,f3……fn

②计算目前各任务的实际执行时间t1,t2,t3……tn

③确定系统中的长任务

如果max(t1,t2,t3……tn)≤min(1/f1,1/f2,1/f3……1/fn)

则此系统中不存在长任务

如果max(t1,t2,t3……tn) min(1/f1,1/f2,1/f3……1/fn)

则存在长任务,而且执行时间为max(t1,t2,t3……tn)的那个任务就是要找的长任务

④分析此长任务是否需要分割

分析一下是什么原因导致执行的时间过长,这个时间还能够通过程序的优化来缩短如果能,则不需要进行任务分割;否则要对这个长任务进行分割

3.2 任务分割

常用的任务分割的方法有以下两种:

①将长任务按功能分为若干个小模块,每一个模块构成一个小任务,每个小任务执行一个相对独立的功能,且要保证执行时间t min(1/f1,1/f2,1/f3……1 /fn)各个任务被内核顺序调用,合起来完成整个任务的功能

②有的长任务比较特殊,例如键盘任务和动态LED显示任务,很难按照方法1所说的把它分成若干个功能相对独立的小模块这时,一般是按照方便保存现场信息原则,强制将其分割成若干个小任务,每个任务在min(1/f1,1/f2,1/f3……1/fn)时间内主动保存现场信息、放弃CPU的控制权,等到再次被内核调度时继续执行

这种分割方法相对复杂,各任务之间界限不是很明显,看似未经分割,但实际上它确实是由多次任务中断来完成下面就以这种分割方法为例具体说明

4 实例分析

4.1 系统介绍

在此,系统的硬件基础是基于MC68HC908GP32单片机系统的,用其普通I/O口作为矩阵式键盘的输入输出引脚;软件基础是在MC68HC908GP32中运行 Motorola公司的Joanne Santangeli编写的基于时间片的不可剥夺的实时内核,如图2所示

儿童咳嗽吃什么专用药
康缘药业中药提取新工艺
咳嗽舌红苔薄黄是热咳吗
猜你会喜欢的
猜你会喜欢的