




免费预览已结束,剩余17页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式实时操作系统软件测试方法综述石亦磊(湖南大学 计算机与通信学院 长沙 410082)()摘要:嵌入式实时操作系统(RTOS:Real Time Operating System)为嵌入式应用的开发者提供系统级的支撑环境,简化嵌入式软件设计过程,是操作系统的一个重要分支。嵌入式实时操作系统同通用操作系统有天然的联系,但同时区别也十分明显。因此,对一个RTOS的评价要从很多角度进行,如体系结构、API的丰富程度,网络支持、可靠性等。这就造成了对RTOS测评方法也多种多样。通过对实时嵌入式系统和基于ITRON4.0标准的操作系统TOPPERS/ASP等的重点研究,深入分析理解嵌入式实时操作系统的本质,尤其是分析RTOS的执行流程和TOPPERS/ASP系统完备的日志系统功能,着重考察利用该日志系统对TOPPERS/ASP系统进行测试评价的方法及测评的指标等问题。关键词:嵌入式实时操作系统;软件测试;系统日志;实时性Abstract: Real time operating system(RTOS)provide the embedded application developers a system-level support environment, as well as simplify the process of the design of embedded software, so it becomes a important branch of the operating system. Though RTOS has the nature connection with general-purpose operating systems, meanwhile the difference between them is very obvious. So the analysis to a RTOS includes many respects, such as architecture, the richness of API, network support, Reliability etc. These results in the analysis methods of RTOS become Variety.Our research focus on the RTOS and TOPPERS/ASP operating system which based on the ITRON4.0 Standard, And we had a deep analysis on the inside of the RTOS, especially the execution process and the log system function of TOPPERS/ASP. Our target is to find a way to use the log system to support the analysis the TOPPERS/ASP and the Evaluation indicators.Keywords: Real time operating system; Software testing; System log; Real-time 1 嵌入式实时操作系统的测试方法概述嵌入式实时操作系统是一个可以在有限确定的时间内对异步输入进行处理并输出的嵌入式信息系统。一个高性能的嵌入式实时操作系统应具备良好的综合性能,包括系统体系结构、基本系统功能支持(如内存和中断管理)、APl支持和稳定性等。它通常运行在包括微处理器、定时器、序列发生器、控制器、存储器(ROM、RAM和Flash存储器)、传感器等一系列电子芯片与器件的硬件平台上,以嵌入式系统的形式隐藏在各种装备产品和系统中。应用领域有制造工业、过程控制、通信、仪器、仪表、汽车、船舶、航空、航天、军事装备、消费类产品等方面。1.1 嵌入式系统测试的特点嵌入式软件开发有别于桌面软件系统开发的一个显著的特点是它一般需要一个交叉编译和调试环境,即编辑和编译在主机上进行(如在PC机的WINDOWS操作系统下),编译好的软件需要下载到目标机上运行,主机和目标机建立起通讯连接,并传输调试命令和数据。由于主机和目标机往往运行着不同的操作系统,而且处理器的体系结构也彼此不同,这就提高了嵌入式开发的复杂性。总的来说,嵌入式开发所面临的问题主要表现在以下几个方面:涉及多种CPU及多种OS;开发工具种类繁多;对目标系统的观察和控制。1.2 评价嵌入式实时操作系统的方法 随着对嵌入式产品日益增多的需求,对嵌入式产品的评测都有着迫切的需求, 已有的系统性能评估的方法可以分为解析法、模拟法、测量法和基准程序法2。它们各有特点,各有优缺点,并相互验证。 1.2.1 解析法采用分析技术,假定计算机系统参数与性能指标参数之间存在某种关系,按工作负载的驱动条件列出方程,用数学方法求解直接得出系统的性能。解析法采用的公式还不是很完善,需要假设系统处于一系列理想状态,一般用在系统的设计阶段,结论的正确性需要经过测量方法的验证。1.2.2 模拟法按照被评价的系统的运行特性建立一个系统模型,按照系统有能有的工作负载特性,建立工作负载模型,编制一个模拟程序,模仿被评价系统的运行过程,在其他系统上反复运行并得出结论,模拟法也用于系统的设计阶段,由于软件模拟法带来的误差,得到的结果往往不能反应系统的真实性能,结论的正确性也需要经过测量方法的验证。 1.2.3 测量法测量技术则是对投入运行的现有系统直接测量,因此它的结论是真实、精确确和可信的。分析、模拟技术是基于对以前的测量结果积累归纳得来的,所以说测量是最基本的评价技术。测量采用的工具有,硬件设备、软件或另一个计算机系统。测量要求得出精确的数值,需要从概念上和具体的结构上对待测系统进行大量的分析,设计专门的测量工具,根据要考虑的因素和环境进行反复测量并分析结果,所以它需耍的时间最长。性能基准程序是以单个良好定义的任务或者一组任务形式出现的,用来度量计算机系统或构件性能的一个测试。这些任务被称为工作负载,在基准程序中,必须明确规定所选用的基准程序及其特性、运行方式,并规定评估指标体系。一般需要重复多次运行基准程序才能获得有意义的统计结果。性能基准序评价法是采用软件的方法评测系统的性能,其较高的灵活性、较低成本加上易于在线实现的特性,使之成为普遍流行的评测方法,但是通过软件得到的测量结果精度较低,并且执行基准程序会影响系统的性能,进而影响结果的可靠性。为了达到较高的测量精度、准确度,必须采取相应的补偿措施。软件方法不可避免的要占用系统时间空间上的资源,所以干扰度大,精度低,分辨率低,但灵活性高,成本低,安装使用方便,不适用于测量精度要求很高的系统参数,构建测量工具时应发挥软件测量的优势,注重功能的测试,选用实际的应用程序或与它们相同功能的专用测试程序,这是硬件方法所不能达到的。基准程序法可分为两种,一种是测量系统级的参数(如响应时问、上下文切换时间等),称为微观基准程序。另一种是提供工作负载,通过工作负载得到待测系统宏观方面的参数(如任务执行时间),称为宏观基准程序3。1.3 嵌入式实时操作系统的测试工具嵌入式实时操作系统作为嵌入式系统发展到一定阶段的产物,其同嵌入式系统的联系是天然和紧密的,对嵌入式实时操作系统的测试工具也沿袭了传统嵌入式系统的工具,大体上可分为基于硬件的测试工具和基于软件的测试工具。1.3.1 基于硬件的测试工具基于硬件的测试工具的主要应用时在嵌入式系统硬件设计和调试阶段,用于测试和查找硬件方面的故障和问题等。但在嵌入式操作系统层次,也可以适当以硬件测试工具作为辅助测试工具,对系统及软件做出直接和准确的测试和定位。常见的基于硬件的调试工具有万用表、LED、示波器和逻辑分析仪等,尽管主要的应用场所是板级硬件设计过程中,但操作系统和应用也可以借助这些工具做出一些简单的测试和定位,例如用示波器可以用来查看操作系统控制的目标机与外部的交互过程,监视目标板内部电路上的信号和查看总线上的时序关系等。逻辑分析仪在示波器的基础上,可以监视硬件电路工作时的逻辑电平,并加以存储,用图形的方式直观的表达出来,便于用户检测、分析电路设计(硬件设计和软件设计)中的错误,从而迅速定位错误。1.3.2 基于软件的测试工具一般来说,软件测试有7个基本阶段,即单元或模块测试、集成测试、外部功能测试、回归测试、系统测试、验收测试、安装测试。嵌入式软件测试在4个阶段上进行,即模块测试、集成测试,系统测试、硬件软件集成测试。前3个阶段适用于任何软件的测试,硬件软件集成测试阶段是嵌入式软件所特有的,目的是验证嵌入式软件与其所控制的硬件设备能否正确地交互。用于辅助嵌入式实时操作系统测试的软件测试工具很多,下面对几类比较有用的测试工具加以介绍。 1.内存分析工具。在嵌入式系统中,内存约束通常是有限的。内存分析工具用来处理在动态内存分配中存在的缺陷。当动态内存被错误地分配后,通常难以再现,可能导致的失效难以追踪,使用内存分析工具可以避免这类缺陷进入功能测试阶段。目前有两类内存分析工具软件的和硬件的。基于软件的内存分析工具可能会对代码的性能造成很大影响,从而严重影响实时操作;基于硬件的内存分析工具价格昂贵,而且只能在工具所限定的运行环境中使用。 2.性能分析工具。在嵌入式系统中,程序的性能通常是非常重要的经常会有这样的要求,在特定时间内处理一个中断,或生成具有特定定时要求的一帧。开发人员面临的问题是决定应该对哪一部分代码进行优化来改进性能,常常会花大量的时间去优化那些对性能没有任何影响的代码。性能分析工具会提供有关的数据,说明执行时间是如何消耗的,是什么时候消耗的,以及每个例程所用的时间。对于大多数应用来说,大部分执行时间用在相对少量的代码上费时的代码估计占所有软件总量的5 20 。性能分析工具不仅能指出哪些例程花费时间,而且与调试工具联合使用可以引导开发人员查看需要优化的特定函数,性能分析工具还可以引导开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。 3.GUI测试工具。很多嵌入式应用带有某种形式的图形用户界面进行交互,有些系统性能测试是根据用户输入响应时间进行的。GUI测试工具可以作为脚本工具在开发环境中运行测试用例,其功能包括对操作的记录和回放、抓取屏幕显示供以后分析和比较、设置和管理测试过程。很多嵌入式设备没有GUI,但常常可以对嵌入式设备进行插装来运行GUI测试脚本。虽然这种方式可能要求对被测代码进行更改,但是节省了功能测试和回归测试的时间。4.覆盖分析工具。在进行白盒测试时,可以使用代码覆盖分析工具追踪哪些代码被执行过。分析过程可以通过插装来完成,插装可以是在测试环境中嵌入硬件,也可以是在可执行代码中加入软件,也可以是二者相结合。测试人员对结果数据加以总结,确定哪些代码被执行过,哪些代码被遗漏了。覆盖分析工具一般会提供有关功能覆盖、分支覆盖、条件覆盖的信息。对于嵌入式软件来说,代码覆盖分析工具可能侵入代码的执行,影响实时代码的运行过程。基于硬件的代码覆盖分析工具的侵入程度要小一些,但是价格一般比较昂贵,而且限制被测代码的数量。1.4 嵌入式系统测试环境嵌入式系统性能评测环境,通常包括用于嵌入式系统评测的测试主机和将要被测评的嵌入式系统,基本结构如下图所示。图 1-1 嵌入式系统测试环境构成 测试主机运行测试管理控制程序,控制性能测试过程的执行,编译、加载和启动性能测试基准程序,收集性能数据,分析测试结果,生成测试报告。被测评的嵌入式系统则运行下载的测试基准程序,测定和采集性能数据,并通过测试代理反馈给测试主机。两者之间通过某种连接(如串口、以太网等)方式,进行数据的通信与交互。2 嵌入式实时操作系统TOPPERS/ASP概述TOPPERS是Toyohashi OPen Platform for Embedded Real-time Systems的缩略。TOPPERS/ASP内核(以下简称为ASP内核)是第一个按照TOPPERS新一代内核规范开发的实时内核。正如ASP(Advanced Standard Profile)的名字所表现的一样,是在符合ITRON4.0规格的标准版的实时内核TOPPERS/JSP的基础上扩展/改良而开发的。TOPPERS/ASP内核遵循了以下5条原则:1.代码易于阅读和重写,作为开放源码,ASP的内核代码被很多人阅读及检查,并同时提高代码的质量。 因此,它的可读性是很重要的。 此外,嵌入式系统所包含的ASP的内核大小和功能各不相同。所以用户修改内核,如根据现行制度的要求进行功能的补充时,就必须要有这样一个 思路调整。因此,代码能否轻松地被重写,是一个重要的方面。 2.代码应该很容易被移植到一个新的目标系统中,目标相关部分与跟目标无关部分之间有明显的界限,目前TOPPERS/ASP内核已经可以运行在多种体系结构的处理器上,而且已有针对多种不同体系结构开发板对应的版本供移植参考,这就使得系统的可移植性大大提高。3.代码应该很容易被测试,TOPPERS/ASP的源代码设计十分复杂,代码的组织编写也讲求效率和精致,因此过于精致的代码需要更多的测试模式。ASP内核在编写时就要考虑到简单的测试。4.执行性能和低内存使用率,由于嵌入式系统的存储空间往往相当有限,TOPPERS/ASP内核从面向嵌入式系统要求入手,也尽量减少RAM的使用。例如把数据放入固定内存区之前的堆栈中。在执行任务切换之前内核会先备份目前正在使用的注册表时,它会选择堆栈,而不是管理任务状态区的TCB结构。此外,ASP内核与常量数据相分离,这将使常量数据很容易被放进ROM内存中。5.可伸缩性,内核是为各种规模的系统而设计的。 例如,只调用一小部分服务的系统的内存使用率会比使用更多服务的系统的内存使用率低,因此,TOPPERS/ASP也是模块化、可配置的嵌入式实时操作系统。2.1 TOPPERS/ASP内核的组成与结构TOPPERS/ASP大概可以分为以下几大块:1. 内核,位于kernel目录下,全部用标准C语言写成。2. 目标依赖部分,包括目标的初始化、时钟tick的具体实现、任务切换的底层部分、中断入口管理(这是TOPPERS/ASP中的一个亮点,也是平台移植过程中比较麻烦的地方)、主要用于串口的系统通信端口的底层实现,以及其他一些部分。3. 系统服务,主要是一个比较完善的日志(log)服务,可以很好的通过log反映系统的运行状态。4. 配置文件.cfg,TOPPERS/ASP中全局静态配置通过.cfg文件实现,以一种简单的方式告知如何配置系统,例如,建立多少个任务,多少个信号量等等,包括他们的属性,而具体的实现不是配置文件的任务。系统配置器会自动生成相应的代码。5. 辅助工具(主要用于移植)。下图是TOPPERS/ASP的结构框图:图 2-1 TOPPERS/ASP结构框图2.2 TOPPERS/ASP的系统日志(log)服务介绍在3.1节介绍TOPPERS/ASP系统的结构时我们已经提到TOPPERS/ASP提供了一个比较完善的日志(log)服务,可以很好的通过日志反映系统的运行状态。TOPPERS/ASP的系统log功能是把内核内发生的异常现象、内核跟踪log作为log信息记录的内容。同时,还有取出已记录的log信息的功能。系统log功能可以通过在系统配置文件里导入syslog.cfg来嵌入到系统。想输出系统log的源文件里需要导入t_syslog.h。另外,系统Log功能的其它的函数调用的源文件,需要导入syslog.h文件。2.2.1 系统log功能的定位系统log功能是可以从内核中调用,所以可以定位在内核以下层的模块。这个意义跟其他的系统服务的定位不一样。( I3 j, K. U一方面,为了把log信息输出到系统外部,有必要采用串口接口驱动等内核上运行的系统服务。于是,把log信息输出到系统外部的服务(称为系统log任务)跟系统log功能分开编码,系统log功能有记录、输出log信息功能。 7 w6 l N/ O# p1 v/ W5 W5 K如上所述,系统log功能在内核以下层的模块里,为了在系统log功能中输出log,需要内核的功能。而在编码上是直接调用内核的内部变量。因此,内核的执行开始前和结束后是没有正确记录Log的。2.2.2 向log缓存记录和低级别输出如上所述,为了把log信息输出到系统外部,有必要采用内核上运行的系统服务,如果发生不能继续内核动作的重大异常,就不能输出log信息。另外,如果调试这些系统服务本身的情况下也不能输出log信息。因此,如果在不能使用内核上动作的系统服务的情况下也想要输出log信息,就需要低级别输出功能。低级别输出功能是使用在Target依存上准备的低级别的文字输出函数(target_fput_log)来输出log信息的功能。低级别的文字输出函数是在Target依存部里提供,但是被嵌入到最终制品 等情况下,要考虑到没有文字输出方法的情况。这种情况下,输出到低级别的文字输出函数的文字,要么就放在内存上,要么就忽略掉。. a% ; X9 ) p3 : D 把log信息记录在log缓存还是用低级别输出功能输出的设置是使用系统log功能的服务调用(syslog_msk_log)来完成的。使用低级别的输出功能的情况下,因为在内核里面进行log消息的作成处理(printf相当的处理)和低级别的文字输出处理,所以需要注意内核的应答性变坏的事情。特别是低级别的文字输出处理是通常在移植设备驱动的时候使用,这种情况下,内核的应答性变坏可能造成内核的应答性不实用。2.2.3 log信息的种类系统log功能给log信息预备了以下种类。LOG_TYPE_COMMENT:注释f, c+ e7 d: X* g( # - n9 zLOG_TYPE_ASSERT:断言c$ HF5 p+ 3 j: q( : E1 BLOG_TYPE_INH:中断处理- B# S) |! o. 7 VLOG_TYPE_ISR:中断服务例程LOG_TYPE_CYC:周期处理( h! k s: V4 |+ S dLOG_TYPE_ALM:报警处理LOG_TYPE_OVR:溢出处理A0 d* e, I% wLOG_TYPE_EXC:CPU例外处理* |LOG_TYPE_TEX:任务例外处理LOG_TYPE_TSKSTAT:任务状态变化0 V/ 5 I- s6 tLOG_TYPE_DSP:调度器*LOG_TYPE_SVC:服务调用在log信息种类中,除了LOG_TYPE_COMMENT和LOG_TYPE_ASSERT以外,都是为了在内核跟踪log里采用而准备的。但是,使不使用就交给了Target依赖部分。2.2.4 log信息的优先级系统log功能是根据输出log信息时指定的优先级来动态的设定实际输出log信息。模仿了UNIX系统的log功能,log的优先级的种类、指定方法也参考了UNIX的API。另外,采用低级别输出功能输出的log信息也根据重要度可以动态的设定。) 具体根据Log的优先级分为8个级别。LOG_EMERG:内核不能继续运行的错误 LOG_ALERT* f9 I9 t+ A9 o+ Q* k7 y5 M9 c8 B LOG_CRIT LOG_ERROR:重要度低的系统错误 LOG_WARNING:警告消息j, K z& V! LOG_NOTICE LOG_INFO LOG_DEBUG:调试消息根据系统log功能的服务调用(syslog_msk_log)来设定相应优先级,然后把log信息记录到log缓存或采用低级别的输出功能来输出。2.2.5 系统log功能的服务调用提供系统Log功能的服务调用如下所示。4 C2 r; S0 5 K% |9 A$ o想调用这些服务调用函数必须导入syslog.h文件。4 j: Q+ n I. X8 c1)ER syslog_wri_log(uint_t prio, const SYSLOG *p_syslog)( ?2 V2 w& K$ n5 u 在系统log功能里,根据优先级prio输出log信息(记录在log缓存里或是采用低级别输出功能输出)。SYSLOG是为了存放log信息的结构体数据类型,在这个函数里存放log信息的指针。 在原型声明里,虽然*p_syslog被const指定了,但是实际上这个函数里*p_syslog的logtim成员里记入了系统时刻。8 b U4 E: D2) ER_UINT syslog_rea_log(SYSLOG *p_syslog) 从log缓存里取出一个log信息。) n9 Q0 D9 U7 7 u) |1 N返回值有三类,第一类:返 回E_OBJ(log缓存空的时候),第二类:返回0(成功取出),第三类:返回因为log缓存溢出而丢失的log信息数。假设是系统log任务使用。3) ER syslog_msk_log(uint_t logmask, uint_t lowmask)& y! F B. x6 w5 U+ 设置应该往log缓存里记录的表示log信息优先级的位标志(logmask)和使用低级别输出功能输出的表示log信息重要度的位标志 (lowmask)。为了做位标志准备了2个宏LOG_MASK和LOG_UPTO。, e4 X4 z+ q, l$ K4) ER_UINT syslog_ref_log(T_RLOG *pk_rlog)( S5 wj6 : S% w n4 P 参照系统Log功能的状态。具体来说可以参照记录在log缓存里的log信息个数,因log缓存溢出而丢失的log信息个数,应该往log缓存里记录的表示log信息优先级的位标志,应该使用低级别输出功能输出的表示log优先级的位标志。2.2.6 为了系统Log功能提供的库函数和宏为了输出系统Log的库函数和宏如下所示。调用这些库函数和宏需要导入t_syslog.h文件。1 _* |1 y) / m9 I2 e1 D1) void _syslog_n(uint_t prio, uint_t type, intptr_t arg1, ., intptr_t argn)2 M7 a3 N( 9 g n是06当中的任何一个。采用重要度prio,输出log种类为type,参数为arg1argn的log信息的函数。J$ A+ 2) void syslog_n(uint_t prio, const char *format, arg1, ., argn) 3 J4 v5 ; R n是05当中的任何一个。 采用优先级prio,输出log种类为LOG_TYPE_COMMENT,format字符串以及接在字符串的通过参数作成的消息做为log信息的宏。& format是消息的格式。arg1argn是格式中参照值,是printf格式的子集。因为arg1argn在这个宏里被转换成intptr_t类型,所以可以传递能转换成intptr_t类型的任何类型,不会做类型检查。format及arg1argn有下述的限制。8 . Q8 A! Y A H1 x# k& u format的格式记述是认为传递了常量字符串,就是结束了这个宏处理也不允许改变。; h1 _& 3 x4 d format当中使用的格式指定如下所示:%d把参数看成int_t类型,用10进制表示%u把参数看成uint_t类型,用10进制表示%x把参数看成uint_t类型,用16进制(英文字符是小写)表示% F %X把参数看成uint_t类型,用16进制(英文字符是大写)表示- & r) Gy6 c. I& %p把参数看成指针,用16进制(英文字符是小写)表示%c把参数看成字符码,表示字符1 |7 5 U4 e1 o5 |7 b%s把参数看成表示字符串的指针,表示字符串%表示%(不取参数)1 $ K$ Y$ 7 Z对于%d, %u, %x, %X,可以在%的直接后面用10进制数指定表示的有效位数。这种情况下,需要表示的字符串长度大于指定表示的有效位数的时候,在指定的有效位内向右对 齐表示。用10进制表示的时候,如果以0开始的情况下,中间用0填满。; % j; R; N) t% C4 ?/ $ B) p8 E又,对于intptr_t类型的长度大于long类型的长度的环境,可以使用下面的格式指定。这个以外的格式指定里附加了l的情况就无视掉了(没有对应%lc和%ls)。 4 y! , Z9 ww6 u& b* v%ld把参数看成long_t类型,用10进制表示 9 s+ O% W! X: Y0 X$ w! %lu把参数看成ulong_t类型,用10进制表示 %lx把参数看成ulong_t类型,用16进制(英文字符是小写)表示7 n: W* m %lX把参数看成ulong_t类型,用16进制(英文字符是大写)表示) A7 o) 9 b: 给arg1argn传递指针的时候(对应%s的参数的情况),就算是结束了这个宏的处理也不能改变指针指定的数据。假设是传递常量字符串。+ W9 b) 3) void syslog(uint_t prio, const char *format, .) Q 采用优先级prio,输出Log种类为LOG_TYPE_COMMENT,format字符串以及接在字符串的通过参数作成的消息做为Log信息的函数,参数的值是可变的。+ U- j这个库函数是为了处理可变的参数在内部做字符串扫描。因此,有可能执行时间变长,所以不是中断禁止状态下调用的函数。此函数主要是由应用程序使用。2 y1 A g# k* ! f$ G* w( T4) UINT LOG_MASK(UINT prio) : i: 1 p; K# e& Y) C0 V- y h 设置优先级prio的BitMap的宏。往syslog_msk_log里传递的参数。j6 d5 b, B. 5) UINT LOG_UPTO(UINT prio)0 r+ P; 1 V9 _ T 设置优先级prio以上的所有重要度 的BitMap的宏。往syslog_msk_log里传递的参数。2.2.7 系统log功能的其他服务系统log功能除了上述的服务调用以外,还有初始化处理的函数:void syslog_initialize(intptr_t exinf)系统log功能的初始化。根据syslog.cfg在内核里做为初始化规则来登录,exinf将被忽视。3 嵌入式实时操作系统的测评指标 在第二章我们就介绍了嵌入式实时操作系统的一些测试方法和测试工具。在实际应用这些方法和工具开展对嵌入式实时操作系统的测试工作中,我们会发现对一个RTOS的评价要从很多角度进行,如体系结构、API的丰富程度、网络支持、可靠性等。其中,实时性自然是评价RTOS的最重要的指标之一,实时性的优劣是用户选择操作系统的一个重要参考。评价一个操作系统的实时性应着重考察它的哪些指标,是我们关心的问题。另外,在我们对TOPPERS/ASP系统的研究中,我们还将注意到系统的资源互斥共用的问题,这也是衡量一个操作系统是否有效、正确的工作的一个重要因素。 3.1 嵌入式实时操作系统的时间性质严格地说,影响嵌入式操作系统实时性的因素有很多,下面我们就结合TOPPERS/ASP操作系统来分析影响嵌入式实时操作系统实时性的2类主要因素。3.1.1 调度时间由于在操作系统中有多个任务的存在,操作系统需要对任务调度管理,从而实现任务间的切换。调度时间就是指CPU的控制权由运行的任务转移到另一个就绪任务是所经历的时间,包括保存当前任务上下文时间,选择下一个任务调度时间及加载该任务的时间。简单来说就是:调度时间=保存原任务上下文+加载新任务上下文TOPPERS/ASP的任务调度发生在一些服务请求被调用时,这意味着内核不是“自动”执行任务调度的。以下三种不同情形将启动调度器:1某些任务调用某个服务请求产生任务切换的动作将触发调度器 例如,某个任务调用服务请求wuptsk()来启动一个具有更高优先级的任务,或者某个任务调用slptsk,这都将启动调度器。 2中断处理程序退出例程将启动调度器 在中断处理程序执行过程中,即使有一个可导致任务切换的服务请求被调用,也不会触发调度器启动,除非中断处理程序已经结束。只有中断处理程 序退出例程时才启动调度器。 3. 内核启动时会启动调度器。 众所周知,保存和重载寄存器值有好几种方式。必须在任务切换前保存寄存器值并在任务切换后重载寄存器值。也就是说,调度器进入或退出例程时要考虑多种方 式。不管怎样它们都有一个共同点,那就是等待队列中具有最高优先级的任务p_schedtsk会进入执行状态。这种通用操作被作为调度器的内核提取出来。 由于进入或退出调度器内核有好几种方式,因此,调度器内核(_dispatcher)设计3(或4)个入口和3个出口。下图是进入或退出调度器内核的方式。图3-1 TOPPERS/ASP进入或退出调度器内核的方式从上图我们看到,要得出TOPPERS/ASP的调度时间,必须综合考虑上面三种情形。3.1.2 中断相关的时间性质 系统中断时一种重要的异步事件,使用中断的目的在于提高系统的效率,避免CPU对某些事件的轮询,占用资源。在中断驱动的系统中,CPU运行正常执行程序,当I/O设备需要服务时,I/O设备会通过中断的方式通知CPU,CPU通过中断服务程序对其作出快速的反应。 内核的中断处理过程一般分为中断检测、中断响应、中断处理三个阶段。在每条指令执行结束后就进行中断检测,检测是否有中断请求。如有中断请求后就进入中断响应,并对中断进行处理。用户中断服务程序执行结束后中断返回。由于中断运行可能改变了任务的优先级,系统进行任务重调度,从任务就绪队列中取出优先级最高的任务。通过对中断流程的介绍,我们可以看出,中断响应时间和中断恢复时间是中断的两个最主要的时间性质。它们的计算方法是: 中断响应=中断延迟+保存CPU内部寄存器时间+内核进入中断服务函数时间 中断恢复=判定是否有优先级更高的任务进入就绪态+恢复该任务寄存器值+执行中断返回指令 3.2 TOPPERS/ASP中共享资源的访问在操作系统中,需要对一些共享资源实现互斥访问的保护。TOPPERS/ASP是一个多任务嵌入式实时操作系统,多个任务采用静态方式配置,在执行时能够运用信号量,事件标志,互斥等进行任务间的通信联系,能够被调度或中断等。但当不同的任务或系统调用以一种异步的方式访问同一个共享资源的时候,我们就有可能碰到共享资源访问出错的情况。在TOPPERS/ASP中控制TCB是通过管理就绪任务队列来实现的,就绪任务队列中的任务可以是RUNNING 或 READY,通过优先级顺序排列。在TOPPERS/ASP中可能对就绪队列进行的操作:搜索优先权最高的任务;将任务加到一个任务队列;从队列中删除一个任务;从指定优先级队列中搜索最高优先权的队列;可以看出,就绪队列是一个全局范围内的共享资源,如何控制对该资源的访问就是一个十分重要的问题,如果用户任务或者内核不经意的访问到就绪队列,而且造成了不可知的改动,情况将是十分严重的。这就需要我们仔细设计该结构,和对其做出严格的测试,以杜绝不合理的访问。TOPPERS/ASP的就绪队列结构图如下:图3-2 TOPPERS/ASP就绪队列结构图 4 基于日志的TOPPERS/ASP分析测试方案在第3章我们详细讨论了TOPPERS/ASP的系统log功能的使用方式,在上一章我们列出了影响实时嵌入式系统的几个因素,我们的任务就是采用TOPPERS/ASP完善的日志log功能对TOPPERS/ASP的几个因素进行分析测试,对实时嵌入式系统的测试新方式做出一些有益的探索。 我们的思路是计划采用在TOPPERS/ASP的测试点中插入log服务代码,OS启动后运行Benchmark程序,输出log信息,通过得到的log信息分析TOPPERS/ASP的运行情况,拟测试的操作系统性能指标:调度时间、中断响应、中断恢复和共享资源访问情况。4.1 测试方案的设计与测试环境的搭建我们的测试环境的选择如下:TOPPERS/ASP内核:asp_at91skyeye_gcc-20091219 硬件仿真环境:skyeye(Arm7TDMI)交叉编译工具链:Sourcery G+(gcc,gdb,)TOPPERS专用日志文件分析工具:TraceLogVisualizer(TLV)下图描述了我们测试环境是如何搭建的:图4-1 测试环境的搭建4.2 对日志文件的分析TOPPERS/ASP能够产生详细的日志记录,日志文件可以保存为可读的文本文档,我们需要在日志文件的基础上对系统运行中我们感兴趣的部分进行分析。下面是一个TOPPERS/ASP日志文件的样本的截图,反映了日志文件的形式:图4-2 TOPPERS/ASP日志文件形式我们的工作就是借助日志文件来分析系统运行情况,TOPPERS系统的开发者提供了一个专门的TOPPERS/ASP日志分析的工具TLV,利用它能够对系统的时间和任务执行情况作出分析,下图是TLV软件的运行界面:图4-3 TLV软件运行界面我们可以采用在TOPPERS/ASP的测试点中插入log服务代码,OS启动后运行Benchmark程序,输出log信息,通过得到的log信息分析TOPPERS/ASP的运行情况。5 结论本文提出的采用日志分析方法对嵌入式实时操作系统进行测评是一种方便快捷的系统分析测试方法,它的前提是嵌入式实时操作系统中功能完善的日志系统,采用日志系统的功能对系统运行期间的性质和问题进行分析和测试,由于发现的是系统实际运行时的问题,因此,日志分析的结果是十分有用的。由ITRON4.0规范的标准版本TOPPERS/JSP发展而来的TOPPERS/ASP是一个功能完备的嵌入式实时操作系统。它本身就提供了完善的日志功能和方便的log函数调用,所以我们可以利用TOPPERS/ASP的这一性质对其做辅助性的测试,所针对的测试指标为调度时间、中断相关的时间和共享资源访问。我们可以采用编写脚本的方式对日志文档进行抽象、提取测试需要的信息,同时结合TOPPERS项目提供的专用日志分析工具TLV对日志文档进行详尽的分析。由于TOPPERS/ASP的源码繁杂,而且设计精细,所以针对待测指标的测试案例设计是我们的测试中需要面对的首要问题,解决这个问题的方法是详尽分析TOPPERS/ASP的源码,特别是针对待测指标定位测试点。另一个需要面对的问题是在共享资源的访问测试中如何建立触发竞争条件所需的精确时序序列,这就要求我们针对同一指标进行高频度重复测试以达到目的。 我们的目标是通过对日志分析实时嵌入式系统TOPPERS/ASP的实践,并且进一步扩充测试案例,增加测评指标,更加规范化该方法。参考文献:1. 胡军,张岩,于笑丰等.嵌入式软件建模、实现与验证:研究与发展.计算机科学,2005 Vol.32:16-232. 薛成效,裘正定简述几种实时多任务操作系统单片机与嵌入式系统应用,2001,(10):21-253. 汪泓澄.嵌入式系统的性能基准程序及任务时限违背率:同济大学硕士学位论文.上海.同济大学.20064. 王绪宜,计算机系统性能评价南京:南京大学出版社,19925. 程国达,彭澄廉.嵌入式系统描述与验证环境的实现.计算机辅助设计与图形学报.2004.16. 李庆诚,唐德凯.嵌入式操作系统实时性对比与评价.单片机与嵌入式系统应用.2007.6:18-217. Jean J Labrosse. 源代码公开的嵌入式实时操作系统M.邵贝贝,等.中国电力出版社,20018. 李庆诚,固健.嵌入式实时操作系统性能测试方法研究.单片机与嵌入式系统应用.2005.8:19-219. 周炎淼. SmartOSEK IDE3.0及其模型检查和协同工作:清华大学硕士学位论文.杭州.浙江大学,2007.10. 蔡俊良,孙晓明.一种基于Linux的车用实时操作系统.清华大学学报(自然科学版).2004,Vol.44,No.1:78-8411. 赵立业,张激,游夏.实时操作系统的性能分析和评估.计算机工程.2008.4:283-28612. 成渝,李明,杨晔等.源码开放的嵌入式系统软件分析与实践.北京:北京航空航天大学出版社.2004.75-12813. TOPPERS/ASP内核用户手册. /viewthread.php?tid=2&extra=&page=1:2008.8.2114. Umesh Krisllllaswmy,Isaac DScbersonA Fhmework for Cbmputer Performance Evaluation Using Benchmark sets.IEEE Transaction on Compulers,2000,49(12):1325133815. Szyperski, C.: Component Software - Beyond Object-Oriented Programming. Addison Wesley (2002)16. The OSEK/VDX Group. OSEK/VDX Operating System, version 2 . 2 .3 EB/OL . http: / / www. osek-vdx. org, 2005- 2 -17 17. The OSEK/VDX Group.OSEK/VDX Communication,verision 3.0.3 EB/OL . http: / / www. osek-vdx. org, 2004- 07 - 20 /2004-10-15.18. The OSEK/VDX Group. OSEK/VDX Network Management, version 2. 5. 3 EB/ OL . http: / /www. osek-vdx. org,2004-07- 25/2004-10-15.19. Clarke, E.M., Grumberg, O., Peled, D.: Model checking. MIT Press (1999)20. Xie, F., Yang, G., Song, X.: Component-based hardware/software co-verification. In: Proc. of MEMOCODE,2006.21. R. P. Kurshan. Computer-Aided Verification of Coordinating Processes:The Automata-Theo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉字讲解课件
- 开展劳动节主题活动总结
- 河北省邯郸市育华中学2024-2025学年七年级下学期期中考试数学试卷(含答案)
- 汉字开花课件
- 2024-2025学年山东省淄博市桓台二中高一(下)月考数学试卷(6月份)(含答案)
- 汉字基础知识培训心得
- 食品安全行业的政策趋势与风险评估
- DB62-T 4539.4-2023 突发环境事件管理指南 第4部分:物资储用
- DB5307-T 68-2024 丽江市营造林工程工程量清单编制规范
- 建筑施工合同管理方案
- 电力建设工程施工合同(合同版本)
- 糖尿病饮食的健康宣教
- 《公务员录用体检操作手册(试行)》
- 人教版数学八年级上册《全等三角形》单元测试题附答案
- 专升本计算机教学课件-第一章-计算机基础知识(2023新版大纲)
- 变电站巡检维护服务方案
- 2023版评审准则和CNAS对照表
- 收养申请人情况声明
- 分布式光伏发电项目可行性分析报告(方案)讲解演示模板ppt课件-图文
- 手持电动工具培训
- 医疗康养项目运营方案
评论
0/150
提交评论