自从计算机诞生以来,随着计算机、网络技术的快速发展,操作系统一直处于不断发展和改进之中,人们将越来越多的功能加入到操作系统中,导致操作系统越来越大。但是,随着应用领域的扩大,为了适应不同的应用场合,考虑到系统的灵活性、可伸缩性以及可裁减性,一种以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统---嵌入式操作系统便随之延生。
嵌入式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语言出现时,操作系统编写的效率、稳定性、可移植性都有了很大的提高。这

投稿指南


