您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 嵌入式智能家居外文翻译
嵌入式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包含了编译器,调试器,汇编程序和链接程序,能够支持各种各样的微处理器,是软件开源精神一个最好的证明。他
本文标题:嵌入式智能家居外文翻译
链接地址:https://www.777doc.com/doc-4047307 .html