嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述第1章嵌入式系统概述本章目标本章主要介绍嵌入式系统和嵌入式操作系统的概况,述说嵌入式Linux的发展历史和开发环境,概括说明嵌入式Linux系统开发的特性。读完本章内容,读者可以对嵌入式Linux系统有整体的认识,了解嵌入式Linux开发的要点。嵌入式系统定义嵌入式操作系统介绍嵌入式Linux操作系统嵌入式Linux开发环境嵌入式Linux系统开发要点嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述1.1嵌入式系统的定义与特征1.嵌入式系统的定义嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统。嵌入式系统与通用计算机系统的本质区别在于系统应用不同,嵌入式系统是将一个计算机系统嵌入到对象系统中。这个对象可能是庞大的机器嵌入式linux 培训,也可能是精巧的手持设备,用户并不关心这个计算机系统的存在。嵌入式系统通常包含嵌入式微处理器、外围硬件设备、嵌入式操作系统和应用程序4个部份。
嵌入式领域早已有丰富的软硬件资源可以选择,囊括了通讯、网络、工业控制、消费电子、汽车电子等各类行业。2.嵌入式系统的特征嵌入式计算机系统与通用计算机系统相比具有以下特性。(1)嵌入式系统是面向特定系统应用的。嵌入式处理器大多数是专门为特定应用设计的,具有低帧率、体积小、集成度高等特性,通常是包含各类外围设备插口的片上系统。(2)嵌入式系统涉及计算机技术、微电子技术、电子技术、通信和软件等各行各业。它是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。(3)嵌入式系统的硬件和软件都必须具备高度可定制性。只有这样能够适应嵌入式系统应用的须要,在产品价位性能等方面具备竞争力。(4)嵌入式系统的生命周期相当长。当嵌入式系统应用到产品之后,还可以进行软件升级,它的生命周期与产品的生命周期几乎一样长。(5)嵌入式系统不具备本地系统开发能力,一般须要有一套专门的开发工具和环境。在计算机后PC技术时代,嵌入式系统将拥有最大的市场。计算机和网路早已全面渗透到日常生活的每一个角落。各类各样的新型嵌入式系统设备在应用数目上早已远远超过通用计算机,任何一个普通人可能拥有从大到小的各类使用嵌入式技术的电子产品,小到MP3、PDA等微型数字化产品,大到网路电器、智能电器、车载电子设备。
而在工业和服务领域中,使用嵌入式技术的数字车床、智能工具、工业机器人、服务机器人也将逐步改变传统的工业和服务形式。日本知名的未来学家尼葛洛庞帝在1999年访韩时曾预言,4~5年后嵌入式系统将是继PC和Internet以后最伟大的发明。这个预言早已成为现实,现今的嵌入式系统正处于高速发展阶段。嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述1.2常见的嵌入式操作系统嵌入式操作系统的一个重要特点是实时性。所谓实时性,就是在确定的时间范围内响应某个风波的特点。操作系统的实时性在个别领域是至关重要的,例如工业控制、航空航天等领域。想象客机正在空中飞行,假如嵌入式系统不能及时响应飞行员的控制指令,这么极有可能造成失事车祸。有些嵌入式系统应用并不须要绝对的实时性,例如PDA播放音乐,某些音频数据遗失并不影响疗效。这可以使用软实时的概念来评判。据调查,目前全世界的嵌入式操作系统早已有两百多种。从20世纪80年代开始,出现了一些商用嵌入式操作系统,它们大部份都是为专有系统而开发的。随着嵌入式领域的发展,各类各样嵌入式操作系统陆续问世。有许多商业的嵌入式操作系统,也有大量开放源码的嵌入式操作系统。
其中知名的嵌入式操作系统有:mC/OS、VxWorks、Neculeus、Linux和WindowsCE等。下边介绍一些主流的嵌入式操作系统。(1)Linux。在所有的操作系统中,Linux是一个发展最快、应用最为广泛的操作系统。Linux本身的种种特点使其成为嵌入式开发中的首选。在步入市场的头三年中,嵌入式Linux设计通过广泛应用获得了巨大的成功。随着嵌入式Linux的成熟,其提供更小的规格和更多类型的处理器支持,并从初期的试用阶段迈向到嵌入式的主流,它捉住了电子消费类设备的开发者们的想象力。图1.1所示是业内人士对国外Linux软件市场的预测。按照IDC的报告,Linux早已成为全球第二大操作系统。预计在服务器市场上,Linux在未来几年内将以每年25%的速率下降,中国的Linux市场更是保持40%左右的下降速率。而在Linux操作系统方面,IDC对中国在2001~2006年的市场预测发觉,其市场占有率从2001年的4.47%平稳地上升到2006年的26.77%。嵌入式Linux版本还有多种变体。诸如:RTLinux通过改建内核实现了实时的Linux;RTAI、Kurt和Linux/RK也提供了实时能力;还有mCLinux除去了Linux的MMU(显存管理单元),才能支持没有MMU的处理器等。
560%450%40%330%2200%220072008销售额(万元)0.991.482.112.933.96下降率(%)47.3%49.4%42.6%38.5%35.1%图1.12004~2008年国外Linux软件市场总额预测(2)mC/OS。嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述mC/OS是一个典型的实时操作系统。该系统从1992年开始发展,目前流行的是第2个版本,即mC/OSⅡ。它的特征是:公开源代码,代码结构清晰,注释简略,组织有条理,可移植性好;可剪裁,可固化;占据式内核,最多可以管理60个任务。自从复旦学院邵贝贝院长将JeanJ.Labrosse的《μC/OS-Ⅱ:theRealTimeKernel》翻译后,在国外掀起mC/OSⅡ的风潮,非常是在教育研究领域。该系统短小精悍,是研究和学习实时操作系统的首选。(3)WindowsCE。WindowsCE是谷歌公司的产品,它是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。WindowsCE采用模块化设计,并容许它对于从掌上笔记本到专用的工控电子设备进行订制。
操作系统的基本内核须要起码200KB的ROM。从SEGA的DreamCast游戏机到现今大部份的高价掌上笔记本都采用了WindowsCE。(4)VxWorks。VxWorks是WindRiver公司专门为实时嵌入式系统设计开发的操作系统软件,为程序员提供了高效的实时任务调度、中断管理,实时的系统资源以及实时的任务间通讯。应用程序员可以将尽可能多的精力放到应用程序本身,而毋须再去关心系统资源的管理。该系统主要应用在单板机、数据网路(以太网交换机、路由器)和通讯方面等多方面。其核心功能主要有以下几个。n微内核wind。n任务间通讯机制。n网路支持。n文件系统和I/O管理。nPOSIX标准实时扩充。nC++以及其他标准支持。这种核心功能可以与WindRiver系统的其他附件和Tornado合作伙伴的产品结合在一起使用。谁都不能够认这是一个十分优秀的实时系统,但其高昂的价钱使不少厂商望而兴叹。(5)QNX。这也是一款实时操作系统,由美国QNX软件系统有限公司开发。广泛应用于手动化、控制、机器人科学、电信、数据通讯、航空航天、计算机网路系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务关键型应用领域。
20世纪90年代后期,QNX系统在高速下降的因特网终端设备、信息电器及掌上笔记本等领域也得到了广泛应用。QNX的体系结构决定了它具有特别好的伸缩性,用户可以把应用程序代码和QNX内核直接编译在一起,使之为简单的嵌入式应用生成一个单一的多线程映像。它也是世界上第一个遵守POSIX1003.1标准从零设计的微内核,因而具有特别好的可移植性。嵌入式操作系统的选择是前期设计过程的一项重要工作,这将影响到工程后期的发布以及软件的维护。不管选用哪些样的系统,都应当考虑操作系统对硬件的支持,嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述假如选择的系统不支持将来要使用的硬件平台,那这个系统是不合适的;其次要考虑的是开发调试用的工具,非常是对于开支敏感和技术水平不强的企业来说,开发工具常常在开发过程中起决定性作用;第三要考虑的问题是该系统能够满足应用需求。假如一个操作系统提供下来的API极少,这么无论这个系统有多么稳定,应用层很难进行二次开发,这似乎也不是开发人员希望听到的。由此可见,选择一款既能满足应用需求,性价比又可达到最佳的实时操作系统,对开发工作的顺利举办意义十分重大。
1.3嵌入式Linux的发展历史所谓嵌入式Linux是指Linux在嵌入式系统中的应用,而不是哪些嵌入式功能。实际上,嵌入式Linux和Linux是同一件事。我们了解一下Linux的发展历史。Linux起源于1991年,由荷兰的LinusTorvalds开发,随即依照GPL原则发布。Linux1.0即将发行于1994年3月,仅支持386的单处理器系统。Linux1.2发行于1995年3月,它是第一个包含多平台(Alpha、Sparc、Mips等)支持的官方版本。Linux2.0发行于1996年6月,包含好多新的平台支持。最重要的是,它是第一个支持SMP(对称多处理器)体系的内核版本。Linux2.2于1999年1月发布,它带来了SMP系统上性能的极大提高,同时支持更多的硬件。Linux2.4于2001年1月发布,它进一步提高了SMP系统的扩充性,同时它也集成了好多用于支持桌面系统的特点:USB、PC卡(PCMCIA)的支持,外置的即插即用等。Linux2.6于2003年12月发布,它的多种内核机制都有了重大改进,无论对大系统还是小系统(PDA等)的支持都有很大提升。最新的Linux内核版本可以从官方站点获取。
是一种类UNIX操作系统。从绝对意义上讲,Linux是LinusTorvalds维护的内核。现今的Linux操作系统早已包括内核和大量应用程序,这种软件大部份来始于GNU软件工程。因而,Linux又叫作GNU/Linux。目前Linux操作系统的发行版早已有好多,比如:RedhatLinux、SuseLinux、TurboLinux等台式机或则服务器版本,还有各类嵌入式Linux版本。不同的Linux版本之间总会有些差别。鉴于UNIX技术历史的教训,LSB(LinuxStandardBase)为Linux系统制订了规范。LSB规范定义了几种模块,但是为应用程序定义系统插口和基本配置,为大量的应用程序提供了统一的行业标准。从以下站点可以获取LSB的文档。(EmbeddedLinuxConsortium,嵌入式Linux联盟)是一个非营利性、中立嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述的行业商会,它的目标是在嵌入式应用和设备估算市场做Linux的改进、推广和标准化工作。联盟成员贡献会费而且参与管理、推广、实现和平台规范工作组的维护linux多线程编程,筹谋不断下降的市场机遇。
ELC成员为了API的互用性积极推川一套平台标准,去除分割而且发布愈发具有竞争力的商业方案。(OpenSourceDevelopmentLabs)支持围绕Linux开发和指导的各类活动。它为OSDL商会免费提供硬件资源。OSDL发起了联通Linux(CarrierGradeLinux)和数据中心Linux(DataCenterLinux)工作组。这种工作组包含OSDL成员和有兴趣的个人,她们旨在于创建特性列表和规范,而且参与开源工程为联通和数据中心进一步开发Linux。OSDL还积极参与内核测试,提供了开放的测试环境(ScalableTestPlatform),而且贡献给开发状态的内核测试。(ConsumerElectronicsLinuxForum,消费电子Linux峰会)是加洲的一个非赢利性公司,它旨在于把Linux改进成消费电子设备的开放平台。越来越多的个人、社团和公司早已和正在参与Linux社区的工作,她们为Linux系统开发、测试以及应用做了大量贡献。这促使嵌入式Linux系统成为标准化的操作系统,功能日趋健全,应用愈加广泛。1.4初步认识嵌入式Linux开发环境通用计算机可以直接安装发行版的Linux操作系统,使用编辑器、编译器等工具为本机开发软件,甚至可以完成整个Linux系统的升级。
嵌入式系统的硬件通常有很大的局限性开发嵌入式linux系统,或则处理器频度很低开发嵌入式linux系统,或则储存空间很小,或则没有按键、鼠标设备。这样的硬件平台难以胜任(或则不易于)庞大的Linux系统开发任务。为此,开发者提出了交叉开发环境模型。交叉开发环境是由开发主机和目标板两套计算机系统构成的。目标板Linux软件是在开发主机上编辑、编译,之后加载到目标板上运行的。为了便捷Linux内核和应用程序软件的开发,还要利用各类联接手段。第4章将详尽介绍怎么完善交叉开发环境。第5章将详尽介绍交叉编译工具链的构建。Linux是开放源码的软件工程,它的大量应用程序也来始于GNU软件工程。为此,完全可以自己动手制做一套完整的嵌入式Linux系统和开发工具。并且,庞大的系统软件开发和测试将耗费大量人工时,难以预想的BUG可能严重阻滞项目进度。大量的开源软件和商业的Linux软件共同出现在Linux操作系统上,半导体公司、Linux操作系统公司、第三方软件公司等早已产生庞大的Linux生态系统。任何一家公司都不可能对Linux系统做全面的维护和技术支持。嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述嵌入式Linux系统的开发工具绝大多数是命令行形式的,这促使学习Linux开发比Windows开发难度更大。
商业公司在嵌入式Linux产品开发的时侯,希望有更便捷、更快捷的开发工具可以使用。为此,嵌入式Linux集成开发环境具有市场需求。Eclipse是开放、跨平台、高度可配置的集成开发环境,它早已被诸多嵌入式操作系统厂商订制成自己的集成开发环境。诸如:MontaVista公司的DevRocket、TimeSys公司的TimeStorm、WindRiver公司的Workbench。MontaVistaDevRocket集成开发环境如图1.2所示。图1.2MontaVistaDevRocket集成开发环境这种集成开发环境不但才能支持应用程序开发和调试,并且专门提供了内核、文件系统的工程。另外可以集成各类测试工具和版本控制等功能,大大便捷了嵌入式Linux开发。1.5嵌入式Linux系统开发要点嵌入式Linux开发就是建立一个Linux系统,这须要熟悉Linux系统组成部份,熟悉Linux开发工具,还要熟悉Linux编程。嵌入式Linux系统包含Bootloader(引导程序)、内核和文件系统3部份。对于嵌入式Linux系统来说,这3个部份是必不可少的。本书将详尽剖析这3个部份的相关软件开发。
其实,在启动一个嵌入式Linux项目之前,必须仔细考虑下边要点。(1)选择嵌入式Linux发行版。嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述商业的Linux发行版是作为产品开发维护的,经过严格的测试验证,而且可以得到厂家的技术支持。它为开发者提供了可靠的软件和完整的开发工具包。(2)熟悉开发环境和工具。交叉开发环境是嵌入式Linux开发的基本模型。Linux环境配置、GNU工具链、测试工具甚至集成开发环境都是开发嵌入式Linux开发的神器。(3)熟悉Linux内核。由于嵌入式Linux开发通常须要重新订制Linux内核,所以熟悉内核配置、编译和移植也很重要。(4)熟悉目标板引导方法。开发板的Bootloader负责硬件平台的最基本的初始化,而且具备引导Linux内核启动的功能。因为硬件平台是专门订制的,通常须要更改编译Bootloader。(5)熟悉Linux根文件系统。Linux离不开文件系统,程序和文件都储存在文件系统中。系统启动必需的程序和文件都必须置于根文件系统中。Linux内核命令行参数可以指定要挂接的根文件系统。(6)理解Linux显存模型。
Linux是保护模式的操作系统。内核和应用程序分别运行在完全分离的虚拟地址空间,化学地址必须映射到虚拟地址就能访问。只有理解Linux显存模型,能够最大程度地优化系统性能。(7)理解Linux调度机制和进程线程编程。Linux调度机制影响到任务的实时性,理混频度机制可以更好地运用任务优先级。进程和线程编程则是应用程序开发所必需的。推荐课程:嵌入式大学-嵌入式Linux常年就业班·招生简章:·课程内容:·项目实战:·出版教材:·实验设备:推荐课程:华清远见-嵌入式Linux短期高档培训班嵌入式大学—华清远见旗下品牌:《嵌入式Linux系统开发标准教程》——第1章、嵌入式系统概述·嵌入式Linux应用开发班:·嵌入式Linux系统开发班:·嵌入式Linux驱动开发班:嵌入式大学—华清远见旗下品牌: