嵌入式操作系统uClinux和eCos的比较
1 两种开源嵌入式操作系统介绍
uClinux是一种优秀的嵌入式Linux版本。uClinux是micro-Conrol-linux的缩写。与标准Linux相比,它集成了标准Linux操作系统的稳定性、强大网络功能和出色的文件系统等主要优点。但是由于没有MMU(内存管理单元),故其多任务的实现需要一定技巧。
eCos(embedded Configurable operating system),即嵌入式可配置操作系统,是RedHat的产品,但eCos并不是Linux或Linux的派生。eCos弥补了Linux在嵌入式应用领域的不足,是一个源码开放的可配置、可移植、无版税、面向深嵌入式应用的实时操作系统。eCos的核心部分是由不同的组件组成的,包括内核、C语言库和底层运行包等。每个组件能提供大量的可配置选项,利用eCos提供的配置工具可以很方便地进行配置。通过不同的配置使得eCos能够满足不同的嵌入式应用。
对于以上两种源码公开的实时操作系统,主要从以下几个方面进行比较。通过比较,能够为大家选择适合自己系统的RTOS提供参考。
2 基本操作性能的比较
2.1 应用程序的运算能力
在Linux和uClinux操作系统启动的时候,都会有这样一句话--Calibrating delay 1oop..0k-xxx BogoMips,这一过程叫作BogoMips(读作bogumips)。Linus Torvalds引入BogoMips主要有两个目的:①给用户一个大概的系统运算能力的概念;②由于系统中有许多代码需要精确的软件延时,通过BogoMips来获得软件延时每个周期消耗的时间。BogoMips的过程就是一个简单计数循环,看ls可以循环多少次,然后除以500000就得到了BogoMips的数值。
表1是在目标硬件平台上运行eCos和uClinux下的BogoMips应用程序得到的结果。我们使用了不同的测试条件,激活和非激活AT76C120的存储器缓冲控制器。
打开缓冲存储器。对eCos的应用程序性能影响较uClinux的大;反之,关闭缓冲,eCos的应用程序的性能就下降很多。
2.2 存储器访问能力
采用一种同时能够测试缓冲控制器和标准存储器访问函数的测试方法来测试存储器访问能力。在这里,选用田纳西大学的Philip J.Mucci等人提出的CacheBench方法。其工作原理是,重复顺序读/写一定长度的存储器块的数据,记录重复n次所用的时问,用总的读/写数据除以耗时,得到读/写每一字节所用的时间;同时,通过调整数据块的长度和不同的读写方法(使用标准函数或者使用直接代码读写),获得不同条件对存储器读/写的影响。
在实验中,对于每一种测试模式使用4种不同的块长度(分别为256、512、1024、2048字节),以观察不同的抉长度对存储器访问性能的影响。表2是实验的结果:横向比较,eCos的存储器访问性能从总体上都优于uClinux;纵向比较,5种模式下性能关系大致为缓冲读>缓冲读,改写/写>缓冲写>mcmset>mcmcpy。在同一种测试模式下,对于缓冲读,越大的块长度,其表现的存储器访问性能越好;而其他模式下,存储器访问性能基本与块长度无关。
基于以上结果的分析如下:①造成eCos存储器访问能力优于uClinux的原因是,eCos的应用程序获得的处理器时间较长;②造成读缓冲模式下,存储器访问性能随块长度增长而变好,而其他模式下不变的原因是,与AT76C120的缓冲控制器的回写模式有关。由于AT76C120的缓冲控制器采用了直接回写的缓冲回写模式,缓冲控制器对存储器写操作没有任何缓冲作用,因此当处理器写存储器时基本不会享受到由缓冲控制器带来的好处,相当于直接访问外部存储器。
2.3 驱动程序性能测试
为了测试系统的驱动程序性能,选择CF卡驱动程序作为测试对象。我们的测试方法简单,就是在应用程序中打开一个大文件(10MB),然后调用fread读文件,每次读512字节到缓冲中,直至将文件读完。
表3是测试结果:uClinux的性能优于eCos。这主要是由于uClinux的块驱动有一个叫集簇的功能,它可以将对块设备的多个请求归并在一起执行,这样对于像磁盘这样反应较慢的设备可以提高整体的读/写速度。
3 综合应用性能比较
我们知道,一个图像压缩和解压缩的程序往往需要大块的存储器访问操作、密集的数学运算和大量的磁盘访问。由于现在手持的嵌入式设备大多需要有这方面的应用需求,因此一个图像压缩和解压缩的应用程序既符合理论研究的要求,又符合实际应用的需求。为此我们选择gif图片的编解码的程序作为综合性能测试的测试程序。测试结果如表4所列。
我们看到,eCos和uClinux解码速度都很低,主要是因为完全使用了软件解压缩;而且由于AT76C120的图像显示格式是YCrCb的,而giflib的解压缩结果是RGB的,因此必须使用浮点运算将RGB的数据转换到YCrCb。AT76C120的arm7TDMI不支持浮点指令,因此不得不使用软件仿真来完成浮点运算,这其中大部分时间被用在了从RGB到YCrCb的转换上。测试结果基本与前面基本操作系统测试的结果是一致的--eCos在整体上是优于uClinux的。
- 支持网络传感器的嵌入式操作系统设计(11-10)
- 嵌入式操作系统WinCE(02-20)
- μC/OS-Ⅱ在MSP430F149上的移植(03-01)
- 实时嵌入式操作系统μC/OS-II在MPC555上的移植(04-10)
- 基于μc os ii的农田信息采集系统设计(03-16)
- 基于关键点控制的网络嵌入式设备在线升级的实现(04-24)