首页 > 新闻中心 > > 正文

嵌入式微内核实时操作系统分析与测试

更新时间: 2005-12-06 14:58:27来源: 粤嵌教育浏览量:3459

1 嵌入式实时操作系统概述

嵌入式实时操作系统(ERTOS)是操作系统研究的一个重要分支,它与一般商用多任务OS,如UNIX,Windows等,的不同之处在于:商用多任务OS的目的是追求系统资源利用率和公平对待所有的系统请求;而ERTPS追求的是实时性、可确定性、可靠性。

自20世纪90年代以来,ERTOS发展迅速。国外商用EPTOS有:Wind River公司的VxWorks、IS(Integrated Systems)公司(2000年已被Wind River公司合并)的pSOS、AC(Accelerated Technology)公司的Nucleus等等。国外ERTOS很多,大多是针对不同应用的专用ERTOS或通用ERTOS。

与传统的嵌入式系统软件开发模式相比,虽然ERTOS会要求一些额外的开销,但可以由现代微控制器的高速度、大存储器以及产品提前进入市场的优势来弥补。的ERTOS可以对几十个系列的嵌入式处理器MPU、微控制器MCU提供API接口。在此基础上,可以编定出各川硬件驱动程序、产品库函数,与通用性的应用程序一起作为产品销售。

2 ERTOS——Wolf分析

嵌入式实时操作系统产品Wolf(南开津科ERTOS)是一个开放式的微内核实时操作系统。其基本设计思想是:

*低功耗(具有间歇式工作机制,支持哈偶结构);

*支持智能输入/输出设备;

*支持微型大容量存储卡(SM卡、SD卡等);

*本质安全,支持信息版权及安全保护;

*为第三方提供产品级的SDK。

具有以下特点:

*微内核结构;

*支持多种CPU产品;

*基于优先级的抢占式调度和轮转调度相结合的多任务调度;

*极小的内存开销;

*高可用性、可靠性。

2.1 微内核体系结构

微内核体系结构是相对层次内核体系结构而言的。层次操作系统体系结构如图1(a)所示,大部分或全部层次功能由内核实现,所有的接口功能只与相邻层有关,系统和应用独立,但其每一功能层的变化都会影响整个系统,层间安全性低。微内核体系结构如图1(b)所示,其基本思想是将原来属于传统如图1(b)所示,其基本思想是将原来属于传统操作系统内核的一些功能和服务从内核中分出,以子系统(组件)的形式与内核或其它子系统相互作用。组件功能以服务进程的方式通过消息与微内核和其它组件相互通信来完成。微内核的主要功能就是消息交换:确认消息、在组件间传送消息及准许对硬件操作。微内核结构的主要优点是:系统具有统一的接口,扩展性、可靠性及支持分布式系统。

Wolf是一个具有微内核结构的嵌入式操作系统,它由一个实时多任务内核和多个组件的集合组成。软件组件都是独立的标准构件块,可以不用变更地从一个应用程序移到另一个应用程序。Wolf体系结构如图2所示。

2.2 微内核剖析

Wolf多任务调度是动态基于消息触发调度机制,任务切换由临时事件驱动,任务间是内部同步,不同的任务能够异步招待。Wolf内核负责维护系统中的所有任务的当前状态,所有任务具有以下四种状态之一:

*就绪态(Ready),缩写为R。一个就绪态任务是可运行的,等待高优先级的任务释放CPU。

*运行态(Run),缩写为E。一个运行态的任务是一个正在使用CPU的就绪任务。任何时刻有且只有一个运行着的任务。

*阻塞态(Blocked),缩写为B。一个任务被阻塞是由于任务自身的多个活动的必要手段。一个任务不能从就绪态到阻塞态。

*刮起态(Suspend)。一个挂起态的任务不能执行,主要用于调试。

*任务调试程序维护1个或多个跟踪每个任务状态的内部列表。它有一个就绪列表和每个(任务正在等待的)同步对象的一个单独受阻列表。就绪队列前头的任务是下一个要运行的任务。在受阻列表中的任何任务都被挂起,每当受阻列表中的一个任务等待的事情发生时,该任务就从受阻列表中被删除,并被放到就绪列表中等待执行、如图3所示。

(1)多任务调度

任务调度是指根据一定的约束规定,将CPU分配给符合条件的任务使用。约束规则又称为调度算法。Wolf内核采用多种调度算法分配CPU给处于Ready态(就绪态)的任务。默认基于优先级的抢占式调度算法,也支持基于时间片的轮转(Round-Robin)调度算法。在嵌入式系统实时应用中,不是每次抢占都是合理的,非期待的抢占会导致系统出现无法预料的情况,Woif提供允许和禁止调度的功能调用实现禁止抢占机制。

(2)任务通信、同步、互斥机制

任务间通信机制是提供多任务间相互同步和通信,以协调独立任务之间活动的机制。

