华中科技大学考试科目研究生姓名学号任课教师学院、专业成绩二0年月日嵌入式Linux操作系统摘要:嵌入式系统是先进的计算机技术、半导体技术、电子技术以及各种具体应用相结合的产物,是技术密集、资金密集、高度分散、不断创新的新型集成知识系统。本文主要分析嵌入式Linux系统的特点;Linux嵌入式系统开发模式;概述其主要的应用领域;阐述嵌入式Linux的发展和应用前景。关键词:嵌入式系统Linux操作系统引言近年来,随着计算技术、通信技术的飞速发展,特别是互联网的迅速普及和3C(计算机、通信、消费电子)合一的加速,微型化和专业化成为发展的新趋势,嵌入式产品成为信息产业的主流。Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系统之一;可运行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业和研发机构都转向嵌入式Linux的开发和研究上,在新兴的嵌入式操作系统领域内也获得了飞速发展。1、嵌入式Linux的特点嵌入式系统是以应用为中心,以计算机为基础,软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统。实时性是嵌入式系统的基本要求,其次,还要求代码小,速度快,可靠性高。嵌入式Linux(EmbeddedLinux)是指对Linux经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux的开发和研究已经成为目前操作系统领域的一个热点。下面由卓跃教育为您介绍嵌入式linux的特点。第一,Linux系统是层次结构且内核完全开放。Linux是由很多体积小且性能高的微内核系统组成。在内核代码完全开放的前提下,不同领域和不同层次的用户可以根据自己的应用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。第二,强大的网络支持功能。Linux诞生于因特网时代并具有Unix的特性,保证了它支持所有标准因特网协议,并且可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,为开发嵌入式系统应用打下了很好的基础。第三,Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,可以跨越嵌入式系统开发中仿真工具的障碍。Linux也符合IEEEPOSIX.1标准,使应用程序具有较好的可移植性。传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价格比较昂贵,只适合做非常底层的调试。使用嵌入式Linux,一旦软硬件能够支持正常的串口功能,即使不用仿真器,也可以很好地进行开发和调试工作,从而节省一笔不小的开发费用。嵌入式Linux为开发者提供了一套完整的工具链(toolchain)。它利用GNU的gcc做编译器,用gdb、kgdb、xgdb做调试工具,能够很方便地实现从操作系统到应用软件各个级别的调试。第四,Linux具有广泛的硬件支持特性。无论是RISC还是CISC、32位还是64位等各种处理器,Linux都能运行。Linux通常使用的微处理器是IntelX86芯片家族,但它同样能运行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPCCPU以及Intel公司的StrongARMCPU等处理器。Linux支持各种主流硬件设备和最新硬件技术,甚至可以在没有存储管理单元(MMU)的处理器上运行。这意味着嵌入式Linux将具有更广泛的应用前景。2、嵌入式Linux系统开发模式嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是,先在通用计算机上编写程序,然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行,具体步骤如下。第一步,建立嵌入式Linux交叉开发环境。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有MetrowerksCodeWarrior、ARMSoftwareDevelopmentToolkit、SDSCrosscompiler、WindRiverTornado、MicrosoftEmbeddedVisualC++等。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,见图3。第二步,交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。例如,在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和交叉链接器。如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时,需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。第三步,交叉调试。①硬件调试。如果不采用在线仿真器,可以让CPU直接在其内部实现调试功能,并通过在开发板上引出的调试端口,发送调试命令和接收调试信息,完成调试过程。目前,Motorola公司提供的开发板上使用的是DBM调试端口,而ARM公司提供的开发板上使用的则是JTAG调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与ICE类似的调试效果。②软件调试。在嵌入式Linux系统中,Linux系统内核调试,可以先在Linux内核中设置一个调试桩(debugstub),用作调试过程中和宿主机之间的通信服务器。然后,可以在宿主机中通过调试器的串口与调试桩进行通信,并通过调试器控制目标机上Linux内核的运行。嵌入式上层应用软件的调试可以使用本地调试和远程调试两种方法。如果采用的是本地调试,首先要将所需的调试器移植到目标系统中,然后就可以直接在目标机上运行调试器来调试应用程序了;如果采用的是远程调试,则需要移植一个调试服务器到目标系统中,并通过它与宿主机上的调试器共同完成应用程序的调试。在嵌入式Linux系统的开发中,远程调试时目标机上使用的调试服务器通常是gdbserver,而宿主机上使用的调试器则是gdb。两者相互配合共同完成调试过程。第四步,系统测试。整个软件系统编译过程,嵌入式系统的硬件一般采用专门的测试仪器进行测试,而软件则需要有相关的测试技术和测试工具的支持,并要采用特定的测试策略。测试技术指的是软件测试的专门途径,以及能够更加有效地运用这些途径的特定方法。在嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间做出折衷。基于目标机的测试需要消耗较多的时间和经费,而基于宿主机的测试虽然代价较小,但毕竟是在仿真环境中进行的,因此难以完全反映软件运行时的实际情况。这两种环境下的测试可以发现不同的软件缺陷,关键是要对目标机环境和宿主机环境下的测试内容进行合理取舍。嵌入式软件测试中经常用到的测试工具主要有:内存分析工具、性能分析工具、覆盖分析工具、缺陷跟踪工具等,在这里不加详述。以下即为一个典型开发工具的使用流程:①写入或植入引导码;②向串口打印字符串的编码;③将gdb目标码移植工作串口,可与另一台运行gdb程序的Linux主机系统对话;④利用gdb让硬件和软件初始化码在Linux内核启动时工作;⑤Linux内核启动,串口成为Linux控制口并可用于后续开发;⑥如果在目标硬件上已运行了完整的Linux内核,即可调试用户的应用进程。3、嵌入式Linux应用领域linux由于自身的优良特性,几乎是天然地适合作为嵌入式操作系统。因为linux的主要特点是源码开放,没有版税;功能强大,稳定,健壮;非常优秀的网络功能,图像,文件管理功能,以及多任务支持功能;可定制性;有成千上万的开发人员支持;有大量的且不断增加的开发工具。就其特点来说,linux适用于高端嵌入式产品,具体而言,大略有以下几类:移动计算设备,如HandPC、PalmPC及PDA;移动通讯终端设备,如上网手机;网络通讯设备,如接入盒、打印机服务器乃至路由器、交换机;只能家电设备,如机顶盒;仿真、控制设备。下面仅仅是linux在生活中的几个典型例子。1、机顶盒虽然linux对机顶盒用户来说通常是看不见的,但它常常是非常普及的机顶盒的核心;比如说,我们许多人利用机顶盒来流式传送内容。运行Ubuntu的NeurosLink网络视频播放设备就是个例子。2、自动取款机(ATM)多年来许多专家一直在警告,windows对银行业务来说其实不够安全,所以看到Linux日益应用于ATM。比如说,巴西南里格兰德银行(Banrisul)就用了Linux。3、维基百科、谷歌及更多如果你曾经用过维基百科,那么你已经从Linux得到了好处,至少间接得益。实际上,在使用了多年的红帽和Fedora后,维基百科现在又在使用Ubuntu。维基百科现在每月的页面浏览量大约是100亿人次,据说这一切离不开Ubuntu的支持。如果我们把话题转向企业应用,谷歌、亚马逊、思科、IBM、纽约证券交易所也都是大名鼎鼎的Linux用户。4、政府机关美国——从2001年7月开始,白宫开始将计算机迁移到红帽Linux和ApacheHTTP服务器上,迁移工程于2009年2月结束。在2009年10月,Drupal被选为白宫服务器主要的内容管理系统。美国国防部使用Linux——“美国陆军”是安装红帽Linux的最大基地,美国海军核潜艇舰队运行在Linux上。2006年,美国联邦航空管理局宣布在三分之一的预定时间已完成了迁移到红帽企业Linux的工作,节省了1500万美元。4、嵌入式Linux的发展及应用前景由上面的一些典型例子,我们可以发现嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:工业控制、交通管理、信息家电、家庭智能系统、POS网络及电子商务、环境工程与自然、机器人。这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制协议也需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探试嵌入式系统有着十分重要的意义。相对于其他的领域,机电产品可以说是嵌入式系统应用最典型最广泛的领域之一。从最初的单片机以现在的工控机、SOC在种机电产品中均有着巨大的市场。工业设备是机电产品中最大的一类,在目前的工业控制设备中,工控机的使用非常广泛,这些工控机一般采用的是工业级的处理器和各种设备,其中以X86的MPU最多。家电行业是嵌入式应用的另一大行业,我们传统的电视,电冰箱当然其中也嵌有处理器,但是这些处理器只是在控制方面应用。而现在只有按钮、开关的电器显然已经不能满足人们的日常需求,具有用户界面,能远程控制,智能管理的电器是未来的发展趋势。到我们身边。综上,由于Linux具有对各种设备的广泛支持性,因此,能方便地应用于机顶盒、