当前位置:Linux教程 - Linux - 嵌入式Linux技术

嵌入式Linux技术

操作系统是管理计算机上的资源,为用户使用计算机及其外部设备提供最基本接口的程序。

自从计算机诞生以来,随着计算机、网络技术的快速发展,操作系统一直处于不断发展和改进之中,人们将越来越多的功能加入到操作系统中,导致操作系统越来越大。但是,随着应用领域的扩大,为了适应不同的应用场合,考虑到系统的灵活性、可伸缩性以及可裁减性,一种以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统---嵌入式操作系统便随之延生。

嵌入式Linux是按照上面所说的嵌入式操作系统的要求设计的一种小型操作系统。由一个kernel(内核)及一些根据需要进行定制的系统模块组成。其Kernel很小,一般只有几百K左右,即使加上其它必要的模块和应用程序,所需的存储空间也很小,多任务多进程的系统特征,有些还有具有实时性。

一个小型的嵌入式Linux系统只需要下面三个基本元素:

引导程序
Linux微内核(由内存管理、进程管理和事务处理构成)
初始化进程
如果要让它有更多的功能且继续保持小型化,可以加上:

文件系统(可以在ROM,RAM,FLASH或Disk Onchip中)
TCP/IP网络支持
存储更多数据用的磁盘。
提供设计精简的应用程序。
由于嵌入式Linux操作系统的高度灵活性,开发者可以很容易地对它进行定制或作适当开发,来满足实际应用需要。

Linux在嵌入式系统中的优势

嵌入式操作系统主要有 Palm OS,Windows CE,EPOC,LinuxCE,QNX,ECOS,LYNX,高端嵌入式系统要求许多高级的功能,如图形用户界面和网络支持 。很多高端RTOS供应商已经提供了这些功能,但其价格也很高端,一般人难以接受。微软的Windows CE也有此类功能,却不具备大多数嵌入式系统要求的实时性能,而且难以移植,也曾经有人想以DOS为基础用单独的第三方工具拼凑一个系统,但这种努力将是白费。众所周知,Micro$oft的东西向来都是以昂贵和不稳定出名,而现在需要的是一个便宜、成熟并且提供高端嵌入式系统所必须特性的操作系统,嵌入式Linux操作系统以价格低廉、功能强大又易于移植而正在被广泛采用,成为新兴的力量,所以,众多商家纷纷转向了嵌入式linux。

Linux为嵌入操作系统提供了一个极有吸引力的选择,她是个和Unix相似、以核心为基础的、完全记忆体保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括X86,Alpha,Sparc,MIPS,PPC,ARM,NEC,MOTOROLA等现有的大部分蕊片。程式源码全部公开,任何人可以修改并在GNU通用公共许可证(GNU General Public License)下发行,这样,开发人员可以对操作系统进行定制,再也不必担心像M$ windows操作系统中“后门”的威胁(后门不是我们常说的走后门,是指嵌入到软件中的一个特殊程序,它有一些不道德的额外功能,例如可以把使用者的数据送到指定的地址)。同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。

Linux带有Unix用户熟悉的完善的开发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X windows)。其强大的语言编译器gcc、g++等也可以很容易得到。不但成熟完善、而且使用方便。

嵌入式linux操作系统与硬件设备的关系

运行嵌入式Linux的CPU可以是 X86,Alpha,Sparc,MIPS,PPC,MOTOROLA,NEC,ARM。与这些蕊片搭配的主板都很小,与一张PCI卡大小相当,有的甚至更小!

嵌入式linux所需的存储器不是软磁盘、硬盘、ZIP盘、CD-ROM、DVD这些众所周知的常规存储器,它使用Rom,CompactFlash,M-Systems的DiskOnChip,SONY的MemoryStick,IBM 的MicroDrive等体积极小---与主板上的Bios大小相近,存储容量不太大的存储器。它的“内存”可以使用普通的内存也可以使用专用的RAM。

