首页 > 嵌入式教程 阅读数:19

嵌入式操作系统有哪些?

单片机时代的嵌入式系统都不用操作系统,它们只是为了实现某些特定功能,使用一个简单的循环控制对外界的控制请求进行处理,不具备现代操作系统的基本特征,这对一些简单的系统而言是足够的。但是当系统越来越复杂、利用的范围越来越大时,缺少操作系统就成为了最大的一个缺点,因为每添加一项新功能都可能需要重新开始设计,否则只能增加开发成本和系统复杂度。

从 20 世纪 80 年代开始,出现了各种各样的商业用嵌入式操作系统,如 VxWorks、Linux 和 Android 等。

1. VxWorks

VxWorks 操作系统是美国风河(WindRiver)公司于 1983 年设计开发的一种实时操作系统,以其良好的可靠性和卓越的实时性被广泛应用在通信、军事、航空、航天等高精尖技术领域及实时性要求极高的领域中,如卫星通信、军事演习、导弹制导、飞机导航等。

VxWorks 最大的缺点是价格高昂,主要特点说明如下:

1) 高性能实时

VxWorks 的微内核 Wind 是一个具有较高性能的、标准的嵌入式实时操作系统内核,其支持抢占式的基于优先级的任务调度,支持任务间同步和通信,还支持中断处理、看门狗(WatchDog)定时器和内存管理。

VxWorks 任务切换时间短、中断延迟小、网络流量大的特点使得 VxWorks 的性能得到很大的提高,与其他嵌入式系统相比具有很大的优势。

2) POSIX 兼容

POSIX(the Portable Operating System Interface)是工作在 ISO/IEEE 标准下的一系列有关操作系统的软件标准。制定这个标准的目的就是在源代码层次上支持应用程序的可移植性。这个标准产生了一系列适用于实时操作系统服务的标准集合 1003.1b(过去是 1003.4)。

3) 可配置性好

VxWorks 提供良好的可配置能力,可配置的组件超过 80 个,用户可以根据自己系统的功能需求通过交叉开发环境方便地进行配置。

4) 友好的开发调试环境

VxWorks 提供的开发调试环境便于进行操作和配置,开发系统 Tornado 更是受到了广大嵌入式系统开发人员的欢迎。

5) 支持的处理器种类多

如 x86、i960、Sun Sparc、Motorola MC68000、MIPS RX000、Power PC、StrongARM、XScale 等。大多数 VxWorks API 是专用的,VxWorks 提供的板级支持包Board Support Package,BSP支持多种硬件板,包括硬件初始化、中断设置、定时器和内存映射等例程。

2. Linux

嵌入式 Linux 现在已经有许多版本,包括强实时的嵌入式 Linux(如新墨西哥工学院的 RT-Linux 和堪萨斯大学的 KURT-Linux 等)和一般的嵌入式 Linux 版本(如 uCLinux 和 PocketLinux 等)。

1) RT-Linux

RT-Linux 把通常的 Linux 任务优先级设为最低,而所有的实时任务的优先级都高于它,以达到既兼容通常的 Linux 任务又保证强实时性能的目的。

2) uCLinux

另一种常用的嵌入式 Linux 是 uCLinux,它是针对没有 MMU(内存管理单元)的处理器而设计的。它不能使用处理器的虚拟内存管理技术,对内存的访问是直接的,所有程序中访问的地址都是实际的物理地址。它专门为嵌入式系统做了许多小型化的工作。

3. μC/OS-II

μC/OS 是 MicroController Operating System 的缩写,它是源码公开的实时嵌入式操作系统,其主要特点说明如下:
  • 源代码公开,系统透明,很容易把操作系统移植到各个不同的硬件平台上;
  • 可移植性强,μC/OS-II 绝大部分源码是用 ANSI C 写的,可移植性(Portable)较强。而与微处理器硬件相关的那部分是用汇编语言写的,已经压缩到最低限度,使 μC/OS-II 便于移植到其他微处理器上;
  • 可固化,μC/OS-II 是为嵌入式应用而设计的,这就意味着,只要开发者有固化(ROMable)手段(C 编译、连接、下载和固化),μC/OS-II 即可嵌入到开发者的产品中成为产品的一部分;
  • 可裁剪,通过条件编译可以只使用 μC/OS-II 中应用程序需要的那些系统服务程序,以减少产品中的 μC/OS-II 所需的存储器空间(RAM 和 ROM);
  • 占先式,μC/OS-II 完全是占先式(Preemptive)的实时内核,这意味着 μC/OS-II 总是运行就绪条件下优先级最高的任务。大多数商业内核也是占先式的,μC/OS-II 在性能上和它们类似;
  • 实时多任务,μC/OS-II 不支持时间片轮转调度法(Round-roblinScheduling),该调度法适用于调度优先级平等的任务;
  • 可确定性,全部 μC/OS-II 的函数调用与服务的执行时间具有可确定性。

由于 μC/OS-II 仅是一个实时内核,这就意味着它不像其他实时操作系统那样,它提供给用户的只是一些 API 函数接口,有很多工作往往需要用户自己去完成。

把 μC/OS-II 移植到目标硬件平台上也只是系统设计工作的开始,后面还需要针对实际的应用需求对 μC/OS-II 进行功能扩展,包括底层的