版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中英文资料对照外文翻译嵌入式Linux概述摘要本文我将论述一下嵌入式Linux目前的发展趋势(状况)。我将概述Linux是什么,嵌入式Linux系统与桌面系统有什么不同的特点。然后,我将详细地论述六个关键领域:•配置•实时性•图形用户界面•开发工具支持•经济性•技术支持选项下面,我将比较嵌入式Linux与WindowsCE的实时性,操作系统映像大小和内存需求。然后我会讨论一些基于嵌入式Linux的零售设备并与大家讨论一下关于嵌入式Linux一些大概的评论。简介除非你在过去的几年里一直与世隔绝,否则毫无疑问你一定听说过Linux操作系统。作为微软的WindowsNT在软件开源中的竞争对手,它已经在软件开发和系统管理社区,以及主流的非技术性新闻媒体上被广泛宣传和激烈的讨论。当Linux系统首次推出的时候,它是专门针对运行在英特尔80x86或兼容的微处理器上台式电脑。引用Linux操作系统的创始LinusTorvalds说过的一句话:“从Linux操作系统诞生之日起,它将只会运行在拥有一块IDE硬盘的PC上”。回首至今为止的21世纪,这句话显得非常滑稽。如今的Linux已经被移植到许多不同的微处理器上并运行在许多并不含有硬盘的平台上。这些设备甚至没有通用的计算机系统,也没有如网络路由器,核心监控程序和用来跟踪旋风管的数据收集单位。正是这些类型的系统,被统称为“嵌入式Linux”。在下一节我会关注嵌入式Linux系统和它的堂兄弟桌面Linux系统之间的区别。然后,我要回详细描述嵌入式Linux在:配置,实时性,GUIs,开发工具的支持,经济性,和技术支持这六个方面的特点。然后,我将比较一下基于同样配置的嵌入式Linux内核与WindowsCE内核的大小和实时性特征。然后,我将讨论三个基于嵌入式Linux的有趣的设备:光学遥测系统,NetTel路由器和IBM公司的掌上电脑研究项目“itsy”。我会再总结了一些一般性意见的作用和未来的嵌入式Linux。是什么让Linux成为“嵌入式”?迄今为止在这篇文章里我已经多次使用了“嵌入式Linux”,但我还没有真正确定这个词的含义。是不是如果系统不是从硬盘上启动的就可以被称为嵌入式系统?是不是所有从硬盘上启动的系统都不是嵌入式系统?本节将列出五个不同的嵌入式系统,来解答这类问题。注意,这些设备都不是专用于Linux的,但都具有嵌入式系统的普遍特征。从历史上看,嵌入式系统的界定已经成为一个巨大的,有争议的灰色地带。许多激烈的讨论已经涉及到某一特定系统是不是“嵌入式”-尤其是在各方自由酗酒和大量的怪胎参加。我即将论述的这些属性特点肯定不能让所有人都满意,但它是一个通则,也足以明确区分所有的嵌入式系统,更加全面的描述是没有必要的。这五个嵌入式系统通常都有的属性是:•无盘启动和储存•无BIOS•空间占用和运行内存有限•内存管理•针对少量特定的应用当你第一次启动和运行嵌入式系统时自举是第一个需要解决的问题。当给硬件供电时首先会发生什么事?那些只关注桌面电脑系统的用户和开发者很少考虑在嵌入式系统中至关重要的议题。大多数嵌入式系统都是从非硬盘类媒体启动的。这些媒体可能是Flash存储器,或是读/写或只读存储器如EEPROM。另外,这种设备可能不是从内部存储介质上启动的,而是在启动时从网络上下载操作系统映像。内存可以在系统运行时存储数据,非易失性存储器如Flash存储器可在系统关机时存储数据。嵌入式系统通常不使用磁盘类存储器,原因是硬盘驱动器的能耗和速度方面不符合要求。与Flash存储器相比硬盘需要消耗更多的能源,速度也很慢。在经济上,在每字节成本上硬盘当然比闪存低,但今天的嵌入式系统很少需要几个GB的存储,只有几百个字节的Flash存储器是一个更好的解决办法。基本输入/输出系统(BIOS)是电脑中一个重要的软件,尽管它被大多数人所忽略。它的作用是初始化PC的内置硬件,并提供基本的硬件操作手段。一个典型的桌面操作系统,包括Linux,是建立在BIOS之上的,需要充分利用它。在嵌入式系统中你没有奢侈的BIOS,在操作系统内核启动运行之前,你必须手动初始化你的硬件到一个可以运行的状态。它似乎不是一个大问题。很少有嵌入式硬件平台会拥有一个和PC一样复杂的主板架构,它们通常更容易配置。通常硬件制造商们都会提供示例代码让你能很快适应并让系统启动和运行起来。正如我们前面提到的,嵌入式系统并不需要目前大多数台式机那样的大容量内存和存储器。一些嵌入式系统只需要几百字节的RAM和ROM就能运行,最大不超过几兆字节。这与一个拥有看似无限资源的桌面系统相去甚远,也是一个程序员从桌面系统过渡到嵌入式系统最大的绊脚石。内存管理是嵌入式系统另一个巨大的区别。由于储存要求严格,而且没有存放交换文件通常需要的虚拟内存系统。此外,嵌入式系统上运行的各种微处理器,其中一些不具备虚拟内存所必须的内存管理单元。另外,值得注意的是,嵌入式Linux可同时满足这些要求。任何Linux系统都可以在编译操作系统映像的时候将虚拟内存大小设置为0来消除交换文件。此外,改良后的Linux系统不需要MMU。uCLinux操作系统运行在多种32位微处理器上,它没有MMU并且只使用物理内存处理。最后,嵌入式系统通常是针对一系列专门任务而设计的。他们可能没有任何用户界面,只拥有几个指示灯。用户无法安装和运行除了定制软件以外的任何东西,该系统的最初目的只是为了运行这几个特定的软件。与之对比的是桌面计算机系统,用户通常可以安装和运行的自定义软件包,并能完成系统设计者从来没有考虑过的任务。很明显我们不能忘了实时性这方面的问题。虽然在世界上这是一个热门的话题,但是对嵌入式系统来说它并不是一个普遍的要求。许多嵌入式系统没有任何硬件或软件上的实时要求,是能完全满足大部分用户的操作系统。嵌入式Linux有实时子系统的选项,我们将在下面的章节里讨论。嵌入式Linux详情在未来数节,我们将在六个具体领域里讨论嵌入式Linux的细节。这些领域涵盖了Linux在嵌入式系统中的各个方面的作用。目标是解决系统从规约到维修的整个生命周期内各个阶段的问题。其中的一些问题,如经济性和技术支持,在整个系统开发过程中,是非技术性的却又很重要的问题,配置能够针对特定设备定制操作系统是嵌入式系统一个非常重要的特征。你一定不想你的系统映像中包含一个你不需要的几兆字节的图形用户界面支持代码。将内核裁剪到能够满足所有需求的尽可能小的体积,这将是每一个设计师在硬件能够启动和运行以后所要面临的第一个任务,它将是一个非常艰难的任务。配置嵌入式Linux系统与配置桌面Linux系统并无太大的区别。系统构建过程中使用简单的文本文件来选择包含的组件。安装模块用于在系统启动时装载所选子系统。还可以在运行时动态加载和卸载模块,来定制必要的可选组件。这种灵活的配置方式对嵌入式系统是非常有益的。它不仅可以让你动态地添加和删除可选组件,也可以让你做部分更新。把系统分成几个可单独加载的模块,而不是单一模块,这样就可以在不需要改变整体映像的情况下升级或添加新的模块。特别是在你的设备连接到网络时,它能进行远程更新。Linux安装模块有一个缺点,它有潜在的稳定性问题。由于模块是动态整合到Linux内核,他们能充分利用操作系统的资源却不能获得内存保护。对于没有MMU硬件的设备这不是问题。此外,由于系统是一个闭合环路,为了更容易维护系统的完整性,用户不能在空闲时安装新的模块。实时性关于“实时性”有很多说法,所以我会在描述Linux的实时功能之前对它进行定义。关于“实时”我的理解是在确定的时间界限内执行一个中断和相应的中断服务程序。其他,如上下文切换时间和系统时钟粒度,与之相关,但不是核心问题。一般情况下,实时的性可分为两大类:硬实时和软实时。硬实时意味着迟到的响应是错误的响应。如果系统不在规定时间内响应中断,那么在可预见的时间内就有可能发生灾难性的事情。软实时,另一种说法就是响应迟到不会有任何可怕的后果,但只有在确定的时间内响应中断才能获得最佳性能。重要的是要记住,虽然实际数字是很重要的,但实时性的特征,实际上更多的是关于一种行为与原始速度的对比。最基础的Linux内核不是实时的。不能保证在确定的时间内处理中断请求,延迟有可能会很长,这取决于中断发生时系统的负载情况。RTLinux是为具有硬实时特性硬件而设计的Linux内核。RTLinux是由新墨西哥技术学院的MichaelBarabanov和VictorYodaiken于1997年2月最先发布,它不是一个单独的,修改后的Linux内核版本。在通盘考虑所有可能之后,它被认为是维护性和兼容性方面的噩梦。RTLinux被设计成一个小的、独立的实时内核,以及一套用于替换Linux内核的例程,启用和禁用中断的模块。RTLinux的还提供了一个API,允许用户在实时内核里创建任务,并可以通过FIFOs或共享内存的方法与Linux内核里的进程通信。图1描述了系统是如何工作的。当Linux内核调用CLI或者STI时RTLinux会禁止启动中断,这些中断请求被传送到RTLinux的一个进程中并记住目前Linux的中断状态。当中断发生时,他们总是由RTLinux的内核接手,然后传递给Linux内核,如果Linux内核不处理则中断启用。这允许RTLinux在没有Linux内核阻碍的情况下能一直对每个中断都作出响应。这也使得Linux内核无法处理嵌套中断的问题得到解决,因为RTLinux总是最先看到中断并确保内核不会重复进入内核。RTLinux的并非是这个竞技场里唯一的成员。实时应用程序接口(RTAI)采取了类似的做法扩展现有的Linux内核的实时功能。他们有几个不属于RTLinux也没有广泛普及的特点,如定期定时器。有传言说这两个产品将会在未来的某个版本里合二为一。RTLinux和RTAI目前也有一些功能存在问题。首先,很显然这些功能特性都是后来加上去的,而不是作为固有的组成部分而设计的。虽然RTLinux很好地完成了它预定的目标,但它往往只是有益于某些类别的应用,如数据采集,而不是更普遍适用。另一个问题是,RTLinux无法解决优先级倒置这一问题,可能会造成严重的错误,这种错误很难复制和跟踪。图1:基于模块化设计的RTLinux图形用户界面随着台式机电脑已经越来越依赖于GUIs,而不是基于文本格式的接口,许多嵌入式系统也已拥有了图形用户界面。一个拥有GUI的嵌入式系统可能会有多种不同的选择,包括低分辨率液晶显示器,可选的VGA输出端口,或一个完全集成的屏幕,不管是纵向或横向的。尽管与桌面GUIs的概念类似,嵌入式系统还是有自己独特的要求的,如内核体积。Linux操作系统在GUIs领域一直受到市场分散的伤害。虽然在X–Window基本上成为了事实标准,但仍然有许多流行的竞争对手包括Win32API的模拟器和仿Windows95界面。嵌入式系统当然是免费使用这些针对台式机的系统,但也有一些产品专门针对特殊需求的嵌入式系统。Lineo系统是嵌入式Linux的一个发行版,它提供增强功能和商业支持。他们提供一个自定义工具包用来建立一个嵌入式GUI。Microwindows和NanoGUI是两个公共开源项目,它们共同提供了一个在Linux系统上使用的免费的Win32API仿真程序库。当然,还有其他的选择,这些只是冰山的一角。许多嵌入式设备在提供GUI时,选择一种不同的路线。由于如今网络和Internet连接是如此普遍,许多系统都包含Web服务,并通过HTML格式提供用户界面。这使用户可以在任何地点任何平台上都能通过网页浏览器远程访问设备。还有,不管设备的大小和形状都只有很少的要求,因为它没有显示器。开发工具支持说到开发工具,嵌入式Linux开发商可以说是两全其美。他们不仅可以使用与桌面系统相同的GNU工具包,他们还可以使用相同的硬件调试工具,那些它们一直在用的工具。您不必更换您的示波器或逻辑分析仪因为你切换到了嵌入式Linux。GNU包含了编译器,调试器,汇编程序和链接程序,能够支持各种各样的微处理器,是软件开源精神一个最好的证明。他们不仅是经过时间考验的,并且是免费的,还提供源代码,也就是说,如果你想移植到一个新的处理器,你可以自由地执行它支持的尚未被使用过的编译器。很少有其他嵌入式操作系统可以做到这一点,它只需要一点调试程序的时间,而不需要预先付款。稍微有点阻碍的是,大部分GNU调试器是基于文本格式的,以灵活的运行在不同架构的平台上。此外,已经有许多人找到了GNU内核调试器的漏洞,并且它很难使用,特别令人沮丧的是在开发嵌入式系统设备驱动程序上这一点是非常普遍的。对于uCLinux操作系统的用户来说,另外一个区别在于它采用了一种特殊的可执行文件格式。由于没有虚拟内存,可执行程序不能迁移地址,所有的支线都必须使用浮动地址代码(PIC)来完成。如果你的处理器不支持PIC功能,这就需要一个专门的连接器和修改调试工具。经济因素一般而言Linux最吸引人的地方就在于它是免费的。虽然你可以买到众多公司发行的具有更友好的安装界面或很多附加功能的版本,但是Linux的核心代码是可以免费下载的,并很容易得到GNU再次发行许可证。无论是面向台式机还是嵌入式Linux这都是可以的,但在嵌入式方面还有一些额外的问题需要考虑。再次分发你的机器上的嵌入式Linux是否需要支付版权费,这取决于你使用的Linux系统的供应商。Lineo’sEmbedix的版权费是随着不同的操作系统功能和额外的软件包包括GUI工具包和Web浏览器而变化的。另外,不包含在正常Linux发行版内的某些特殊硬件设备的驱动程序,可从许多公司购买到。当然你可以自己编写驱动程序,但是可以利用已有资源并缩短产品上市时间总是会使你在“自己编写或购买”选择了更快捷方式。考虑到上述因素,您的嵌入式Linux产品可能在支付了版权费之后还是得不到完全的自由。近来,另一个令人关注的问题已经在Linux社区引发了很多讨论,实际上RTLinux是有专利的。虽然RTLinux的创作者已经指出,不会有基于专利上的版权费的要求,在国际上更详细的Linux书面协议仍在制订之中。技术支持选项一个让人烦恼的大问题是,使用不同公司发行的操作系统的技术支持怎么办。当发现BUG和机器出现故障的时候,你是否会因为没有一个集中的组织机构可以求助而感到被冷落?我认为,这种情况嵌入式Linux实际上比商业系统要好.首先是因为嵌入式Linux的开源性质使得它在这方面的状态更健康。当您要跟踪一个讨厌的错误的时候一个不可取代的步骤是通过源代码。只有极少数的商业操作系统会向开发者开放源代码,更少有商业操作系统会允许在代码上修改或添加新功能。第二个原因,在Linux技术支持上,有更多合格的有经验的人来回答问题。新闻讨论组和电子邮件讨论已经向广大的桌面Linux程序员和同样多的嵌入式Linux程序员证明了它宝贵的价值。随着Linux在台式机和嵌入式系统的日益普及,开发商们所能得到的合同和收益都会随之而增长。当然,如果你确实想要舒适的一个单一的名称,运行时的事情出差错,嵌入式Linux已经如此。Lineo对用户提供定制版Linux的技术支持,还有几个公司同样如此。每个改写版都有自己的适应过程,但它肯定能让你的Linux更加符合标准更加稳定。当然,这一切都不是免费的。商业公司提供的定制版Linux通常具有较高的购买成本,并且可能需要为其中的部分组件支付使用费。比较WindowsCE和嵌入式Linux系统体积和性能是关键,重要的是要了解嵌入式Linux是怎样成为一个竞争者的。表1比较了嵌入式Linux与WindowsCE的实时性和内核体积以及内存占用。
最长中断处理时间(单位:微秒)可联网内核体积可联网内核最小内存需求嵌入式Linux15NOTEREF_Ref477004491\f\hError!Bookmarknotdefined.500KB4MBWindowsCE51.3MB4MB表1:比较WindowsCE和嵌入式Linux在这个比较中,“中断延迟”是指从中断发生到系统响应中断的时间。此外,两种系统都使用能支持全部网络功能的最小内核。我对内核大小的差别并不感到惊讶,使我惊讶的是刚刚发布的WindowsCE3.0在实时性方面明显表现的更好。全球市场快览当然,这一切都是为了创造一些有趣的和有用的东西。在本节中我们将看到两个商用设备和一个研究设备,都是基于嵌入式Linux系统的。光学遥测系统是本章讨论的三个系统中体积最大,使用范围最模糊不清的一个。它拥有一个810MB的硬盘,大容量内存并且重达48镑,光学遥测系统有四个串行端口,一个以太网接口,两个65Kb/s的同步接口和60个输入/输出端口用来控制和发送报警信号。这个系统是嵌入式Linux在高端应用的一个很好的例子,它能够支持多种硬件和通信方式。NETtel系列网络路由器是一种体积比OTS小很多的基于Linux的设备。使用一个90MHz的ColdFire处理器运行uCLinux的NETtel系列路由器支持多达2个串行端口,2个以太网端口,1个PCI插槽,以及2个USB端口的各种配置并使用LED显示状态信息。该产品只需要1MB的闪存和4MB的内存就能启动。ColdFire处理器是没有MMU的;因此,该系统不使用虚拟存储寻址。该产品的创作者完全意想不到的是,作为一个有趣的例子它已经向人们展示了如何使用的LED显示驱动A/D转换器并且将路由器变成了MP3播放器。他绝对是个天才!康柏Itsy的体积比NETtel路由器小得多,但功能却强大得多。只有一张信用卡大小,大约有一节9伏电池那么厚,Itsy使用一枚30-200MHz的StrongArmSA–1100处理器并且拥有32MB的内存和32MB的FlashROM。它还包括一个串口,USB和IrDA端口与外部世界沟通。Itsy一个主要的研究方向是降低能耗,最新的型号已经可以使用USB端口对内部的电池进行充电。当然这一切都是运行在嵌入式Linux上的。以v2.0.30版内核为基础,研究人员又增加了新的硬件驱动程序和一个专门的闪存文件系统。此外还在内核里添加特殊的存储和电源管理功能,这是开源操作系统办不到的。Itsy目前只是一个研究项目,并且在可预见的时间内也不可能上市。虽然如此,我仍然希望这会成为不远的将来康柏公司推出的新产品的基础。这仅仅是嵌入式Linux设备的冰山一角。看来,它将称为上一个新的热门话题,比过去的更加有趣和独特。结论总的来说,我认为嵌入式Linux的前途是光明的。能够运行于多种不同的处理器,不需要MMU和极低的成本是重要的因素。此外,其受欢迎程度似乎是迅速上升,并且众多开发商都在迅速积累经验。当然每朵玫瑰得周围都布满荆棘。嵌入式Linux的市场是非常分散的,比起其他操作系统,它需要花费更多的精力去寻找最适合你设计的配置。32位微处理器和极小的体积地需求对一些嵌入式设备来说还是太大了。虽然嵌入式Linux似乎在适应设备的数量方面打得赢了WindowsCE,但这两者之间是有很大的重叠的。嵌入式系统市场在过去几年里成爆炸式增长,Linux无疑是这个市场的核心。看着故事慢慢展开是件很有意思的事情。AnOverviewofEmbeddedLinuxAbstract InthispaperIwilldiscussthecurrentstateofembeddedLinux.I’lloutlinewhatLinuxisandwhatcharacteristicsmakeanembeddedLinuxsystemdifferentfromadesktopsystem.Iwillthendiscussdetailsinsixkeyareas:ConfigurabilityRealtimeperformanceGraphicaluserinterfacesDevelopmenttoolsupportEconomicconsiderationsTechnicalsupportoptionsFollowingthatIwillcomparetherealtimeperformance,OSimagesize,andRAMrequirementsofembeddedLinuxwiththatofWindowsCE.I’llthendiscusssomeretaildevicesbasedonembeddedLinuxandconcludewithsomegeneralobservationsonembeddedLinux.IntroUnlessyou’vebeenlivingunderarockforthelastfewyears,you’venodoubtheardofLinux.ToutedastheopensourcecompetitortoMicrosoft’sWindowsNT,ithasbeenmuchhypeanddiscussioninboththesoftwaredevelopmentandsystemadministrationcommunities,aswellasmainstreamnon-technicalnewsmedia.Whenfirstintroduced,LinuxwasspecificallytargetedtodesktopPCsrunninganIntel80x86orcompatiblemicroprocessor.LinusTorvalds,theinventorofLinux,wasquotedassaying“LinuxwillneverrunonanythingbutaPCwithanIDEharddisksincethatisallthatIhave”.Lookingbackfromthestateofthingshereinthe21stcentury,thequoteisquitehumorous.TodayLinuxhasbeenportedtomanydifferentmicroprocessorsandrunsonplatformsthatdon’tincludeanyharddiskatall.Thesedevicesarenotevengeneralpurposecomputersystemsandincludethingssuchasnetworkrouters,heartmonitors,anddatacollectionunitsfortrackingtornadoes.Itisthesetypeofsystemsthathavecollectivelycometobelabeledas“EmbeddedLinux”.InthenextsectionI’lllookatwhatdistinguishesanembeddedLinuxsystemfromitsdesktopcousins.IwillthendiscussthefeaturesofembeddedLinuxinsixareas:configurability,realtimeperformance,GUIs,developmenttoolsupport,economicconsiderations,andtechnicalsupportoptions.IwillthencomparethesizeandrealtimecharacteristicsofanembeddedLinuxkernelwiththatofasimilarlyconfiguredWindowsCEkernel.IwillthendiscussthreeinterestingdevicesbasedonembeddedLinux:anopticaltelemetrysystem,theNetTelrouter,andtheIBMhandheldcomputerresearchproject“itsy”.I’llthenwrapupwithsomegeneralobservationsontheusefulnessandfutureofembeddedLinux.WhatmakesLinux‘embedded’?SofarinthispaperI’veusedtheterm“embeddedLinux”,butIhaven’treallydefinedwhatitmeans.Ifasystemisbootedfrommediaotherthanaharddiskdoesthatmakeitanembeddedsystem?Areallsystemsbootedfromharddisksnotconsideredanembeddedsystem?Thissectionwilllayoutfivedistinguishingpropertiesofanembeddedsystemthatanswersthesetypeofquestions.NotethatnoneofthesepropertiesarespecifictoLinux,butaregeneralcharacteristicsofallembeddedsystems.Historically,thequalificationsofembeddedsystemshavebeenalarge,controversialgrayarea.Manyaheateddiscussionhasinvolvedwhetherornotagivensystemis“embedded”–especiallyatpartieswithfreealcoholandahighnumberofgeekattendees.ThepropertiesIwilldescribeshortlywillcertainlynotsatisfyeveryone.Theyaregeneralrulesofthumb,andareneithernecessarynorsufficienttounambiguouslydistinguishallembeddedsystems.Thefivepropertiesthataregenerallyfoundinanembeddedsystemare:DisklessmediaforbootingandstorageLackofBIOSFootprintandruntimememoryrestrictionsMemorymanagementDedicationtoasmallnumberoftasksBootstrappingisonethefirstareasthathastobeaddressedwhenyouarefirstgettinganembeddedsystemupandrunning.Whathappensfirstwhenthehardwareispoweredup?Usersanddeveloperswhohaveonlydealtwithdesktopcomputersystemsrarely,ifever,havetothinkaboutthistopicbutitisoftheutmostimportanceinanembeddedsystem.Mostembeddedsystemsbootfromsometypeofdisklessmedia.ThemediacanbesomethinglikeFlashmemory,whichisread/write,orreadonlymemorysuchasanEEPROM.Alternatively,thedevicemaynotbootfrominternalmediaatall,butinsteaddownloadtheoperatingsystemimageoveranetworkwhenitispoweredup.RAMcanbeusedtostoredatawhilethesystemisrunning,butapersistent,non-volatilemediasuchasFlashneedstobeavailabletostoredatawhilethesystemispoweredoff.Thereasonthatembeddedsystemstypicallydon’tusediskbasedmediasuchasaharddriveisformostlyforpowerconsumptionandspeedreasons.HarddisksconsumealotmorewattsthatarerequiredtodriveFlashmemoryandaresignificantlyslower.Economically,harddiskscertainlybeatFlashinacostperbytecomparisonbutembeddedsystemsrarelyneedsthemulti-gigabytestorageoftoday’sharddrivesandafewhundredkilobytesofFlashisamuchbettersolution.TheBasicInput/OutputSystem(BIOS)ofaPCisasignificantpieceofsoftwarethatgoescompletelyunnoticedbymostpeople.Itsjobinlifeistoinitializethebuilt-inhardwareinthePCandprovideprimitiveoperationsforcommunicatingwiththathardware.AtypicaldesktopOS,includingLinux,isbuiltontopoftheBIOSandtakesfulladvantageofit.Inanembeddedsystemyoudon’thavetheluxuryofBIOSandyoumustmanuallyinitializeyourhardwaretoaworkablestatebeforetheOSkernelstartsrunning.Thisisn’tasbigaproblemasitseems.VeryfewembeddedhardwareplatformsareascomplexasthemotherboardarchitectureofatypicalPCandtheyareusuallymucheasiertoconfigure.Manytimesthemanufacturerofthehardwareprovidessamplecodethatquicklyisadaptedtogetthesystemupandrunning.Aswementionedearlier,embeddedsystemsdon’tneedthehugeamountsofmemoryandstoragethatispresentonmostdesktop.SomeembeddedsystemsrunwithonlyafewhundredbytesofRAMandROM,andmostdon’tutilizemorethanafewmegabytes.Thisisafarcryfromtheseeminglyinfiniteresourcesofdesktopsystems,andisoneofthebiggeststumblingblocksfordesktopprogrammerstransitioningtoembeddedsystems.Memorymanagementisanotherbigareathatdistinguishesanembeddedsystem.Sincestoragerequirementsaretight,there’snoplacefortheswapfileusuallyrequiredbyavirtualmemorysystem.Additionally,embeddedsystemsrunonavarietyofmicroprocessors,someofwhichdonothavethememorymanagementunitnecessarytoimplementvirtualmemory.Asasidenote,itisinterestingtonotethatembeddedLinuxmeetsboththeserequirements.AnyLinuxsystemcaneliminatetheswapfilerequirementbysettingthesizetozerowhentheoperatingsystemimageisbuilt.Additionally,LinuxhasbeenmodifiedsothatitdoesnotrequireanMMU.uCLinuxrunsonavariety32-bitmicroprocessorsthatdonothaveanMMUanduseonlyphysicalmemoryaddressing.Finally,anembeddedsystemtypicallyistailoredtoperformadedicatedseriesoftasks.Theymaynothaveanyuserinterfaceotherthanafewindicatorlights.Theusercannotinstallandrunanycustomsoftwareotherthanthatwhichthesystemwasoriginallydesignedtorun.Thisisindirectcontrasttoadesktopcomputersystemwhereusersroutinelyinstallandruncustomsoftwarepackagesandcanaccomplishtasksneverconsideredbythesystemdesigners.Conspicuouslymissingfromthislistisrealtimeperformance.Althoughitisahottopicintheworldofembeddedsystemsitisnotageneralrequirement.Manyembeddedsystemshavenohardorsoftreal-timerequirementsandareperfectlysatisfiedwithgeneral,nondeterministicperformanceoftheOS.EmbeddedLinuxdoeshavetheoptionofusingareal-timesubsystem,aswe’lldiscussinalatersection.DetailsofembeddedLinuxInthenextfewsectionswewilllookatthedetailsofembeddedLinuxinsixspecificareas.Theareaswerechosenspecificallytotrytocovertheend-to-endusefulnessofLinuxinanembeddedsystem.Thegoalwastoaddressissuesthatwouldcomeupinallstagesofthesystemlifecycle,fromspecificationtomaintenance.Someoftheissues,suchaseconomicsandtechnicalsupport,aredecidedlynon-technicalbutnonethelessimportantintheoveralldevelopmentofasystem.ConfigurabilityBeingabletotailortheOSimagetotheparticularneedsofadeviceisaveryimportantfeatureinembeddedsystems.Youdon’twanttoincludemegabytesofcodethatforGUIsupportifyoursystemdoesn’trequireit.Whittlingthekerneldowntothesmallestpossiblesizethathasallthesupportyouneedisoneofthefirsttasksadesignerfacesafterthehardwareisupandrunning,anditcanbeaverydifficultone.ConfiguringanembeddedLinuxsystemisnotmuchdifferentfromconfiguringadesktopLinuxsystem.TheOSbuildprocessusesasimpletextfiletoselectwhichcomponentstoinclude.Theinstallablemodulesupportisthenusedtoloadtheselectedsubsystemsatboottime.Itisalsopossibletodynamicallyloadandunloadmodulesduringruntime,whichallowsyoutotailorthesystemtouseoptionalcomponentsonlywhennecessary.Thisconfigurationabilityisveryusefulinanembeddedsystem.Notonlydoesitallowyoutodynamicallyaddandremovesupportforoptionalpieces,italsoallowsyoutodopartialupdates.Bysplittingyoursystemintoseveralindividuallyloadablemodulesinsteadofasinglemonolithicone,youcanupgradeoraddanewmodulewithouthavingtochangetheentireimage.Thisisespeciallyusefulifyourdeviceisconnectedtoanetworkthatcanbeusedforremoteupdates.OnedrawbackofLinuxinstallablemodulesisthepotentialforstabilityproblems.SincemodulesaredynamicallyintegratedintotheLinuxkernel,theyhavefullaccesstotheOSanddonotreapthebenefitsofmemoryprotection.Thisislessofaproblemondeviceswhosehardwaredoesn’thaveanMMU.Also,sincethesystemisinaclosedlooptheusercan’tinstallnewmodulesattheirleisureandit’seasiertomaintaintheintegrityofthesystem.RealTimePerformanceTheterm“realtime”isbandiedaboutalot,soI’lldefinewhatitimpliesinthispaperbeforeIdescribetherealtimefeaturesofLinux.By“realtime”Imeantheabilitytoputdeterministicboundsonthetimetheelapsesbetweenaninterruptoccurringandthecorrespondinginterruptserviceroutinetoexecute.Otheritems,suchascontextswitchtimeandsystemclockgranularity,arerelated,butnotcentral,issues.Ingeneral,realtimeperformancecanbegroupedintotwobroadcategories:hardrealtimeandsoftrealtime.Hardrealtimemeansthatalateanswerisawronganswer.Ifthesystemdoesnotrespondtoaninterruptwithinafixed,predictableamountoftimedisastrousthingscanhappen.Softrealtime,ontheotherhand,doesn’thaveanydireconsequencesassociatedwithalateanswerbutreliesondeterministictimingofinterrupthandlerstoachievetopperformance.It’simportanttorememberthatalthoughtheactualperformancenumbersareimportant,realtimecharacteristicsareactuallymoreaboutdeterministicbehaviorthanrawspeed.ThebareLinuxkernelisnotrealtime.Noguaranteesareprovidedfordeterministicinterrupthandlingtimesandthenumberscanvarygreatlydependingonwhatthesystemloadiswhentheinterruptoccurs.RTLinuxwasdesignedtoaddhardrealtimecharacteristicstotheLinuxkernel.FirstreleasedinFebruary1997byMichaelBarabanovandVictorYodaikenoftheNewMexicoInstituteofTechnology,RTLinuxisnotaseparate,modifiedversionoftheLinuxkernel.Afterconsideringthispossibility,itwasdeemedtobeamaintenanceandcompatibilitynightmareNOTEREF_Ref477406125\f\h2.InsteadRTLinuxwasdesignedasasmall,independentreal-timekernelandasetofreplacementsfortheLinuxkernelroutinesthatenableanddisableinterrupts.RTLinuxalsosuppliesanAPIthatallowstheusertocreatetasksinthereal-timekernelandcommunicatewithprocessesintheLinuxkernelviaFIFOsorsharedmemory.Figuregraphicallydepictshowthesystemworks.WhenRTLinuxisincludedandtheLinuxkernelcallstheCLIorSTItodisableenableinterrupts,respectively,therequestgetsroutedtoanRTLinuxroutinethatremembersthecurrentLinuxinterruptstate.WheninterruptsoccurtheyarealwayshandledbytheRTLinuxkernelandarethenpassedontotheLinuxkerneliftheywerenothandledandinterruptsareenabled.ThisallowsRTLinuxtoalwaysreacttoeveryinterruptwithouttheLinuxkernelgettingintheway.ThisalsogetsaroundtheproblemoftheLinuxkernelnotbeingabletohandlenestedinterruptssinceRTLinuxalwaysseestheinterruptfirstandcanensurethatthekernelisneverreentered.RTLinuxisnottheonlyplayerinthisarena.RealTimeApplicationInterface(RTAI)takesasimilarapproachinextendingtheexistingLinuxkernelwithrealtimefeatures.Theyhaveafewfeatures,suchasperiodictimers,thatarenotpresentinRTLinuxbutdonothavethewidepopularityofRTLinux.Ifyoubelievetherumors,thesetwoproductswillmergeinsomefutureversion.TherearesomeproblemswiththefeaturespresentinbothRTLinuxandRTAI.Firstofallitisclearthatthefeatureswereboltedonasanafterthoughtinsteadofbeinganintrinsicpartofthedesign.AlthoughRTLinuxdoesanadmirablejobofaccomplishingit’sgoalsittendstobeusefulincertainclassesofapplicationssuchasdataacquisitionratherthenbeingmoregenerallyapplicable.AnotherissueisthatRTLinuxdoesnothingtoaddresstheproblemofpriorityinversion,whichcanbethecauseofseriousbugsthatarehardtoreproduceandtrackdown.
Real-TimeFIFOsInterruptControlHardwareReal-TimeKernelReal-TimeTasksLinuxLinuxProcesses Figure1:BlockLeveldesignofRTLinuxGraphicalUserInterfacesAsthedesktopcomputerhascometorelyonGUIsratherthantextbasedinterfaces,manyembeddedsystemshavealsobeenadoptingthem.AGUIinanembeddedsystemmaycomeinmanydifferentflavorsincludingsmallresolutionLCDs,anoptionalVGAoutputport,orafullyintegratedscreenwitheitherverticalorhorizontalorientation.AlthoughsimilarinconcepttodesktopGUIs,embeddedsystemshavesomerequirements,suchasthekernelfootprint,thatareuniquelytheirown.LinuxhasalwayssufferedfromafragmentedmarketintheareaofGUIs.AlthoughtheX-Windowtheclosestthingtoastandard,therearemanypopularcompetitorsincludingemulatorsfortheWin32APIandthelookandfeelofWindows95.Embeddedsystemsarecertainlyfreetouseanyofthesesystemsthataretargetedforthedesktop,butthereareseveralproductsthatspecificallytargettheuniqueneedsofembeddedsystems.LineoSystemsisoneproviderofaversionofembeddedLinuxwithenhancementsandcommercialsupport.OneoftheoptionsthattheyprovideisacustomtoolkitforbuildinganembeddedGUI.MicrowindowsandNanoGUIaretwopublic,opensourceprojectsthatweremergedtoprovideafreelibraryforemulatingtheWin32APIforuseonLinuxsystems.Therearecertainlyotheroptions–thesearejustthetipoftheiceberg.Thereisanother,separateroutethatmanyembeddeddeviceshavechosentotakewhenprovidingaGUI.SincenetworkandInternetconnectivityaresocommonthesedays,manysystemschoosetoincludeawebserverandofferuptheiruserinterfaceviaHTML.Thisallowstheusertoaccessthedeviceremotelyfromanylocationwithanyplatformthathasawebbrowser.Italsoplacesfewerrequirementsonthesizeandshapeofthedevicesinceitdoesn’thavetoincludeadisplay.DevelopmentToolSupportEmbeddedLinuxdevelopersgetthebestofbothworldswhenitcomestodevelopmenttools.NotonlydotheygettoutilizethesameGNUtoolchainastheirdesktopbrethren;theycanutilizethesamehardwaredebuggingtoolstheyhavealwaysused.Youdon’tneedtochangeyouroscilloscopeorlogicanalyzerjustbecauseyouswitchovertoembeddedLinux.TheGNUcollectionofcompilers,debuggers,assemblersandlinkersrepresentawidearrayofmicroprocessorsupportandoneofthebestproofofconceptsthattheopensourcecommunityhas.Notonlyaretheytime-testedandfreelyavailable,buttheavailabilityofsourcecodemeansthatifyouwanttoporttoanewprocessoryouhavethefreedomtoimplementthecompilersupportifitisnotalreadyavailable.Veryfewotherembeddedoperatingsystemscanmatchthisclaim,andevenfewerdosowithlittletonoupfrontcashrequirementsotherthandevelopmenttime.Thereareafewsnags.TheGNUdebuggersaremostlytextbased,withvaryingsupportforframeworksrunningontopofthemforsomeplatforms.Also,manypeoplehavefoundtheGNUkerneldebuggertobebuggyandhardtouse,whichisespeciallyfrustratingforembeddedsystemdevelopmentwheredevicedriversareverycommon.AnotherdifferenceforusersofuCLinuxisaspecialexecutablefileformat.Sincethereisnovirtualmemory,theexecutablecannothaverelocationsandallbranchesaredonewithpositionindependentcode(PIC).Thisrequiresaspeciallinkerandmodificationstothedebuggingtoolsiftheprocessoryouareusingisnotalreadysupported.EconomicConsiderationsOneofthebiggestattractionsofLinuxingeneralisthatitisfree.Althoughyoucanbuyversionsfrommanycompaniesthathavemoreuser-friendlyinstallsoradditionalfeatures,thecoreLinuxcodeisfreefordownloadingandissubjecttothegenerousGNUredistributionlicense.ThisistrueforbothdesktopandembeddedLinux,buttheembeddedspacedoeshavesomeadditionalissuestoconsider.ItispossibletoincurroyaltyfeesfordistributingembeddedLinuxwithyourdevice,dependingonyourLinuxsupplier.Lineo’sEmbedixhasroyaltiesthatvarywiththeOSfeaturesandadditionalpackagesincludedsuchastheirGUItoolkitandwebbrowser.Also,devicedriversforspecialhardwarethatarenotincludedintheregularLinuxdistributioncanbepurchasedfrommanydifferentcompaniesandhaveassociatedroyalties.Althoughyoucouldcertainlywritethedriversyourself,availableresourcesandtimetomarketcanalwaysinfluenceyour“buildorbuy”decisiontogowiththefasteroption.Consideringthesefactors,yourembeddedLinuxproductmaynotberoyaltyfreeafterall.AnotherconcernthathassparkedalotofdiscussionintheLinuxcommunityrecently,isthefactthatRTLinuxisbasedonapatent.AlthoughtheRTLinuxcreatorshavestatedthatnoroyaltiesbase
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论