现在 Linux 广泛用于各类计算应用,不仅包括 IBM 的微型 Linux 腕表、手持设备(PDA 和蜂窝电话)、因特网装置、瘦客户机、防火墙、工业机器人和电话基础设施设备,甚至还包括了基于集群的超级计算机。让我们看一下 Linux 用作嵌入式系统需要提供哪些功能,以及它在目前可用的选择中最具吸引力的原因所在。
七十年代晚期出现了用作嵌入式系统的现成的操作系统,现在有许多可行的选择方案。其中,一些主要的竞争者开始崭露头角,比如,VxWorks、pSOS、Neculeus 和 Windows CE。
在嵌入式系统中使用 Linux 的优点和缺点 虽然大多数 Linux 系统运行在 PC 平台上,但 Linux 也可以作为嵌入式系统的可靠主力。Linux 流行的“back-to-basics”方法使得它的安装和管理比 UNIX 更加简单灵活,这对于那些 UNIX 专家们来说又是一个优点,他们已经因为 Linux 中有许多命令和编程接口同传统的 UNIX 一样而赏识它了。
典型的压缩包装 Linux 系统经过打包,在拥有硬盘和大容量内存的 PC 机上运行,嵌入式系统可不要这么高的配置。一个功能完备的 Linux 内核要求大约 1 MB 内存。而 Linux 微内核只占用其中很小一部分内存,包括虚拟内存和所有核心的操作系统功能在内,只需占用 Pentium CPU 系统的 100 K 内存。只要有 500 K 的内存,一个有网络栈和基本实用程序的完全的 Linux 系统就可以在一台 8 位总线(SX)的 Intel 386 微处理器上运行的很好了。由于内存要求常常是需要的应用所决定的,比如 Web 服务器或者 SNMP 代理,Linux 系统甚至可以仅使用 256 KB ROM 和 512 KB RAM 进行工作。因此它是一个瞄准嵌入式市场的轻量级操作系统。
与传统的实时操作系统相比(RTOS),采用象嵌入式 Linux 这样的开放源码的操作系统的另外一个好处是 Linux 开发团体看来会比 RTOS 的供应商更快地支持新的 IP 协议和其它协议。例如,用于 Linux 的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接口卡(NIC)驱动程序以及并口和串口驱动程序。
核心 Linux 操作系统本身的微内核体系结构相当简单。网络和文件系统以模块形式置于微内核的上层。驱动程序和其它部件可在运行时作为可加载模块编译到或者是添加到内核。这为构造定制的可嵌入系统提供了高度模块化的构件方法。而在典型情况下该系统需结合定制的驱动程序和应用程序以提供附加功能。
Linux 用于嵌入式的因特网设备也是很合适的,原因是它支持多处理器系统,该特性使 Linux 具有了伸缩性。因而设计人员可以选择在双处理器系统上运行实时应用,提高整体的处理能力。例如,您可以在一个处理器运行 GUI,同时在另一个处理器上运行 Linux 系统。
在嵌入式系统上运行 Linux 的一个缺点是 Linux 体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。
另一方面,现成的 RTOS 完全是为实时性能而设计的,它通过在由用户而非系统级进程启动时分配给某个进程以高于其它进程的优先级的方式来实现可靠性。进程在操作系统看来就是在内存里或硬盘驱动器上执行的程序。给他们指定进程 ID 或者数字标识符为的是让操作系统跟踪正在执行的程序和这些程序的相关联的优先等级。这样的方式保证了 RTOS 时间能比 Linux 提供更高的可靠性(可预见性)。但最重要的,这还是一种更加经济的选择。
不同类型的嵌入式 Linux 系统 已经有许多嵌入式 Linux 系统的示例;可以有把握地说,某种形式的 Linux 能在几乎任一台执行代码的计算机上运行。例如,ELKS(可嵌入 Linux 内核子集)方案计划在 Palm Pilot 上使用 Linux。下面列出了一些更加广为人知的小型嵌入式 Linux 版本:
ETLinux — 设计用于在小型工业计算机,尤其是 PC/104 模块上运行的 Linux 的完全分发版。
ThinLinux — 面向专用的照相机服务器、X-10 控制器、MP3 播放器和其它类似的嵌入式应用的最小化的 Linux 分发版。
软件和硬件要求 许多的用户接口工具和程序增强了 Linux 基本内核的多功能性。就此而论,可以把 Linux 看作是这样一个连续范围,从只有存储器管理、任务转换和定时器服务最小化的微内核一直到完整的一系列文件系统和网络服务的功能完善的服务器。
最小的嵌入式 Linux 系统仅需要三个基本元素:
引导实用程序 Linux 微内核,由内存管理、进程管理和定时服务构成 初始化过程 要实现最低限度的工作能力,您还需要添加:
硬件驱动程序 一个或多个应用进程,以提供所需功能 随着要求的增加,您可能还需要:
一个文件系统(可能是在 ROM 或者是 RAM 里) TCP/IP 网络栈 储存半瞬态数据和提供交换空间的磁盘 32 位内置 CPU(所有完全的 Linux 系统都需要)
硬件平台选项 挑选最佳硬件的过程会相当复杂,问题起源于公司内部政策、成见、其它方案的遗留问题、缺乏全面的或者精确的信息以及成本 — 需考虑总的产品成本,而不仅仅是 CPU 本身。有时,一旦把 CPU 使用其它外围设备所必需的总线逻辑和延迟时间考虑在内,那么快速而廉价的 CPU 也可能变得昂贵。要计算任意给定的项目所需的 CPU 速度,首先要现实地看看为了完成一个给定的任务 CPU 得运行多快然后再乘以三。还要确定总线需要运行多快。如果还有二级总线,比如 PCI 总线,那么将它们也考虑在内。一条慢的总线(即一条被 DMA 通信阻塞的总线)将会显著降低高速 CPU 的速度。下面是一些嵌入式 Linux 应用的最佳硬件解决方案。
Bright Star Engineering:Bright Star Engineering 的 ipEngine-1 是支持嵌入式 Linux 的信用卡大小的单片机。它利用了基于 PowerPC 的 CPU,并提供了一组板上外设,有 Ethernet、LCD/视频控制器、USB、串口 I/O 以及一个 16K 门的可由用户配置的 FPGA。BSE 的嵌入式 Linux 配置允许 Linux 从 ipEngine 的板上 4MB 闪存中引导。
Calibri:CalibriTM-133 是将嵌入式 Linux 作为其操作系统来使用的网络设备,它方便使用、紧凑,并且可以用于多种用途。它为防火墙、VPN 和路由要求提供了一种高效、低成本的解决方案。