一、 Linux嵌入式体系
操作体系是一种在核算机上运转的软件,它的主要使命是办理核算机上的体系资源,为用户供给运用核算机及其外部设备的接口。它存在的意图是为了办理一切硬件资源,并且供给运用软件一个适宜的操作环境。嵌入式体系由于硬件的先天约束,常常只具有极稀疏的硬件资源,如 时脉较少的 CPU、较少的内存、常不具有磁盘而用小容量的DiskOnChip或DiskOnModule。而在运用电池的体系中,它还要完结节约电池耗费,延伸电池运用时刻的功用。
Linux 作为嵌入式操作体系是彻底可行的,由于Linux供给了完结嵌入功用的根本的内核和你所需求的一切用户界面,它是多面的。它能处理嵌入式使命和用户界面。将Linux看作是接连的统一体,从一个具有内存办理、使命切换和时刻服务及其他的分拆的微内核到完好的服务器,支撑一切的文件体系和网络服务。Linux作为嵌入式体系是一个带有许多优势的新成员,它对许多CPU和硬件渠道都是易移植的、安稳、功用强壮、易于开发。
Application program
API
X-server Java virtual machine
Device driver
Linux Kernel
Boot load
嵌入式Linux体系需求下面三个根本元素:
1. 引导东西
2. Linux微内核:内存办理、 程序办理
3. 初始化进程
假如要它成为完好的操作体系且持续坚持小型化,还得加上:
1.硬件驱动程序
2.硬件接口程序
3.运用程序组
谈到操作体系就必定要说一说它的开发环境,Linux是依据GNU的C编译器,作为GNU东西链的一部分,与gdb源调试器一同作业。它供给了开发嵌入式Linux体系的一切软件东西。以下是一个典型的开发东西的运用流程:
1.写入或植入引导码
2.向串口打印字符串的编码
3.将gdb方针码移植作业串口,这可与另一台运转gdb程序的Linux 主机体系对话
4.运用gdb让硬件和软件初始化码在Linux内核发动时作业
5.Linux内核发动,串口成为Linux操控口并可用于后续开发
6.假如在你的方针硬件上运转了完好的Linux内核,你能够调试你的运用进程
更具体的内容可拜见网站[url]http://www.emlinux.com[/url]
二、硬件渠道
研制人员在挑选最好的硬件时,往往由于缺少完好或精确的信息而使挑选硬件成为杂乱且困难的作业。硬件本钱常常是要害的议题,当考虑本钱时、需求坚信你在考虑产品的整个本钱而不仅是CPU的本钱;由于好的CPU一旦加上总线逻辑和延时电路使之与外设一同作业,硬件体系或许变成十分贵重的产品。假如你正在寻觅嵌入式软件体系,那么应首要确认了硬件渠道即确认了微处理器CPU的类型。
现在比较盛行的硬件渠道有Intel公司的Strong Arm 系列,Motorola公司的DragonBall系列,NEC公司的VR系列,Hitachi公司SH3,SH4系列等等,都可选为硬件渠道。但最好在选定前先要确认所做体系的运用功用和所需的速度,并且制定好外接设备和接口规范。这样可精确的定位所需求的硬件计划,得到性价比最高的体系。 下图是以Intel公司的StrongArm为例来阐明硬件渠道:
三、Linux嵌入式体系与硬件的联系
对初学者而言,能够将内核与使命分隔,规范的Linux内核一般驻留在内存中,每一个运用程序程序都是从磁盘运到内存上履行。当程序完毕后,它所占用的内存就被开释,程序就被下载了。在一个嵌入式体系里,或许没有磁盘。有两种途径能够消除对磁盘的依托,这要看体系的杂乱性和硬件的规划。在一个简略的体系里,当体系发动后,内核和一切的运用程序都在内存里。这便是大多数传统的嵌入式体系作业办法,它相同能够被Linux支撑。有了Linux,就有了第二种或许性。由于Linux已经有才能“加载”和“卸载”程序,一个嵌入式体系就能够运用它来节约内存。试想一个典型的包含一个大约8MB到16MB的Flash Memory和8MB内存的体系。Flash Memory能够作为一个文件体系。Flash Memory驱动程序用来衔接Flash Memory和文件体系。作为替代也可运用Flash Disk,用东西软件可把Flash Memory仿真为磁盘或部分。其间一个比方是Intel 公司可供给Flash Memory 办理软件IPSM -Intel Persistent Storage Manager, 概况见[url]http://developer.intel.com/design/builder/flbldr/swb/swb.htm[/url]
一切的程序都以文件办法存储在Flash文件中,需求时能够装入内存。这种动态的、“依据需求加载”的才能是支撑其它一系列功用的重要特征:
1. 它使初始化代码在体系引导后被开释。Linux相同有许多内核外运转的共用程序。这些一般程序在初始化时运转一次,今后就不再运转。并且,这些共用程序能够用它们彼此共有的办法,一个接一个按次序运转。这样,相同内存空间能够被重复运用以“调入”每一个程序,就象体系引导相同。这确实能够节约内存,特别是那些装备一次今后就不再更改的网络仓库。假如Linux可加载模块的功用包含在内核里,驱动程序和运用程序就都能够被加载。它能够查看硬件环境并且为硬件装上相应的软件。这就消除了用一个程序占用许多Flash Memory来处理多种硬件的杂乱性。
2. 软件的晋级更模块化。你能够在体系运转的时分在Flash上晋级运用程序和可加载驱动程序。
3. 装备信息和运转时刻参数能够作为数据文件储存在Flash上。
虚拟内存
规范Linux的另一个特征是虚拟内存的才能。正是这种奇特的特征使运用程序员能够疯狂的编写代码而不计后果,不论程序有多大。在嵌入式体系里不需求这种强壮的功用。实践上,由于它会带来无法操控的时刻要素,你或许不期望它在实时的体系里。这个软件有必要规划得愈加精悍,以合适硬件渠道上的物理内存,就象其它嵌入式体系相同。留意由于CPU的原因,一般在Linux中保存虚拟内存代码是正确的,由于将它铲除很费事;并且还有别的一个原因–它支撑同享文本,这样就能够使许多程序同享一个软件。
虚拟内存的调入功用能够被关掉,只要将交流空间的巨细设置为零。假如你写的程序比实践的内存大,体系就会当作你的运转用尽了交流空间来处理;这个程序将不会运转,或许malloc将会失灵。在许多CPU上,虚拟内存供给的内存办理能够将不同程序分隔,避免它们写到其它地址的空间上。这在嵌入式体系上一般不或许,由于它只支撑一个简略、扁平的地址空间。Linux的这种功用有助于其开展。它削减了胡乱的编写程序形成体系溃散的或许性。许多嵌入式体系依据功率方面的原因有意识运用程序间能够同享的“大局”数据。这也能够经过Linux同享内存功用来支撑,同享的仅仅指定的内存部分。
文件体系
许多嵌入式体系没有磁盘或许文件体系。Linux不需求它们也能运转。实践上,许多商业性嵌入式体系供给文件体系作为选项。Linux供给 MS-DOS-CompaTIble文件体系,一起还有其它多种挑选。之所以供给其它挑选是由于它们愈加强壮并且具有容错功用。Linux还具有查看和保护的功用,商业性供货商往往不供给这些。这关于Flash体系来说特别重要,由于它是经过网络更新的。假如体系在晋级进程中失去了才能,那它就没有用了。保护的功用一般能够处理这类问题。
文件体系能够被放在传统的磁盘驱动器、Flash Memory或其它这类的介质上。并且,用于暂时保存文件,一个小RAM盘就足够了。Flash Memories被切割成块。这些块中或许包含一个含有当CPU发动时运转的开端的软件的引导块。这或许包含Linux 引导代码。剩下的Flash能够用作文件体系。Linux的内核能够经过引导代码从Flash复制到RAM,或许还有一个挑选,内核能够被存储在Flash的一个独立部分,并且直接从那里履行。别的关于一些体系来说还有一个风趣的挑选,那便是将一个廉价的CD-ROM包含在内。这比Flash Memory 廉价,并且经过交流CD-ROM支撑简略的晋级。有了这个,Linux 只要从 CD-ROM上引导,相似从硬盘上相同从CD-ROM上取得一切的程序。
终究,关于联网的嵌入式体系来说,Linux 支撑NFS(Network File system)。这为完结联网体系的许多增值功用翻开了大门。榜首,它答应经过网络上加载运用程序。这是操控软件修正的根底,由于每一个嵌入式体系的软件都能够在一个一般的服务器上加载。它在运转的时分也能够用来输入或输出许多的数据、装备和状况信息。这对用户监督和操控来说是一个十分强壮的功用。举例来说,嵌入式体系能够树立一个小的RAM磁盘,包含的文件中有与当时状况信息同步的内容。其它体系能够简略的把这个RAM磁盘设置为依据网络的长途磁盘,并且空中存取状况文件。这就答应另一个机器上的Web服务器经过简略的CGI Script存取状况信息。在其它电脑上运转的其它运用程序包能够很简略的存取数据。
引导–LILO和BIOS在哪里
当一个微处理器榜首次发动的时分,它开端在预先设置的地址上履行指令。一般在那里有一些只读内存,包含初始化或引导代码。相似于在PC上的BIOS。它履行了一些低水平的CPU初始化和其它硬件的装备文件。BIOS持续辨认哪个磁盘里有操作体系,把操作体系复制到RAM并且转向它。实践上,这十分杂乱,但对咱们的方针来说也十分重要。在PC上运转的Linux依托PC的BIOS来供给这些装备和OS加载功用。
在一个嵌入式体系里常常没有这种BIOS。这样你就要供给平等的发动代码。走运的是,嵌入式体系并不需求象PC机上的 BIOS引导程序那样的灵活性,由于它一般只需求处理一个硬件的装备。这个代码更简略也更单调。它仅仅个指令清单,将固定的数字塞到硬件寄存器中去。但是,这是要害的代码,由于这些数值要与你的硬件相符并且要依照特定的次序进行。所以在大多数情况下,一个最小的通电自检模块,能够查看内存的正常运转、让LED闪耀,并且驱动其它有必要的硬件以使主Linux OS发动和运转。这些发动代码彻底依据硬件决议,不可随意移动。走运的是,许多体系都有为中心微处理器和内存所定制的菜单式硬件规划。典型的是,芯片制造商有一个样本主板,能够用来作为规划的参阅–或多或少与新规划相同。一般这些菜单式规划的发动代码是能够取得的,它能够依据你的需求简单的修正。在少量情况下,发动代码需求从头编写。为了测验这些代码,你能够运用一个包含模仿内存的电路内置模仿器,它能够替代方针内存。你把代码装到模仿器上并经过模仿器调试。假如这样不可,你能够越过这一步,但这样就要一个更长的调试周期。这个代码终究要在较为安稳的内存上运转,一般是Flash或EPROM芯片。你需求运用一些办法将代码放在芯片上。怎么做,要依据“方针”硬件和东西来定。
一种盛行的办法是把Flash或EPROM芯片刺进EPROM或Flash烧制器。这将把你的程序“烧”(存)入芯片。然后,把芯片刺进你的方针板的插座,翻开电源。这个办法需求板上配有插座,但有些设备是不能配插座的。
另一个办法是经过一个JTAG界面。一些芯片有JTAG界面能够用来对芯片进行编程。这是最便利的办法。芯片能够永久被焊在主板上,一个小电缆从板上的JTAG衔接器,一般是一个PC卡,联到JTAG界面。下面是PC运转JTAG界面所需的一些惯用程序。这个设备还能够用来小量出产。
安稳性
对大多数微处理器来说,Linux十分好。移植到新微处理器宗族的Linux内核运转起来与本来的微处理器相同安稳。它常常被移植到一个或多个特定的主板上。这些板包含特定的外围设备和CPU。走运的是,许多代码是与处理器的特性不相关的,所以移植会集在处理器的差异上,其间大多数是在内存办理和中止操控范畴。一旦成功移植,它们就十分安稳。
引导战略广泛依托于硬件要求,并且你有必要有计划地做一些定制的作业。设备驱动程序愈加紊乱:有些安稳有些不安稳。并且挑选很有限;一旦你离开了通用的PC渠道,你需求自己编写。走运的是,周围有许多驱动程序,你或许能够找到一个与你的需求附近的修正一下。这种驱动程序界面已界说好。许多相似的驱动程序都十分附近,所以把磁盘、网络或一系列的端口驱动程序从一个设备移植到另一个设备上一般并不难。你或许发现许多驱动程序都写得很好,很简略了解,但你仍是要预备一本关于内核结构的书在手头。
总归,这些操作体系和Linux的问题在于对作业进程细小之处的误解,而不在于代码的难度或根本的规划过错。任何操作体系都有许多争论不休的故事,这儿不需求重复。Linux的优势在于源代码是揭露、注释明晰和文档完全的。这样,你就能够操控和处理所呈现的任何问题。
三、嵌入式Linux操作体系将怎么开展
嵌入式Linux确实有它的缺点。比方,尽管它并不比某些竞争对手差多少,但它确实是个需求占用存储器的操作体系。这能够经过削减一些不必要的功用来补偿,但这或许会花很长的时刻,并且假如不细心的话,还或许带来很大的困扰。许多Linux的运用程序都要用到虚拟内存,在许多嵌入式体系中,是没有价值的,所以不要认为一个没有磁盘的Linux嵌入式体系能够运转任何Linux运用程序。
综上所述,Linux嵌入式操作体系在嵌入式体系中的运用才刚刚开端,但它所具有的技术优势和共同的运开发办法给业界以新异,有理由信任在不久的将来Linux嵌入式操作体系必定会成为绽放在操作体系中美丽的奇葩。