新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 通过任务分割提高嵌入式系统的实时性

通过任务分割提高嵌入式系统的实时性

作者: 时间:2010-01-15 来源:网络 收藏


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 任务分割

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

①将长任务按功能分为若干个小模块,每一个模块构成一个小任务,每个小任务执行一个相对独立的功能,且要保证执行时间tmin(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所示。


此内核主要是利用微控制器内部的时间模块产生恒定的实时中断,将CPU的运行时间分成一个个时间片。内核的任务调度工作都是在时间片的开始阶段完成的,而每个任务都必须在单个时间片内完成。

在这个内核中,每0.5ms发生1次时钟中断,而每10次时钟中断组成了1个时间片(5ms)。任务1的优 先级最高,每2个时间片(10ms)会执行1次,任务2每4个时间片(20ms)执行1次,优先级最低的任务6则每64个时间片(320ms)会执行1次。

4.2 系统中的键盘任务问题

在单片机系统中,键盘主要用于输入数据、代码和命令,因此系统必须循环不停地扫描扫描;一是有键波按下,CPU立即做出响应。键盘任务子程序也是根据这个要求而设计的。一般有两种处理方式:一是中断方式,二是查询方式。从有键按下时开始,到按键释放并转相应子程序而终止。该任务被内核调度的情况如图3所示。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