在嵌入式和实时系统中使用 Linux
在接口、监控、通信和控制应用中使用的智能专用系统和设备,越来越需要先进、最先进的操作系统提供的服务。许多此类系统需要高级功能,例如高分辨率和用户友好的图形用户界面 (GUI)、TCP/IP 连接、用可靠(且低功耗)的闪存固态硬盘替代传统磁盘驱动器、支持 32 位超高速 CPU、使用大型内存阵列以及看似无限容量的存储设备,包括 CD-ROM 和硬盘。 这已经不是昔日的“独立”代码、“自制”内核或“普通 DOS”的时代了。 不,那些日子已经一去不复返了!
再者,考虑一下硬件和芯片组创新的快速步伐,以及旧设备极其迅速的淘汰。将这两者结合起来,您就可以明白为什么商业 RTOS(实时操作系统)供应商跟上硬件设备不断变化的步伐已经变得非常具有挑战性。及时支持最新设备——甚至只是为了避开芯片组淘汰的无情压力——需要大量且持续的资源投入。如果商业 RTOS 供应商跟上步伐都很困难,那么通过编写独立代码或自制内核来单打独斗肯定毫无意义。随着选择范围的缩小,嵌入式系统开发人员发现自己面临着两难境地
一方面,当今基于最新芯片和硬件功能的高度复杂和功能强大的智能嵌入式系统,需要的正是像 Windows 这样流行的、高端操作系统所提供的强大功能、复杂性和最新的支持。
另一方面,嵌入式系统需要极高的可靠性(用于不间断、无人值守的运行),以及定制操作系统以满足应用程序独特需求的能力。
这就是难题:通用桌面操作系统(如 Windows)不太适合类似家电的嵌入式系统的独特需求。然而,商业 RTOS 虽然旨在满足嵌入式应用程序的可靠性和配置灵活性要求,但由于缺乏标准化以及无法跟上技术快速发展的步伐,因此越来越不受欢迎。
幸运的是,一种令人兴奋的替代方案已经出现:开源 Linux。Linux 提供强大而复杂的系统管理工具、丰富的设备支持、可靠性和稳健性的卓越声誉以及广泛的文档。最重要的是(系统开发人员说),Linux 及其源代码均可免费获得。
与 Windows 不同,Linux 本身是模块化的,可以轻松扩展到紧凑的配置——几乎比 DOS 大不了多少——甚至可以安装在单张软盘上。更重要的是,由于 Linux 源代码是免费提供的,因此可以根据独特的嵌入式系统要求定制操作系统。因此,Linux 创建了一种新的操作系统开发和支持模式也就不足为奇了,在这种模式下,成千上万的开发人员不断为不断发展的 Linux 代码库做出贡献。此外,数十家面向 Linux 的软件公司如雨后春笋般涌现,渴望支持开发人员构建从工厂自动化到智能家电等各种应用程序的需求。
由于 Linux 以源代码形式公开且免费提供,因此有许多变体和配置可用。有一些专门针对“瘦服务器”或“防火墙”应用程序的实现、小尺寸版本和实时增强版本。还有针对非 x86 CPU 的 Linux 端口,包括 PowerPC、RISC、68xxx 和微控制器。
您如何决定使用哪个发行版?首先,要认识到所有 Linux 发行版都是同一主题的变体——也就是说,它们是相同基本组件的集合,包括 Linux 内核、命令 shell(命令处理器)和许多常用实用程序。差异往往集中在包含了数百个 Linux 实用程序中的哪些、发行版 CD 上包含了哪些额外内容以及安装过程的管理方式。发行版可能包含开源或专有软件,例如 StarOffice。即使 Linux 是免费的,购买“商业”Linux 发行版也有许多优点,包括开发工具、有用的实用程序和支持。许多现在围绕发行和支持 Linux 建立业务的公司正忙于投资开发工具和服务,以使其 Linux 产品与众不同。正在开发的一些特殊功能包括
安装工具,用于自动化和简化生成针对特定目标硬件设置进行调整的 Linux 配置的过程。这些工具可以节省数周甚至数月的开发工作。
各种类似 Windows 的 GUI,其大小、外观、功能和特性各不相同,以支持广泛的嵌入式需求。
支持各种嵌入式和实时计算平台和环境的特定需求(例如,特殊的 CompactPCI 系统功能)。
然而,尽管存在如此大的多样性,但所有 Linux 实现都共享一个共同的核心,包括内核、驱动程序、几个流行的 GUI 和实用程序。
对于许多嵌入式系统来说,嵌入 Linux 的主要挑战是最大限度地减少系统资源需求,以便在 RAM、固态硬盘 (SSD)、处理器速度和功耗等约束条件下运行。嵌入式操作可能需要从 DiskOnChip 或 CompactFlash SSD 启动(并在其中安装);在没有显示器和键盘的情况下启动和运行(“无头”操作);或通过以太网 LAN 连接从远程设备加载应用程序。有许多现成的、小尺寸 Linux 来源。其中包括越来越多的面向应用程序的 Linux 配置和发行版,这些配置和发行版是针对特定应用程序进行调整的。一些示例包括路由器、防火墙、Internet/网络设备、网络服务器、网关等。您也可以选择创建自己的嵌入式 Linux 版本,从标准发行版开始,并删除您不需要的模块。即便如此,您也应该考虑从别人的工作配置开始来快速启动您的工作,因为他们的版本的源代码将可用于此目的。最重要的是,这种建立在 Linux 社区其他人的努力之上的方式不仅完全合法——而且是受到鼓励的!
许多嵌入式系统需要对真实世界事件做出可预测且有界限的响应。此类“实时”系统包括工厂自动化、数据采集和控制系统、音频/视频应用程序以及许多其他计算机化产品和设备。实时性能的普遍接受的定义是,必须在定义的、可预测的和相对较短的时间间隔内响应真实世界事件。虽然 Linux 不是实时操作系统(Linux 内核不提供所需的事件优先级和抢占功能),但有几种附加选项可用于为基于 Linux 的系统带来实时功能。最常见的方法是双内核方法。使用这种方法,通用(非实时)操作系统作为实时内核下的任务运行。通用操作系统提供磁盘读/写、LAN/通信、串行/并行 I/O、系统初始化、内存管理等功能,而实时内核处理真实世界事件处理。您可以将此视为“鱼与熊掌兼得”的策略,因为它可以在保留流行的通用操作系统优势的同时,增加实时操作系统的功能。对于 Linux 而言,您可以保留与标准 Linux 的完全兼容性,同时以非干扰方式添加实时功能。
当然,您也可以深入研究并修改 Linux 以将其转换为实时操作系统,因为它的源代码是公开可用的。但是,如果您这样做,您将面临严重的劣势,即您的实时 Linux 无法在功能或驱动程序方面跟上主流 Linux 的步伐。简而言之,您定制的 Linux 将无法从全球数千名开发人员的共同努力所带来的持续 Linux 发展中获益。
在任何情况下,有多少应用程序实际上需要对 Linux 进行实时增强?请记住,“实时”是一个相对的,而不是绝对的表达。如前所述,实时系统必须在可接受且可预测的时间窗口内处理真实世界的任务。虽然 CPU 以越来越快的速度运行(接近 1GHz),但它们周围的世界却以恒定的速度运转。因此,实时性能变得越来越容易实现。早在“传统”RTOS 首次开发出来时,嵌入式系统依赖于以个位数兆赫兹速度运行的 4 位和 8 位 CPU,并且运行内存只有几千字节的 RAM。现在,随着 CPU 速度高达 1GHz,内存以数百兆字节为单位,实时性能已不再是主要关注的问题。更令人担忧的是上市速度和功能的复杂性。在以执行效率为 CPU 约束过去的口号的时代,协议是面向互联网的未来的关键。
有一个术语描述了在真实世界应用程序中使用普通操作系统并获得可接受结果的情况:“软实时”。在许多系统中,您可以确保在不求助于使用专用 RTOS 的情况下实现应用程序的真实世界约束。但是,这往往只在所需的响应时间为毫秒级而非微秒级时才实用。假设情况如此,在合理快速的处理器(486-133 或更快)上,没有特殊实时附加组件的最小配置 Linux 可能完全满足您的需求。如果软实时听起来正是您所需要的,您可能需要查看名为 Linux-SRT(软实时)的 Linux 附加组件。另一方面,您的系统可能确实需要微秒级的响应时间。在这种情况下,您可以专门使用廉价的微控制器或 DSP 来处理时间关键型事件,或者您可以使用几种可用的实时 Linux 附加组件之一(例如,RTLinux 或 RTAI)。
由于 Linux 是免费的,那么任何人如何才能基于提供商业 Linux 发行版来建立有利可图的业务呢?这很像瓶装水——基本上,您付费购买的是服务:包装、交付、质量保证等。温馨提示:不要以为您从 Web 下载或从 Linux CD 获得的每个与 Linux 相关的程序都可以免费复制并纳入您开发的设备中。一些针对嵌入式和实时应用程序的商业 Linux 发行版包含专有的第三方工具和实用程序,如果您将它们纳入多个系统中,则需要获得许可和支付版税。换句话说,请仔细阅读细则。然而,就目前而言,获得许可的 Linux 系统软件是例外而不是规则。由于市场如此重视 Linux 及其相关软件的开源和免版税,因此大多数为嵌入式和实时 Linux 市场服务的 Linux 软件公司都选择基于销售工具、提供工程服务和提供技术支持来建立业务。
鉴于 Microsoft Windows 在最终用户桌面/笔记本电脑市场中的强势地位,“普通”桌面/笔记本电脑用户不太可能在短期内运行 Linux。另一方面,在嵌入式和实时应用中,操作系统是一种支持非计算机设备类似家电操作的底层和隐藏技术,Linux 的几个关键特性使其成为系统开发人员越来越青睐的选择
源代码可用且免费。
没有运行时版税。
Linux 支持大量设备。
Linux 真正是一个全球标准。
Linux 复杂、高效、稳健、可靠、模块化且高度可配置。
时间会证明一切,但看起来 Linux 肯定已经从根本上和不可逆转地改变了嵌入式和实时操作系统的格局。结果呢?开发人员现在可以更好地控制他们的嵌入式操作系统;制造商免去了软件版税的成本和麻烦;最终用户获得更多价值。南极的企鹅们正在庆祝。

Rick Lehrbaum (rick@linuxdevices.com) 于 1983 年共同创立了 Ampro Computers, Inc.。1992 年,Rick 成立了 PC/104 Consortium,并担任其主席至 2000 年 1 月。1999 年 10 月,Rick 将注意力转向嵌入式软件,创立了 LinuxDevices.com——“嵌入式 Linux 门户”。