关键词:嵌入式系统,嵌入式操作系统,Linux
嵌入式系统是20世纪80年代由8位单片机发展而来的(基于单片机的系统一般称为传统嵌入式系统),8位单片机只需要编写单一的控制程序即可工作,其解决的问题比较简单,需要的计算量不大,运算速度也较低。然而20世纪90年代后期,随着互联网时代的到来,人类进入了后PC时代(PC出现的20世纪80年代初被称为前PC时代),很多电子设备需要增加TCP/IP联网功能和更加智能化、更高的运行速度要求:比如多媒体音频、视频图像数据的采集、传输和处理(如MP3、MPEG4等);图形界面与触摸屏技术;无线控制技术及相应的软件协议(如BLUETOOTH、IRDA等)。面对这些需求,一方面,8位单片机“力不从心”; 另一方面嵌入式开发者不愿意投入大量的时间去开发开发周期长的产品,新一代的嵌入式系统(以下简称“嵌入式系统”)就是在这样的环境下诞生的。
嵌入式系统的定义有很多种,其中最直接、最通俗的定义就是:控制特定设备的专用计算机系统。它的基本组成为三部分:嵌入式微处理器、嵌入式操作系统以及在其上开发的应用程序,如图1所示。嵌入式微处理器是整个嵌入式系统的核心,是嵌入式操作系统和应用程序开发的硬件平台。目前,市场上的嵌入式微处理器种类繁多,比较流行的有Motorola公司的32位嵌入式处理器系列:冷火系列、龙珠系列、PowerPC系列,以及MIPS系列、ARM系列、X86系列(Intel 386EX、AMD4xx)等。流行的嵌入式操作系统有:PSOS、VXWORKS、WINCE、QNX、LYNXOS、Palm OS、嵌入式Linux(包括RT-Linux、UC-Linux等)。

