基于LPC3250的嵌入式Linux系统开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 嵌入式操作系统

1.3.1 操作系统的概念

大型嵌入式系统通常需要完成复杂的功能,所以需要操作系统来完成各任务之间的调度。由于桌面型操作系统的体积及实时性等特性不能满足嵌入式系统的要求,从而促进了嵌入式操作系统的发展。

操作系统(Operating System,OS)的基本思想是隐藏底层不同硬件的差异,向在其上运行的应用程序提供一个统一的调用接口。应用程序通过这一接口实现对硬件的使用和控制,不必考虑不同硬件操作方式的差异。

很多产品厂商选择购买操作系统,在此基础上开发自己的应用程序,形成产品。事实上,因为嵌入式系统是将所有程序,包括操作系统、驱动程序、应用程序的程序代码全部烧写进ROM里执行的,所以操作系统在这里的角色更像是一套函数库(Library)。

操作系统主要完成3项任务:内存管理、多任务管理和外围设备管理。

嵌入式操作系统(Embedded Operating System,EOS)负责嵌入式系统的全部软/硬件资源的分配、调度、控制、协调;它必须体现其所在系统的特征,能够通过加载/卸载某些模块来达到系统所要求的功能。

EOS是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等,还有以下几个特点。

① 强稳定性,弱交互性:嵌入式系统一旦开始运行就不需要用户过多的干预,这就要求负责系统管理的EOS具有很强的稳定性。

② 较强的实时性:EOS实时性一般较强,可用于各种设备的控制中。

③ 可伸缩性:具有开放、可伸缩性的体系结构。

④ 外设接口的统一性:提供各种设备驱动接口。

嵌入式系统的操作系统核心通常要求体积要很小,因为硬件ROM的容量有限,除了应用程序之外,不希望操作系统占用太大的存储空间。事实上,嵌入式操作系统可以很小,只提供基本的管理功能和调度功能,缩小到10~20KB以内的嵌入式操作系统比比皆是,相信用惯微软的Windows系统的用户,可能会觉得不可思议。

不同的应用场合会产生不同特点的嵌入式操作系统,但都会有一个核心(Kernel)和一些系统服务(System Service)。操作系统必须提供一些系统服务供应用程序调用,包括文件系统、内存分配、I/O存取服务、中断服务、任务(Task)服务、时间(Timer)服务等,设备驱动程序(Device Driver)则是要建立在I/O存取和中断服务上的。有些嵌入式操作系统也会提供多种通信协议,以及用户接口函数库等。

1.3.2 嵌入式Linux

Linux是目前最为流行的一款开放源代码的操作系统,目前正在开发的嵌入式系统中,70%以上的项目选择Linux作为嵌入式操作系统。

经过改造后的嵌入式Linux具有适合于嵌入式系统的特点:

① 内核精简,高性能、稳定;

② 良好的多任务支持;

③ 适用于不同的CPU体系架构——支持多种体系架构,如x86、ARM、MIPS、ALPHA、SPARC等;

④ 可伸缩的结构,使Linux适合于从简单到复杂的各种嵌入式应用;

⑤ 外设接口统一,以设备驱动程序的方式为应用提供统一的外设接口;

⑥ 开放源代码,软件资源丰富,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广;

⑦ 完整的技术文档,便于用户的二次开发。

1.3.3 C/OS-Ⅱ

C/OS-Ⅱ是Jean J. Labrosse在1990年前后编写的一个实时操作系统内核。它通常也被称为MUCOS或者UCOS。

严格地说,C/OS-Ⅱ只是一个实时操作系统内核,它仅仅包含了任务调度、任务管理、时间管理、内存管理和任务间通信和同步等基本功能,没有提供输入/输出管理、文件管理、网络等额外的服务。但由于 C/OS-Ⅱ良好的可扩展性和源代码开放,这些功能完全可以由用户根据需要自己实现。

C/OS-Ⅱ获得广泛使用不仅仅是因为它的源代码开放,还有一个重要原因,就是它的可移植性。C/OS-Ⅱ的大部分代码都是用C语言写成的,只有与处理器的硬件相关的一部分代码用汇编语言编写。可以说,C/OS-Ⅱ在最初设计时就考虑到了系统的可移植性,这一点和同样源代码开放的Linux很不一样,后者在开始的时候只是用于x86体系结构,后来才将和硬件相关的代码单独提取出来。

目前C/OS-Ⅱ支持ARM、PowerPC、MIPS、68k/ColdFire和x86等多种体系结构。

1.3.4 Windows CE

Windows CE主要应用于PDA及智能电话(Smart Phone)等多媒体网络产品。微软于2004年推出了代号为“Macallan”的新版WinCE系列的操作系统。

Windows CE.NET的目的,是让不同语言所编写的程序可以在不同的硬件上执行,也就是所谓的.NET Compact Framework,在这个Framework下的应用程序与硬件互相独立无关。而核心本身是一个支持多线程及多CPU的操作系统。在工作调度方面,为了提高系统的实时性,主要设置了256级的工作优先级及可嵌入式中断处理。

如同在PC Desktop环境,Windows CE系列在通信和网络的能力,以及多媒体方面极具优势。其提供的协议软件非常完整,甚至还提供了有保密与验证的加密通信,如PCT/SSL。而在多媒体方面,目前在PC上执行的Windows Media和DirectX都已经应用到Windows CE 3.0以上的平台,其主要功能就是对图形、影音进行编码译码,以及对多媒体信号进行处理。

1.3.5 VxWorks

VxWorks操作系统是美国WindRiver公司于1983 年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。VxWorks以其高可靠性、实时性和可裁剪性,以及良好的持续发展能力、高性能的内核及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。因此,它被广泛地应用在通信、军事、航空航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导及飞机导航等。在美国的F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至在1997年4月在火星表面登录的火星探测器上也使用了VxWorks。

1.3.6 IAR PowerPac

IAR PowerPac是一个具有丰富功能的实时嵌入式操作系统(RTOS),并包含一个高性能的文件管理系统。

IAR PowerPac RTOS的代码尺寸极小(只有2KB),并以合理的价格体系针对低成本的ARM应用市场。更多的模块将被逐步引入到IAR PowerPac产品家族中,并且将支持非常多的目标芯片。

IAR PowerPac能提供抢占和循环这两种方式的任务调度,能处理无限多的任务、信号量、邮箱和软件定时器,并可设置255 种不同的优先级别。IAR PowerPac能实现完全的中断,0中断时延是该产品一个重要的特点。IAR PowerPac还能实现可嵌套的中断,并且能达到非常快的上下文切换速度。IAR PowerPac文件管理系统能兼容MS-DOS/MS-Windows系统,支持FAT12、FAT16 和FAT32 格式,以及支持多种设备驱动和多种存储媒介,包括:RAM盘、MMC卡、SD卡、CompactFlash卡、硬盘接口、SMC卡及NOR/NAND闪存,其高度模块化的结构使得对内存的消耗降至最小。

IAR PowerPac for ARM现在已经通过IAR的全球网络进行销售,并提供下载没有时间限制的免费学习版(最多可创建3个任务),可供读者进行实际体验。