PC平台上通常有键盘、鼠标、显卡、显示器等输入输出设备及各种存储设备,有ISA、PCI、AGP、USB等接口。在嵌入式系统中,往往不面要上述设备和接口的支持,而使用嵌入式系统特有的接口和设备,如PCMCIA接口、LCD显示屏、触摸屏,DOC(DiskOnChip)等。

在一个简单的系统里,当系统启动后,内核和所有的应用程序都在内存里。这就是大多数传统的嵌入式系统工作模式,它可以被Linux支持。因此嵌入式系统可以没有磁盘。许多嵌入式系统没有磁盘或者文件系统。Linux不需要它们也能运行。有多种途径可以消除对磁盘的依赖,这要看系统的复杂性和硬件的设计。

在PC机上都需要Bios ,当CPU启动的时候,它开始在预先设置的地址上读取指令,执行了一些低水平的CPU初始化和其它硬件的配置。再由BIOS继续引导操作系统,由操作系统引导其它应用程序。实际上,这非常复杂,但对我们的目标来说也非常重要。在PC上运行的Linux也要依靠PC上的BIOS来启动。

与PC机不同的是,嵌入式系统里经常没有这种BIOS。这样你就要提供同等的启动代码,这看起来使系统的引导启动变得更加复杂。幸好,嵌入式系统并不需要PC 机Bios引导程序那样大的灵活性,因为嵌入式设备的硬件配置通常是不变的,嵌入式引导程序只需要处理一种硬件的配置。这使代码更简单也更枯燥。它只是一指令清单,将固定的数字塞到硬件寄存器中去。然而,这是关键的代码,因为这些数值要与你的硬件相符而且要按照特定的顺序进行。所以在大多数情况下,一个最小的通电自检模块,可以检查内存的正常运行、让LED闪烁,并且驱动其它必须的硬件以使主Linux OS启动和运行。这些启动代码完全根据硬件决定,不可随意改变。

要选择与嵌入式Linux系统相结合的硬件产品是一个复杂的工作,不但要考虑到硬件的成本,体积,可靠性,还受到其他非技术因素的影响,如政治、偏见、传统等等。这一工作必须严肃对待,因为它也是开发的重点。

嵌入式linux 的技术发展

嵌入式系统的商品化操作系统在70年代后期才出现,许多是用汇编语言写成的,并且只能用于特定的处理器,更换新处理器,它的操作系统就必须更新以适应新的系统。当C语言出现时,操作系统编写的效率、稳定性、可移植性都有了很大的提高。这一点在管理上立刻表现出来,它为微处理器被淘汰时保护软件投资带来了希望。对于市场来说这是一个好消息。用C语言写成的操作系统今天越来越普遍。一般来说,可重复使用的软件已经占了主导地位并越做越好。

许多嵌入式系统根本没有操作系统,只有循环控制。对于一些简单设备这是足够的,但是随着系统越来越复杂,更多嵌入式系统需要与各类网络联接,因此需要网络功能。增加网络功能将导致系统复杂程度提高以致要求操作系统。

传统的嵌入式系统是基于单片机的,而新一代的嵌入式系统将以如下为特点:以IP核模块(Intellectual Property Kernel知识产权核模块)为核心,用混合ASIC/CPLD/FPGA生成的硅片直接构成整块的单片嵌入式产品(SOC)。

随着嵌入式操作系统的快速发展,应用的范围不断扩大,使用者日益增加,一个非常关键,必须解决的重大问题出现了。

很久以前, 一般的编程语言,编译,开发只能支持英文的,不能支持它国语言,比如拿一个只支持英文的浏览器去访问中文的网站,显示出来的东西将是混乱不可阅读,嵌入式Linux也同样不能避免这种问题,它直接影响到系统开发的路线。

为了使Linux支持中文,国人做了许多的努力,基本上解决了中文支持的问题。1999年是中国Linux发展和普及过程中最重要的一年,其中涌现了许多制作中文 Linux发布版本的公司,加速 Linux的中文化过程并推动Linux在中国的普及。如今这些公司又纷纷转向了中文嵌入式Linux操作系统的开发,如Turbo,红旗,还有一些一开始就开发嵌入式Linux公司,如网虎,博利思等,其中,博利思于5月份最先推出其中文嵌入式Linux操作系统。

