江门见——培训http:.cn“黑色精典”系列之《Linux系统开发技术解读——基于ARM》1章概述本章目标本章主要介绍系统和操作系统的概况,述说Linux的发展历史和开发环境,概括说明Linux系统开发的特性。读完本章内容,可以对Linux系统有整体的认识,了解Linux开发的要点。系统定义操作系统介绍Linux操作系统Linux开发环境Linux系统开发要点佛山见——培训http:.cn1.1系统系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,适用于应用系统,对功能、可靠性、成本、体积、功耗等方面有特殊要求的估算。系统与通用估算的本质区别在于系统应用不同,系统是将一个估算嵌入到对象系统中。这个对象可能是庞大的,也可能是精巧的手持设备,用户并不关心这个估算的存在。系统通常包含微处理器、硬件设备、操作系统和应用程序4个部份。领域早已有丰富的软硬件可以选择,囊括了通讯、网络、工业控制、消费电子、等各类行业。估算与通用估算相比具有以下特性。(1)系统是面向特定系统应用的。处理器大多数是专门为特定应用设计的,具有低帧率、体积小、集成度高等特性,通常是包含各类设备插口的。
(2)系统涉及计算机技术、微电子技术、电子技术、通信和软件等各行各业。它是一个技术密金密集、高度分散、不断创新的知识集成系统。(3)系统的硬件和软件都必须具备高度可订制性。有这样能够适用系统应用的须要,在价钱性能等方面具备竞争力。(4)系统的生命周期相当长。当系统应用到之后,还可以进行软件升级,它的生命周期与的生命周期几乎一样长。(5)系统不具备开发能力,一般须要有一套专门的开发工具和环境。在计算机后PC技术,系统将拥有最大的市场。计算机和网路早已全面渗透到日常生活的每一个角落。各类各样的新型系统设备在应用数目上早已远远超过通用计算机,任何一个普通人可能拥有从大到小的各类使用技术的电子,小到MP3、PDA等微型数字化,大到网路电器、智能电器、车载电子设备。而在工业和服务领域中,使用技术的数字车床、智能工具、工业人、服务人也将逐步改变传统的工业和服务形式。日本知名的未来学家尼在1999年访时曾,4~5年后系统将是继PC和Internet以后最伟大的发明。这个早已成为现实,现今的系统正处于高速发展阶段。1.2操作系统操作系统的一个重要特点是实时性。
所谓实时性,就是在确定的时间围内响应某个的特点。操作系统的实时性在个别领域是的,例如工业控制、航空航天等领域。想象客机正在空中飞行,假如系统不能及时响应飞行员的控制指令,这么极有可能造成失事车祸。有些系统应用并不须要绝对的实时性,例如PDA音乐,个音频数据遗失并不影响疗效。这可以使用软实时的概念来评判。《Linux系统开发技术解读——基于ARM》——第1章、概述据,目前全世界的操作系统早已有两百多种。从20世纪80年始,出现了一些操作系统,它们大部份都是为专有系统而开发的。随着领域的发展,各类各样操作系统陆续问世。有许多商业的操作系统,也有大量开放源码的嵌入式操作系统。其中知名的操作系统有:C/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;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软件市场总额RTAI、Kurt和Linux/RK也提供了实时能力;还有CLinux除去了Linux的MMU(显存管理单元),才能支持没有MMU的处理器等。(2)C/OSC/OS是一个典型的实时操作系统。
该系统从1992年开始发展,目前流行的是第2个版本,即C/OSII。它的特征是:公开源代码,代码结构清晰,注释简略,组织有条理,可移植性好;可剪裁,可;占据式内核,最多可以管理60个任务。自从教授将JeanJ.Labrosse的《C/OS-Ⅱ:theRealTimeKernel》翻译后,在国外掀起C/OSII的风潮,特是在教育研究领域。该系统短小精悍,是研究和学习实时操作系统的首选。佛山见——培训http:.cn(3)WindowsCEWindowsCE是谷歌的,它是从整体上为有限的平台设计的多线程、完整优先权、多任务的操作系统。WindowsCE采用模块化设计,并容许它对于从掌上笔记本到的工控电子设备进行订制。操作系统的基本内核须要起码200KB的ROM。从SEGA的DreamCast机到现今大部份的高价掌上笔记本都采用了WindowsCE。随着操作系统领域渐趋激烈的竞争,谷歌不得不应付来自Linux等系统的冲击。谷歌在WindowsCE.Net4.2版中,将降低一项价仅3的精简版本WinCE.NetCore。
WinCE.NetCore具有基本的功能,包括实时OS(RealTimeOSKernel)、系统;IPv4、IPv6、WLAN、蓝牙等联网功能;WindowsMediaCodec;.Net开发框架以及SQLServer.ce。谷歌推出优价版本WinCE.Net,主要是看好语音、WLAN的线桥接器和个性化视听设备的成长潜力。(4)VxWorksVxWorks是WindRiver公司专门为实时系统设计开发的操作系统软件,为程序员提供了高效的实时任务调度、中断管理,实时的系统以及实时的任务间通讯。应用程序员可以将尽可能多的精力放到应用程序本身,而毋须再去关心系统的管理。该系统主要应用在单板机、数据网路(以太网交换机、路由器)和通讯方面等多方面。其功能主要有以下几个。微内核wind任务间通讯机制网路支持文件系统和I/O管理POSIX标准实时扩充C++以及其他标准支持这种功能可以与WindRiver系统的其他附件和Tornado合作伙伴的结合在一起使用。谁都不能够认这是一个十分优秀的实时系统,但其高昂的价钱使不少厂商望而兴叹。
(5)QNX这也是一款实时操作系统arm嵌入式linux系统开发技术详解,由QNX软件系统开发。广泛应用于手动化、控制、人科学、电信、数据通讯、航空航天、计算机网路系统、医疗仪器设备、交通运输、安全防卫系统、POS机、零售机等任务应用领域。20世纪90年代后期,QNX系统在高速下降的因特网终端设备、信息电器及掌上笔记本等领域也得到了广泛应用。QNX的体系结构决定了它具有特别好的伸缩性,用户可以把应用程序代码和QNX内核直接编译在一起,使之为简单的应用生成一个单一的多线程映像。它也是世界上第一个遵守POSIX1003.1标准从零设计的微内核,因而具有特别好的可移植性。操作系统的选择是前期设计过程的一项重要工作,这将影响到工程后期的发布以及软件的维护。不管选用哪些样的系统,都应当考虑操作系统对硬件的支持,假如选择的系统不支持将来要使用的硬件平台,那这个系统是不合适的;其次要考虑的是开发调试用的工具,特是对于开支敏感和技术水平不强的企业来说,开发工具常常在开发过程中起决定性作用;第三要考虑的问题是该系统能够满足应用需求。假如一个操作系统提供下来的API很《Linux系统开发技术解读——基于ARM》——第1章、概述少,这么无论这个系统有多么稳定,应用层很难进行二次开发,这或许也不是开发希望听到的。
由此可见,选择一款既能满足应用需求,性价比又可达到最佳的实时操作系统,对开发工作的顺利举办意义十分。1.3Linux历史所谓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内核版本可以从站点获取。Linux是一种类UNIX操作系统。从绝对意义上讲,Linux是LinusTorvalds维护的内核。现今的Linux操作系统早已包括内核和大量应用程序,这种软件大部份来始于GNU软件工程。为此,Linux又叫作GNU/Linux。目前Linux操作系统的版早已有好多arm嵌入式linux系统开发技术详解,比如:RedhatLinux、SuseLinux、TurboLinux等台式机或则服务器版本,还有各类Linux版本。不同的Linux版本之间总会有些差异。鉴于UNIX技术历史的教训,LSB(LinuxStandardBase)为Linux系统制订了规。LSB规定义了几种模块,但是为应用程序定义系统插口和基本配置,为大量的应用程序提供了统一的行业标准。从以下站点可以获取LSB的文档。ELC(EmbeddedLinuxConsortium,Linux)是一个非性的、中立的行业嵌入式linux论坛,它的目标是在应用和设备估算市场做Linux的改进、推广和标准化工作。
联盟成员贡献会费而且参与管理、推广、实现和平台规工作组的维护,筹谋不断下降的市场机遇。ELC成员为了API的互用性积极推川一套平台标准,去除分割而且发布愈发具有竞争佛山见——培训http:.cn力的商业方案。OSDL(OpenSourceDevelopmentLabs)支持Linux开发和指导的各类活动。它为OSDL提供硬件。OSDL发起了联通Linux(CarrierGradeLinux)和数据中心Linux(DataCenterLinux)工作组。这种工作组包含OSDL成员和有的个人,她们旨在于创建特性列表和规,但是参与开源工程为联通和数据中心进一步开发Linux。OSDL还积极参与内核测试,提供了开放的测试环境(ScalableTestPlatform),而且贡献给态的内核测试。CELF(ConsumerElectronicsLinuxForum,消费电子Linux)是加洲的一个非性公司,它旨在于把Linux改进成消费电子设备的开放平台。越来越多的个人、社团和公司早已和正在参与Linux社区的工作,她们为Linux系统开发、测试以及应用做了大量贡献。
这促使Linux系统成为标准化的操作系统,功能日趋健全,应用愈加广泛。1.4Linux开发环境通用计算机可以直接安装版的Linux操作系统,使用编辑器、编译器等工具机开发软件,甚至可以完成整个Linux系统的升级。系统的硬件通常有很大的局限性,或则处理器频度很低,或则空间很小,或者没有按键、鼠标设备。这样的硬件平台法胜任(或则不易于)庞大的Linux系统开发任务。为此,开发者提出了交叉开发环境模型。交叉开发环境是由开发主机和目标板两套估算构成的。目标板Linux软件是在开发主机上编辑、编译,之后加载到目标板上运行的。为了便捷Linux内核和应用程序软件的开发,还要利用各类联接。第4详尽介绍怎么完善交叉开发环境。第5详尽介绍交叉编译工具链的构建。Linux是开放源码的软件工程,它的大量应用程序也来始于GNU软件工程。为此,完全可以自己动手制做一套完整的Linux系统和开发工具。并且,庞大的系统软件开发和测试将耗费大量人工时,法预想的BUG可能严重阻滞项目进度。大量的开源软件和商业的Linux软件共同出现在Linux操作系统上,半导体公司、Linux操作系统公司、第软件公司等早已产生庞大的Linux系统。
任何一家公司都不可能对Linux系统做全面的维护和技术支持。Linux系统的开发工具绝大多数是命令行形式的,这促使学习Linux开发比Windows开发难度更大。商业公司在Linux开发的时侯,希望有更便捷、更快捷《Linux系统开发技术解读——基于ARM》——第1章、概述的开发工具可以使用。为此,Linux集成开发环境具有市场需求。目前,Eclipse早已成为集成开发环境的标准平台。Eclipse是开放的、跨平台的、高度可配置的集成开发环境,它早已被诸多操作系统厂商订制成自己的集成开发环境。诸如:MontaVista公司的DevRocket、TimeSys公司的TimeStorm、WindRiver公司的Workbench。MontaVistaDevRocket集成开发环境如图1.2所示。图1.2MontaVistaDevRocket集成开发环境这种集成开发环境不但才能支持应用程序开发和调试,并且专门提供了内核、文件系统的工程。另外可以集成各类测试工具和版本控制等功能,大大便捷了Linux开发。1.5Linux系统开发要点Linux开发就是建立一个Linux系统,这须要熟悉Linux系统组成部份,熟悉Linux开发工具,还要熟悉Linux编程。
Linux系统包含Bootloader(引导程序)、内核和文件系统3部份。对于Linux系统来说,这3个部份是必不可少的。详尽剖析这3个部份的相关软件开发。其实,在启动一个Linux项目之前,必须仔细考虑下边要点。(1)选择Linux版商业的Linux版是作为开发维护的,经过严格的测试验证,而且可以得到厂家佛山见——培训http:.cn的技术支持。它为开发者提供了可靠的软件和完整的开发工具包。(2)熟悉开发环境和工具交叉开发环境是Linux开发的基本模型。Linux环境配置、GNU工具链、测试工具甚至集成开发环境都是开发Linux开发的神器。(3)熟悉Linux内核由于Linux开发通常须要重新订制Linux内核什么是linux,所以熟悉内核配置、编译和移植也很重要。(4)熟悉目标板引导方法开发板的Bootloader负责硬件平台的最基本的初始化,而且具备引导Linux内核启动的功能。因为硬件平台是专门订制的,通常须要更改编译Bootloader。(5)熟悉Linux根文件系统Linux不开文件系统,文件都储存在文件系统中。系统启动必需的文件都必须置于根文件系统中。
Linux内核命令行参数可以指定要挂接的根文件系统。(6)理解Linux显存模型Linux是保护模式的操作系统。内核和应用程序分运行在完全分的虚拟地址空间,化学地址必须到虚拟地址就能。有理解Linux显存模型,能够最大程度地优化系统性能。(7)理解Linux调度机制和进程线程编程Linux调度机制影响到任务的实时性,理译码度机制可以更好地运用任务优先级。进程和线程编程则是应用程序开发所必需的。