①共享内存,提供数据共享。Woif采用简单快速的禁止中断手段保证共享数据被互斥访问②消息队列实现一CPU内多任务间通信和同步。Woif提供消息队列函数库创建、删除、发送消息,消息队列是动态建立的抽象对象,不绑定于任务一个任务。

3 微内核测试设计方案

设计嵌入式操作系统软件测试方案时,我们根据系统分析的基本思想,定用判定表、功能矩阵将其划分成状态测试、系统调用功能测试。

(1)多任务状态测试

下面运用判定表设计状态转移测试用例。首先确定状态转移活动(5类活动):

①运行态到阻塞态E→B;

②阻塞态到就绪态B→R;

③阻塞态到运行态B→E;

④就绪态到就绪态E→R。

⑤执行态到就绪态E→R。

然后列出不同活动必须遵守的状态转换规则并编号。这里编号形式定义为:具体活动编号+数字序列编号。例如:用转换规则编号③2,表明该规则是活动3必须遵守的第2条规则。

以下是部分转换规则。

◇一个运行态的任务E变成阻塞态B(E→B):

①,它从一个空消息队列中请求一个消息;或者②,它等待一个不会即将发生的事件条件;或者③,它请求一个当前不能提供的信号量标志;或者④,它请求一段目前不能提供的内存;或者⑤,它暂中止一个时间段或直到一个特殊的时刻。

◇一个阻塞态的任务B变成就绪态R(B→R):

①,B是消息等待队列中的个任务,它等待的消息来到消息队列中;或者②,一个事件发送给了B,满足了它一直等待的事件的条件;或者③,一个信号量标志被返回,B是等待队列中的个;或者④,返还的内存区允许分配给B;或者⑤,B一直在超时等待一个事件、消息、信号量或一个内存段(当超过时间间隔)。

◇一个阻塞态的任务B变成运行态(B→E):

任何一个(B→R)任务条件满足,该任务运行优先级就高于运行态任务,这个运行态任务是能被抢先的。

◇一个就绪态的任务R会变成运行态任务(R→E),在当前运行态任务是:

①阻塞;或者②,可抢占。R有较高的优先级。

◇一个运行态的任务R会变成就绪态任务(E→R),当:

①任何一个阻塞状态的任务B满足了(E→R)的发生条件(由于当前E或一个ISR系统调用);或者②,满足(R→E)的2至4条件中的任何一个条件发生。

,确定判定条件,建立判定表。这里有3个判定条件:当前状态是E,或当前状态是B,或当前状态是R。如满足对应规则,则填写“Y”,不满足对应规则,则填写“N”。如果在判定条件的规则下,进行的活动正确,则用“√”确认,错误用“×”确认,尚未测试用“□”确认,无关用“⊙”确认。

表1为任务状态判定表(部分)。

表1 任务状态判定表(部分)

条  件 ①1 ①2 ①3 ①4 ①5 ②1 ②2 ②3 ②4 ②5
当前状态E Y Y Y Y Y N N N N N
当前状态B N N N N N Y Y Y Y Y
当前状态R N N N N N N N N N N
①E→B
②B→R
③B→E
④R→E
⑤E→R × × × × ×

表1显示了测试活动1和活动2的正确性。其中满足条件2的活动有2个,即活动2和活动5,但由于活动5并支持对应的规则,所以结果用“×”标示。

由表1可以看出,使用判定表明晰测试覆盖,能保持测试的完备性和一致性。

(2)多任务功能测试

首先,分析Wolf的微内核功能,将其划分成3个测试功能域:

①面向应用层的系统服务(调用)测试域。Wolf为应用层提供丰富的系统调用函数,将其细分为操作系统服务类、内存服务类、文件系统服务类、I/O服务类及调试平台服务5类。

②面向内核的多任务调度测试、任务通信测试及内存测试域。

③面向低层硬件的设备驱动测试、时钟测试、功耗测试域。

其次,将系统调用函数使用的数据类型分类,如表2所列。经过数据分类,使得上百个函数测试通过20多个数据类型的测试来实现,。提高测试效率。测试提供的统计数字为的测试失败率、覆盖率提供依据。(N1,N2,N3,N4,N5,N6分别代表测试的次数)

表2 系统调用数据类型分类

数据类型 函数调用的次数 测试用例测试的个数 测试域
①String N1 N4 应用层
②Buffer N2 N5 内核层
③Integer N3 N6 应用层
       

结束语

本文在嵌入式微内核操作系统Wolf测试过程中设计出有效的测试方案和方法,取得良好的效果。Wolf微内核操作系统研制成功以来,能够支持多种便携式信息处理设备,例如已产业化的阅读不耗电电子书(eBook)。

Wolf作为电子阅读应用软件的开发和数字图书馆阅读终端产品开发的有利支持系统,与北大方正Apabi电子书籍网络出版平台系统及电子出版业相结合,带给人们一个便携式阅读电子书籍的新时代。

免费预约试听课