admin 管理员组文章数量: 1086019
2024年1月18日发(作者:vba二维数组整行赋值)
一种嵌入式实时操作系统的性能测试平台的构建
王劲松 孙文生
北京邮电大学电信工程学院,北京 (100876)
E-mail:@
摘 要:本文提出一种基于Thread-Metric测试套件和ARM平台的RTOS性能测试平台的构建方案。该测试平台实现原理比较简洁,能有效地测量实时操作系统的运行速度等实时特性。本文以针对μC /OS II的移植和配置为例,详细阐述了平台的搭建和配置过程。
关键词:Thread-Metric,ARM,嵌入式操作系统测试平台
1. 引言
RTOS的应用中,对于其评价可以从很多角度来进行[1],如体系结构、API的丰富程度、网络支持、可靠性等。其中,实时性是RTOS评价的最重要的指标之一,实时性的优劣是用户选择操作系统的一个重要参考。评价一个操作系统的实时性应该着重考察它的哪些指标,以及如何进行测试,是本文着重讨论的问题。
本文提出了使用Thread-Metric测试套件在ARM电路板上搭建测试平台的一种方案[2] [3]。该方案没有采用昂贵的硬件设备,成本不高,能相对有效地衡量不同操作系统技术之间的相对性能。
2. RTOS简介
Thread-Metric是一个开源且免费的测试套件,同时Thread-Metric还提供了ThreadX的测试结果供使用者进行比较参考。ThreadX本身是一个非常优秀的商业化实时内核,在行业里有着许多非常成功的应用,通过与ThreadX测试结果的比较,我们可以对自己所测试的RTOS有个更加直观的了解。
2.1 Thread-Metric的测试原理
整个Thread-Metric测试套件由几个独立的测试项目组成,每个项目分别用于测试实时内核中的某一基本功能(如任务切换、中断处理、信号量处理等等)。测试的基本原理是通过计算一定周期时间长度里内核反复处理某一事务的次数,并将结果通过“printf”函数输出给PC终端获取。
Thread-Metric中的第一个测试项目为“基准测试(Basic Processing Test)”,该测试用于获取一个称之为“校准值(Calibration)”的数据,校准值的大小反映的是测试中所使用的硬件平台的能力,它的引入是为了屏蔽硬件平台对测试结果的影响,因为我们所需要评估的是RTOS的性能,而并非整个系统的性能。
除第一个测试项目(基准测试)外,在其它测试项目中,我们将会获取到一个称之为“迭代值(Iteration)”数据,迭代值的就是在一个测试周期长度里内核所处理的这一事务的次数,于是我们使用公式:
得分 = 迭代值÷校准值
即可得到实时内核在这一测试项目的得分。
-1-
2.2 Thread-Metric的文件结构
Thread-Metric测试套件全部由C语言编写,因此它适用于绝大部分实时内核,使用Thread-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 file in the Thread-Metric Suit
文件名
tm_api.h
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_processing_test.c
tm_message_processing_test.c
tm_memory_allocation_test.c
tm_porting_layer.c
tm_porting_layer_threadx.c
功能描述
API声明和宏定义常量
基准测试
协同式的任务调度测试
抢占式的任务调度测试
中断处理测试
中断当中的任务抢占处理测试
任务同步处理测试
消息处理测试
内存分配测试
Thread-Metric移植相关文件
Thread-Metric移植于ThreadX内核的参考实例
2.3 Thread-Metric的使用要求
在使用Thread-Metric测试套件时,为了得到一个客观公正的测试结果,我们应当遵循Thread-Metric建议的几点要求,
一、测试周期长度应至少大于30秒。越大的测试周期长度越有利于消除调用“printf”函数输出测试结果时对于测试结果本身的影响;
二、关闭所有编译器优化选项,不允许将代码缓存在处理器的任何高速Cache中运行;
三、在移植Thread-Metric的过程中,API的重映射不能采用宏定义的方式;
四、内核的时钟节拍周期应设置为10毫秒;
3. Thread-Metric中的测试项目
当前版本的Thread-Metric总共包含8个测试项目,这些测试项目基本覆盖了实时操作系统最重要的核心功能[4]。
测试1:基准测试(Basic Processing Test)
测试1的主要目的就是获取硬件平台的性能校准值,校准值越大说明硬件平台的性能越强。在这个测试中将只创建一个运行任务。
测试2:协同式的任务调度测试(Cooperative Scheduling Test)
该测试中包含5个相同优先级的任务,各个任务在在执行过程中会先将自己的计数器加1,然后通过调有“relinquish”函数主动将CPU使用权交给下一个任务。图1是测试2的运行示意图:
-2-
图1 协同式的任务调度测试
测试3:抢占式的任务调度测试(Preemptive Scheduling Test)
该测试中包含5个由高到低不同优先级的任务,各个任务在执行过程中会将自己的计数器加1。在测试开始时,只有优先级最低的任务处于就绪,其它任务都被挂起。优先级最低的任务先唤醒优先级次低的任务被抢占,这样依次抢占下去后,最高优先级的任务获的CPU使用权后又将自己挂起,次高优先级的任务也将自己挂起,到最后优先级最低任务又获得CPU使用权,一个新的循环又开始。图2是测试3的运行示意图:
图2 抢占式的任务调度测试
测试4:中断处理测试(Interrupt Processing Test)
该测试中只包含1个任务,该任务通过调用软中断(SWI)指令的方式来连续模拟中断的发生,中断服务程序会释放一个信号量,中断返回后,任务去获取该信号量。获取成功后再次调用软中断。图4-3是测试4的运行示意图:
图3 中断处理测试
测试5:中断当中的任务抢占处理测试(Interrupt Preemption Processing Test)
该测试中包含2个优先级不同的任务,低优先级的任务通过调用软中断(SWI)指令的方式来模拟中断,中断服务程序中另外一个高优先级的任务被唤醒,中断返回时发生任务抢占。图4是测试5的运行示意图:
-3-
图4 中断当中的任务抢占处理测试
测试6:消息处理测试(Message Processing Test)
该测试包含1个任务,任务先想邮箱中发送一条消息,然后紧接着又再去邮箱中获取,并将获取的消息与发送的做对比,图5是测试6的运行示意图:
图5 消息处理测试
测试7:任务同步处理测试(Synchronization Processing Test)
该测试包含1个任务,任务通过不断获取和释放信号量的操作来模拟信号量的任务同步功能,图6是测试7的运行示意图:
图6 任务同步处理测试
测试8:内存分配测试(Memory Allocation Test)
该测试包含1个任务,任务通过不断获取和释放一个内存块来的测试内核的内存管理功能。图7是测试8的运行示意图:
图7 内存分配测试
4. 测试步骤与方法
在开始使用Thread-Metric进行测试之前,以下几个预备条件应当确保已经满足:
-4-
版权声明:本文标题:一种嵌入式实时操作系统的性能测试平台的构建 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1705574471a490590.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
更多相关文章
紧急的测试任务怎么办?
测试工程师在工作过程中,经常会遇到紧急的测试需求, 快下班了, 研发经理过来拍着肩膀说, XXX又出了一个线上问题,需要紧急给客
windows USB 设备驱动开发-ConnEx 测试 USB Type C 系统
ConnEx可以自动测试系统、设备、使用 USB Type-C 连接器的扩展坞及其与 Windows 操作系统的互操作性的。 可以测试属于以下类别之一的硬件: 系统:台式机、笔记本电脑、平板电脑
Burp Suite测试小程序,设置代理之后手机一直连不上网
1、状态为“拦截禁用”,然后就可以了 2、不行的话,小程序开发版打开调试模式,就可以了 3、不过小程序线上版本偶尔行偶尔不行的,也不知道怎么处理..
win7下激活vs2008的方法(已测试可以激活)
win7下激活vs2008的方法(已测试可以激活) by facklong 30. 十月 2009 08:51 8月7号左右就装上了win7的RTM版,用到现在也2个多月了。随之而来的就是vs2008的过期提示。当初
十大SRC平台与SRC行业安全测试规范
一. SRC平台: SRC平台整理 来源: SRCs|安全应急响应中心 - 0xsafe 1. 腾讯安全应急响应中心(TSRC, Tencent Security R
免费下载Windows 7、8、10 测试用的虚拟机档案
虚拟机是很多人用来测试有的没的软件的最佳工具,常见的像是 VirtualBox、VMware、Parallels 等,而微软针对开发者也提供了虚拟器的 Windows 7、8、10 档案免费下载&
测试左移 使用Find Security Bugs检查代码安全问题
Find Security Bugs 是SpotsBug的插件,他主要用来做web和android应用的代码安全测试。目前可以检测出 141 种不同类型的安全漏洞。它支持大量的使用主流的框架和库的代码检测&#x
软件测试笔试十大逻辑题,收藏这一篇就够了
1.烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢? 第一步:A绳从两头烧,同时B
简单概述软件测试的潜力和挑战
怎么看待软件测试的潜力和挑战? 潜力: 随着互联网和软件行业的日渐成熟,测试也逐渐的被各个公司所重视。而且软件测试行业比较稳定,在未来的5-10年内
专科入行软件测试可行么
每年毕业季,IT行业依然是比较热门且收入是最高的行业。对于应届毕业生来说想要进入IT行业,除了前后端开发,软件测试是个不错的选择,至于好不好找工作还是取
软件测试面试问答
文章目录 什么是软件?软件测试工程师的工作内容什么是软件测试?软件开发生命周期软件开发的几个阶段软件bug的五个要素Bug的十大要素:软件测试的分类软件测试方法分类单元测试设计测试用例的主要方法什
软件测试管理经验谈 (转)
某甲问道:「测试做太多的话,会不会使得bug解不完?」 某乙回答:「还不简单。只要不做测试,就没有bug。」 上述对话&
十大异常测试用例(转载)
十大异常测试用例(转载)此文乃转载,原名为《十大负面测试用例》,我觉得负面测试不如异常测试来的好理解,自己改了改。恩&
ChatGPT-3使用的代码管理、审核工具以及自动化测试
ChatGPT-3 是一个由多个分布式计算部分组成的大型模型,因此需要使用适当的代码管理工具来管理和协调代码的开发和更新。 以下是 ChatGPT-3 使用的一些代码管理工具: Git: Gi
ChatGPT使用学习(二):ChatPaper安装到测试详细教程(一文包会)
ChatPaper 1.简介及功能2.前置准备3.开始使用-命令行4.开始使用-网页 1.简介及功能 ChatPaper是一种基于文本生成技术的研究论文,可以根据用户的输入进行智能回复和互动,具有
电脑用什么软件可以测试网速吗,在电脑上怎么测试网速_两种快速测试网速的方法介绍 - 驱动管家...
如果电脑安装的是最新的Windows 10系统,要如何测试电脑网速呢?Win10网速测试的问题,今天小编就为大家带来了2种Win10电脑网速测试方法,希
STM32F1--FreeRTOS系统学习(一):系统下载移植以及跑马灯测试
以下内容皆是个人学习过程中的总结,记录一下整个过程,用于后期复习,如有不对之处,麻烦各位大佬指出~ (喜欢的朋友麻烦点个关注~~
[Selenium自动化测试实战] 不打开浏览器如何进行WEB自动化测试
一、问题 在一般的使用场景下,使用selenium进行web自动化测试都需要打开一个浏览器的实体,测试脚本通过控制webdriver来对浏览器进行操作。但是在一些场景下测试工程师需要在不打开浏览器的情况下进行自动化测试,也就是以headl
4.2-1 app测试
(一)app测试类型 app手工测试,app ui自动化测试,app接口测试,app性能测试 (1&am
uc手机浏览器 手机模拟_在PC上测试移动端网站和模拟手机浏览器的5大方法
查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功
发表评论