《一种嵌入式实时操作系统的性能测试平台的构建.pdf》由会员分享,可在线阅读,更多相关《一种嵌入式实时操作系统的性能测试平台的构建.pdf(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、http:/-1-一种嵌入式实时操作系统的性能测试平台的构建 王劲松 孙文生 北京邮电大学电信工程学院,北京(100876)E-mail: 摘摘 要:要:本文提出一种基于 Thread-Metric 测试套件和 ARM 平台的 RTOS 性能测试平台的构建方案。该测试平台实现原理比较简洁,能有效地测量实时操作系统的运行速度等实时特性。本文以针对C/OS II 的移植和配置为例,详细阐述了平台的搭建和配置过程。关键词:关键词:Thread-Metric,ARM,嵌入式操作系统测试平台 1.引言引言 RTOS 的应用中,对于其评价可以从很多角度来进行1,如体系结构、API 的丰富程度、网络支持、可
2、靠性等。其中,实时性是 RTOS 评价的最重要的指标之一,实时性的优劣是用户选择操作系统的一个重要参考。评价一个操作系统的实时性应该着重考察它的哪些指标,以及如何进行测试,是本文着重讨论的问题。本文提出了使用Thread-Metric测试套件在ARM电路板上搭建测试平台的一种方案2 3。该方案没有采用昂贵的硬件设备,成本不高,能相对有效地衡量不同操作系统技术之间的相对性能。2.RTOS 简介简介 Thread-Metric 是一个开源且免费的测试套件,同时 Thread-Metric 还提供了 ThreadX 的测试结果供使用者进行比较参考。ThreadX 本身是一个非常优秀的商业化实时内核,
3、在行业里有着许多非常成功的应用,通过与 ThreadX 测试结果的比较,我们可以对自己所测试的RTOS 有个更加直观的了解。2.1 Thread-Metric 的测试原理的测试原理 整个 Thread-Metric 测试套件由几个独立的测试项目组成,每个项目分别用于测试实时内核中的某一基本功能(如任务切换、中断处理、信号量处理等等)。测试的基本原理是通过计算一定周期时间长度里内核反复处理某一事务的次数,并将结果通过“printf”函数输出给 PC 终端获取。Thread-Metric 中的第一个测试项目为“基准测试(Basic Processing Test)”,该测试用于获取一个称之为“校准
4、值(Calibration)”的数据,校准值的大小反映的是测试中所使用的硬件平台的能力,它的引入是为了屏蔽硬件平台对测试结果的影响,因为我们所需要评估的是RTOS 的性能,而并非整个系统的性能。除第一个测试项目(基准测试)外,在其它测试项目中,我们将会获取到一个称之为“迭代值(Iteration)”数据,迭代值的就是在一个测试周期长度里内核所处理的这一事务的次数,于是我们使用公式:得分=迭代值校准值 即可得到实时内核在这一测试项目的得分。-2-2.2 Thread-Metric 的文件结构的文件结构 Thread-Metric 测试套件全部由 C 语言编写,因此它适用于绝大部分实时内核,使用T
5、hread-Metric 也需要一个移植过程,不过 Thread-Metric 的移植非常简单,其移植过程只是一些 API 的重映射操作。Thread-Metric 测试套件的源文件的组成如表 1 所示:文件“tm_porting_layer_threadx.c”是 Thread-Metric 提供的一个已经完成的基于 ThreadX的移植文件,它只是用来帮助我们快速的将 Thread-Metric 移植到其它实时内核,在我们实际利用 Thread-Metric 测试其它 RTOS 时,它是不需要使用的。表 1 Thread-Metric 中的文件 Tab.1 List of each fil
6、e in the Thread-Metric Suit 文件名 功能描述 tm_api.h API 声明和宏定义常量 tm_basic_processing_test.c 基准测试 tm_cooperative_scheduling_test.c 协同式的任务调度测试 tm_preemptive_scheduling_test.c 抢占式的任务调度测试 tm_interrupt_processing_test.c 中断处理测试 tm_interrupt_preemption_processing_test.c 中断当中的任务抢占处理测试 tm_synchronization_processin
7、g_test.c 任务同步处理测试 tm_message_processing_test.c 消息处理测试 tm_memory_allocation_test.c 内存分配测试 tm_porting_layer.c Thread-Metric 移植相关文件 tm_porting_layer_threadx.c Thread-Metric 移植于 ThreadX 内核的参考实例 2.3 Thread-Metric 的使用要求的使用要求 在使用 Thread-Metric 测试套件时,为了得到一个客观公正的测试结果,我们应当遵循Thread-Metric 建议的几点要求,一、测试周期长度应至少大于
8、 30 秒。越大的测试周期长度越有利于消除调用“printf”函数输出测试结果时对于测试结果本身的影响;二、关闭所有编译器优化选项,不允许将代码缓存在处理器的任何高速 Cache 中运行;三、在移植 Thread-Metric 的过程中,API 的重映射不能采用宏定义的方式;四、内核的时钟节拍周期应设置为 10 毫秒;3.Thread-Metric 中的测试项目中的测试项目 当前版本的 Thread-Metric 总共包含 8 个测试项目,这些测试项目基本覆盖了实时操作系统最重要的核心功能4。测试 1:基准测试(Basic Processing Test)测试 1 的主要目的就是获取硬件平台的
9、性能校准值,校准值越大说明硬件平台的性能越强。在这个测试中将只创建一个运行任务。测试 2:协同式的任务调度测试(Cooperative Scheduling Test)该测试中包含 5 个相同优先级的任务,各个任务在在执行过程中会先将自己的计数器加1,然后通过调有“relinquish”函数主动将 CPU 使用权交给下一个任务。图 1 是测试 2 的运行示意图:http:/-3-图 1 协同式的任务调度测试 测试 3:抢占式的任务调度测试(Preemptive Scheduling Test)该测试中包含 5 个由高到低不同优先级的任务,各个任务在执行过程中会将自己的计数器加 1。在测试开始时
10、,只有优先级最低的任务处于就绪,其它任务都被挂起。优先级最低的任务先唤醒优先级次低的任务被抢占,这样依次抢占下去后,最高优先级的任务获的 CPU使用权后又将自己挂起,次高优先级的任务也将自己挂起,到最后优先级最低任务又获得CPU 使用权,一个新的循环又开始。图 2 是测试 3 的运行示意图:图 2 抢占式的任务调度测试 测试 4:中断处理测试(Interrupt Processing Test)该测试中只包含 1 个任务,该任务通过调用软中断(SWI)指令的方式来连续模拟中断的发生,中断服务程序会释放一个信号量,中断返回后,任务去获取该信号量。获取成功后再次调用软中断。图 4-3 是测试 4
11、的运行示意图:图 3 中断处理测试 测试 5:中断当中的任务抢占处理测试(Interrupt Preemption Processing Test)该测试中包含 2 个优先级不同的任务,低优先级的任务通过调用软中断(SWI)指令的方式来模拟中断,中断服务程序中另外一个高优先级的任务被唤醒,中断返回时发生任务抢占。图 4 是测试 5 的运行示意图:http:/-4-图 4 中断当中的任务抢占处理测试 测试 6:消息处理测试(Message Processing Test)该测试包含 1 个任务,任务先想邮箱中发送一条消息,然后紧接着又再去邮箱中获取,并将获取的消息与发送的做对比,图 5 是测试
12、6 的运行示意图:图 5 消息处理测试 测试 7:任务同步处理测试(Synchronization Processing Test)该测试包含 1 个任务,任务通过不断获取和释放信号量的操作来模拟信号量的任务同步功能,图 6 是测试 7 的运行示意图:图 6 任务同步处理测试 测试 8:内存分配测试(Memory Allocation Test)该测试包含 1 个任务,任务通过不断获取和释放一个内存块来的测试内核的内存管理功能。图 7 是测试 8 的运行示意图:图 7 内存分配测试 4.测试步骤与方法测试步骤与方法 在开始使用 Thread-Metric 进行测试之前,以下几个预备条件应当确保
13、已经满足:http:/-5-?欲测试的实时内核已经成功移植到某硬件平台?硬件平台的核心处理器支持软中断功能 ARM 处理器具有专门的软中断指令(SWI 指令)23?欲测试的实时内核具有将任务延迟特定时间长度的能力 C/OS II 具有任务延迟 API(函数 slp_tsk())?系统可以使用“printf”函数将测试结果输出 printf 函数的输出在 ARM7TDMI 评估板上可以串口输出到 PC 终端 4.1 如何移植如何移植 Thread-Metric Thread-Metric 的移植非常简单,其移植过程就是将文件“tm_porting_layer.c”中已经定义好的 API 进行重影
14、射,对于C/OS II 来说,其映射关系如下:(1)int tm_thread_create()Thread-Metric 使用此 API 创建一个任务,使用C/OS II 的 OSTaskCreate()进行映射。(2)int tm_thread_resume()Thread-Metric 使用此 API 恢复一个任务,使用C/OS II 的 OSTaskResume()进行映射。(3)int tm_thread_suspend()Thread-Metric 使用此 API 挂起一个任务,使用C/OS II 的 OSTaskSuspend()进行映射。(4)void tm_thread_re
15、linquish()Thread-Metric 使用此 API 让任务主动交出 CPU 使用权给同优先级的其它任务,C/OS II 不支持同优先级调度,所以没有对应的函数与之映射。(5)void tm_thread_sleep()Thread-Metric 使用此 API 让任务延迟,使用C/OS II 的 OSTimeDly()进行映射。(6)int tm_queue_create()Thread-Metric 使用此 API 创建消息队列,使用C/OS II 的 OSQCreate()进行映射。(7)int tm_queue_send()Thread-Metric 使用此 API 发送消息
16、,使用C/OS II 的 OSQPost()进行映射。(8)int tm_queue_receive()Thread-Metric 使用此 API 接收消息,使用C/OS II 的 OSQAccept()进行映射。(9)int tm_semaphore_create()Thread-Metric 使用此 API 创建信号量,使用C/OS II 的 OSSemCreate()进行映射(10)int tm_semaphore_get()Thread-Metric 使用此 API 获取信号量,使用C/OS II 的 OSSemPend()进行映射(11)int tm_semaphore_put()T
17、hread-Metric 使用此 API 释放信号量,使用C/OS II 的 OSSemPost()进行映射 此外,Thread-Metric 中还有几个与内存管理相关的 API,由于C/OS II 没有相关功能,在这里我们无需对相关 API 进行映射。将测试套件和操作系统经过编译后,我们将最后需要测试的二进制系统文件下载到开发板上5,这样我们就搭建好了一个 ARM 平台下针对C/OS II 的测试平台。5.结论结论 对于嵌入式实时操作系统的研究是当前的研究热门。在针对性能的改进中,一个有效而相对简单的性能测试平台能大大提高工作效率。本文介绍的测试平台经过实践证明,能很好的满足对于一般性能测试
18、的需求。由于该测试平台的主要是基于软件的,所以有着很好的扩展性,稍加修改即可针对操作系统的各项功能进行测试。http:/-6-参考文献参考文献 1 Jean J.Labrosse.嵌入式实时操作系统 uC/OS-IIM.第二版.邵贝贝 等译.北京:北京航空航天大学出版社:112-128 2 ARM Limited.ARM Architecture Reference Manual.Jun-2000 3 ARM Limited.ARM7TDMI Technical Reference Manual.Apr-2001 4 Express Logic,Inc.,Thread-Metric RTOS
19、Test Suite Guide,Apr-2004 5 IAR Systems,ARM IAR Embedded Workbench IDE User Guide,Jun-2006 A Scheme of Light RTOS Performance Test Platform Wang Jinsong,Sun Wensheng(School of Telecommunication Engineering,Beijing University of Posts and Telecommunications,Beijing 100876,China)Abstract A scheme of R
20、TOS test platform,which is based Thread-Metric software suit and ARM architecture,is brought about.The test scheme is simple,and can effectively measure the real time performance such as context switch duration time.The paper also carefully discussed the configuration with the example of C/OS II.Keywords:Thread-Metric,ARM,embedded RTOS test platform http:/