为了适应更广的语言和文化习俗,软件有必要在设计结构和机制上支持多语言的扩展特性,这一过程称为国际化,。越来越多的软体开发者了解到, 如果他们设计的产品一开始就考虑到多语环境的使用, 这些产品将用更少的花费, 更快达到全球市场, 比那些照 ""糟糕的老方法"" 设计的产品更成功。有了国际化,你不需要一个日文版的 Netscape 去浏览日本的网页. 你能使用英文的, 法文的或者任何版本的Netscape 来浏览日本的网页, 反之亦然,而实现这些的唯一条件只要有适当的字库支持。

Linxu的国际中最主要的是X windows 的国际化,早期的X11R4版本中,仅仅含有支持单字节和双字节字体的函数,所以它不能算是国际化的函数库. 此后,一个叫做""mltalk""的X协会成立并着手研究X窗口系统的国际化问题. 众多的X窗口系统供应商也 参与了该组织。

按国际化的级别来分,下列几种情况都属于国际化:

语言可以切换. 在系统启动时可以设置某种语言
使用不同语言的软件可以同时使用,在应用软件启动时可以设置某种语言
使用不同语言的软件可以同时使用,而且应用软件的语言可以动态切换
使用不同语言的软件可以同时使用,而且在应用软件中可以同时使用不同语言
最新的X11R6 解决了X11R4中存在的问题,主要的变化有,

定义了标准的输入协议、Locale数据格式定义
只采用了一种国际化工具的样本应用模块 在输出上,X11R6增加了从由到左的的书写方式,以支持阿拉伯语和希伯来语等,增加了从上到下的书写方式,以支持中文和日文等的书写方向
支持国际化的高层库 OSF/Motif Qt/kdelib gtk+/gnome-lib Perl Java
支持多语言的典型软件 浏览器 Netscape 编辑器 XEmacs 编辑器 Mule 编辑器 vim 终端 rxvt 排版软件 LaTeX/lyx PostScript/PDF: gs/acroread 图像处理: gimp 幻灯片制作 mgp 即将完成: StarOffice, Koffice
支持Unicode的软件 高级图形库函数 Qt 2.x Java 语言开发工具 JDK 编辑器 yudit 专用的支持Unicode的 X 终端 基于GTK+的文本处理器 Gscript
因为对国际化的研究开始不久,所以mltalk (X国际化协会)提出的了 一个基本问题: 什么是X窗口系统的国际化? 对它的解释也各不相同。 实际上,即使是现在,人们对国际化的定义仍然存在分歧,分歧的焦点主要集中于对软件或系统怎样程度的国际化才算是真正的国际化。但不管怎样,国际化的问题已经有了巨大的进展,这必将促进嵌入式Linux的不断成长,成熟。

在Linux日益流行的同时,嵌入式Linux也渐渐得到许多程序员的关注。由于其用途之广达到了前所未有的地步:从移动计算平台、 信息家电(机顶盒,数字电视)、媒体手机、到工业、商业控制(智能工控设备,POS/ATM机)、 电子商务平台、甚至军事应用!由此可见,嵌入式Linux的吸引力是巨大的。 同时嵌入式板的生产商得来了越来越多的引起全世界注意的标准,许多厂商都注意到了嵌入式Linux的适用性之广,有不少公司正在开发嵌入式Linux,想信不久,嵌入式Linux在嵌入式板的生产商中将大受欢迎。

在国外,发展成熟并且已经商品化的嵌入式操作系统可供选择的有VxWorks, pSOS, Neculeus、QNX、LYNX和Windows CE。目前,国内只有博利思,网虎,Turbo这有数的几家公司推出了嵌入式Linux操作系统,但相信不久,中国的嵌入式Linux产品将会如雨后春笋般出现!