1 嵌入式Linux操作系统
Linux从1991年10月5日推出至今,仅12年时间,其对全球计算机界的影响已经超过了以往任何操作系统。Linux是一个成熟稳定的网络操作系统,作为嵌入式操作系统,它具有许多显著的优点。首先,Linux的核心源代码是免费的,任何人都可以从互联网上得到。其次,Linux的核心代码是公开的,每个人都可以根据自己的意图对其进行修改和定制,以开发适合自己的产品。第三,Linux的核心代码可以缩减到130多个字节,这可以大大降低开发产品的成本,适应嵌入式系统的发展趋势。第四,Linux的核心代码是用C语言编写的,具有良好的可移植性,因此可以很容易地移植到许多微处理器上。目前流行的嵌入式Linux操作系统有:μC-Linux、RT-Linux、EMBEDIX、Hard Hat Linux、MONTAVISTA Linux、LYNXOS、Blue Cat Linux、ET-Linux、Midori等。下面对一些主流的嵌入式Linux操作系统的特点进行分析和介绍。
1.1 μC Linux
μC-Linux 是 LINEO 公司开发的 Linux 2.0 系统。μC-Linux 一词中,μ 表示 Micro,C 表示 Control,因此 μC-Linux 即 Micro-Control-Linux,字面意思为“针对微控制领域设计的 Linux 系统”。μC-Linux 内核比原版 Linux 2.0 内核小很多,但保留了 Linux 操作系统的主要优点。
(1)内存管理。这部分是μC-Linux与传统Linux最大的区别。标准Linux是针对带有MMU的处理器而设计的,在这类处理器上,虚拟地址会被送到MMU,由MMU将虚拟地址映射到物理地址。而对于μC-Linux来说,它的设计是针对不带MMU的处理器,也就是说,μC-Linux不能使用处理器的虚拟内存管理技术。μC-Linux仍然采用内存分页管理,系统在启动时对实际内存进行分页,应用程序在加载时也分页加载。所以实际上μC-Linux采用的是实内存管理策略。
(2)内核加载方式。μC-Linux内核有两种运行方式。①Flash运行方式:将内核可执行映像文件烧录到Flash中,系统启动时从Flash中的某个地址开始逐句执行。这种方式其实很多嵌入式系统都是采用的这种方式。②内核加载方式:将内核压缩文件存放在RAM中,系统启动时读取压缩文件并在内存中解压,然后开始执行。这种方式相对复杂,但运行速度较快。
(3)可执行文件格式。μC-Linux系统采用平面可执行文件格式,如表1所示。
(4)μC-Linux的主要特点如表2所示。
(5)应用程序库。μC-Linux小型化的另一种方法是重写应用程序库。与日益庞大而全面的GLIBC库相比,μCLIBC对LIBC进行了简化。μC-Linux对用户程序采用静态链接,这会使应用程序体积变大,但由于缺乏MMU,不得不这样做。同时,这种方式也更接近通常的嵌入式系统方式。
(6)许多用户程序被移植到μC-Linux上,包括ftp(文件传输协议)客户端程序、free swan(IPSEC(互联网安全协议)的Linux实现)等等。
1.2 嵌入式
EMBEDIX 是 LINEO 于 2000 年初发布的流行桌面 Linux 操作系统的第一个版本。它是一种嵌入式 Linux 软件解决方案,为 Linux 添加了功能和连接性,以定制嵌入式设备。它是专为机顶盒、个人数字助理 (PDA) 和其他小型设备设计的 Linux 系统。EMBEDIX 不需要硬盘,可以在使用 PowerPC 芯片或 Intel 兼容芯片的终端设备上运行。
LINEO 将实时技术融入 EMBEDIX SDK,为嵌入式设备开发者提供软件和硬件实时能力。EMBEDIX SDK 支持并包含 Metrowerks Code Warrior 集成开发环境 (IDE)。它将文本编辑器、项目管理器、搜索引擎、编译器、连接器和调试器整合为一个集成应用软件,可缩短产品开发周期并降低产品成本。EMBEDIX SDK 还支持在 Windows 下进行开发,可以完全访问本地 Windows 应用程序和工具,并为开发者提供虚拟开发环境(具有可视化集成环境)。这对 Windows 开发者来说非常方便。
1.3 实时Linux
RT-Linux是世界上最早的实时嵌入式操作系统。RT-Linux并没有对Linux内核做大的改动,而是利用了Linux内核模块机制,采取插入模块的方式,通过独立的内核来管理实时任务。RT-Linux是硬实时的,Linux内核被设计成可抢占的,其主要方法是实现一个实时内核来处理硬件消息和接管中断。实时任务可以直接运行在这个内核上,而Linux内核本身则作为最低优先级的Idle Task运行。实时内核有自己的基于优先级的调度算法,Linux内核随时可以被优先级更高的实时任务抢占。实时任务通过特定的通信机制(如FIFO)与Linux进程进行通信。运行在Linux内核上的进程可以完成一些非实时的功能,如图2所示。RT-Linux永远不需要等待Linux释放资源,不需要额外的内存,也不需要与任何数据结构同步(除非在非常严格的控制下)。 RT-Linux目前支持两个商业版本:开放版(GPL)和专业版(以二进制形式发布),专业版比开放版支持的硬件架构更多。
RTLinux/Open3.1是FSMLABS推出的硬实时操作系统,其主要特点有:(1)标准API;(2)优异的实时性能;(3)遵循GNU开源代码;(4)丰富的工具套件(包括GDB调试器、GNU编译器等);(5)可靠的实时编程模式(实时与非实时代码分离,操作系统和应用软件中关键的实时组件将获得绝对的优先权,避免非实时组件影响实时组件的响应时间)。
1.4 蒙塔维斯塔 Linux
MONTAVISTA Linux 是业界领先的嵌入式 Linux 解决方案提供商 MONTAVISTA 最新推出的嵌入式 Linux 操作平台,该产品支持广泛的嵌入式应用,为通讯基础设施、网络、消费电子、仪器仪表和工控设备提供标准的嵌入式 Linux 平台。
MONTAVISTA Linux 2.1 是开源的、免版税的,并且是 100% 纯 Linux 源代码。MONTAVISTA Linux 2.1 专业版支持多种嵌入式处理器,包括 6 种业界领先的处理器:x86/IA-32、PowerPC、Strong ARM、XSCALE、ARM、MIPS。MONTAVISTA Linux 2.1 包括 K-Develop IDE、目标配置工具、库优化工具,并提供超过 215 个应用程序包。其重要改进之一是跨平台开发,支持 14 种主机开发环境,包括 Windows NT/2000 上的 Red Hat、Mandrake、Solaris 和 VM-Ware。
1.5 蓝猫Linux
Blue Cat Linux基于Linux-2.4内核,支持多种处理器,包括Intel XSCALE、Intel IXP1200网络处理器、嵌入式Intel架构等,Blue Cat 4.0版本有诸多特点:
(1)提供独有的GDB扩展函数,用于内核调试;
(2)流行的开发环境和漂亮的用户界面;
(3)能够快速配置内核的功能,大小等;
(4)可提供蓝猫基础支持,供Windows或Linux主机上开发;
(5)采用开放式架构的电源管理和优化解决方案;
(6)更加方便加载和使用已经经过测试的应用组件。
Blue Cat RT 是基于 FSMLABS 的 RT-Linux 技术开发的产品,可以集成到 Blue Cat Linux 套件中。将 Blue Cat Linux 与 Blue Cat RT 结合起来可以为用户提供混合嵌入式系统解决方案。一般情况下,使用通用的嵌入式 Linux 内核;在特定情况下,使用具有实时性能的内核。这样可以提供既满足开放标准嵌入式要求又满足实时要求的嵌入式操作系统解决方案。
2 嵌入式Linux操作系统的发展前景
以信息家电为代表的网络时代嵌入式产品,不仅为嵌入式市场展现了美好的前景、注入了新的活力,也对嵌入式操作系统技术提出了新的挑战。
(1)嵌入式应用软件的开发需要更加强大的开发工具和操作系统的支持。随着互联网技术的成熟和带宽的提高,互联网提供的信息内容日益丰富,应用项目多种多样。手机、微波炉等嵌入式电子设备的功能已不再单一,电气结构也更加复杂。为了满足应用需求,设计人员采用功能更加强大的嵌入式处理器(如32位、64位RISC芯片或信号处理器DSP)来增强处理能力。同时还采用实时多任务编程技术和交叉开发技术来控制功能复杂度,简化应用程序设计,保证软件质量,缩短开发周期。此外,嵌入式系统还应要求具有高度简洁、可靠、应用广泛、易于开发、多任务处理和低成本的操作系统。因此,Linux作为一个完全免费和开放的OS,必然会成为今后开发嵌入式系统的首选操作系统。
(2)网络化已成为必然趋势。为适应嵌入式分布式处理结构和互联网应用的需要,嵌入式系统需要一个或多个标准的网络通信接口(IEEE1394、USB、CAN、蓝牙等)和相应的网络协议簇(TCP/IP、SNMP等)。Linux与生俱来的优良网络血统为互联网应用的发展铺平了宽广而平坦的道路。
(3)实现小型化、低功耗、低成本。从某种程度上讲,嵌入式产品的小型化、低功耗、低成本与处理器的高性能是一对不可调和的矛盾。因此,要实现小型化,就要求处理器的性能相应降低;同时也对嵌入式软件设计技术的要求也相应提高。对于系统小型化,Linux可以说是众多嵌入式操作系统中做得最好的。由于Linux的源代码是公开免费的,可以根据需要进行裁剪、修改,从而实现系统软件的小型化。
(4)提供完善的多媒体人机界面(HMI)。嵌入式设备受到亿万用户青睐的重要因素之一就是其与用户的亲和力和自然的人机交互界面。人与信息终端的交互需要以GUI屏幕为中心的多媒体界面。目前嵌入式Linux的GUI系统有Micro Windows、Open GUI、Qt/Embedded、Mini GUI等。总之,拥有让客户满意的人机界面也是嵌入式系统未来的发展方向。
(5)嵌入式操作系统走向融合。面对如此众多的嵌入式操作系统,开发人员有时会感到不便。这是因为,如果在基于OS1的操作系统上开发的应用程序,现在要在OS2上使用,必须先移植后才能使用。随着嵌入式设备的不断发展,未来肯定会出现一种可以支持几乎所有应用程序的操作系统。也就是说,未来的嵌入式操作系统必然会走向融合。唯一能担当这一重任的无疑是Linux。因为它提供了一种游戏规则,让任何人都可以自发地为自己的发展寻找出路。
3 结论
据一家专门发布嵌入式Linux系统信息的网站所做的调查显示,52%的用户已经决定在未来24个月内以Linux作为嵌入式系统开发的原型,而只有21%的用户仍然使用专有操作系统,19%的用户仍然使用Windows系列操作系统进行嵌入式系统开发。这充分说明了使用Linux开发嵌入式系统的生命力。由于Linux嵌入式系统强大的生命力和利用价值,越来越多的公司和大学对其研究表现出不同程度的兴趣。因此,基于Linux的嵌入式系统必将成为未来嵌入式领域的领头羊。
参考
1 李善平, 刘文峰, 王焕龙. Linux与嵌入式系统. 北京: 清华大学出版社, 2002
2 Tansi Studio.嵌入式系统开发圣经.北京:中国青年出版社,2002
3 邵贝贝译.嵌入式实时操作系统UC/OS-Ⅱ(第2版).北京:北京航空航天大学出版社,2003
4 毛德操, 胡希明. Linux内核源代码场景分析(上、下册). 杭州: 浙江大学出版社, 2001