《嵌入式Linux系统的开发与应用.doc》由会员分享,可在线阅读,更多相关《嵌入式Linux系统的开发与应用.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式Linux系统的开发与应用摘要:嵌入式系统是先进的计算机技术、半导体技术、电子技术以及各种具体应用相结合的产物,是技术密集、资金密集、高度分散、不断创新的新型集成知识系统。本文主要分析嵌入式Linux系统应用开发的特点;概述其开发过程和所面临的挑战;阐述嵌入式Linux的发展和应用前景。关键词:嵌入式系统 Linux 操作系统 引 言近年来,随着计算技术、通信技术的飞速发展,特别是互联网的迅速普及和3C(计算机、通信、消费电子)合一的加速,微型化和专业化成为发展的新趋势,嵌入式产品成为信息产业的主流。Linux从1991年问世到现在,短短的十几年时间已经发展成为功能强大、设计完善的操作系
2、统之一;可运行在X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗争。越来越多的企业和研发机构都转向嵌入式Linux的开发和研究上,在新兴的嵌入式操作系统领域内也获得了飞速发展。、嵌入式系统的基本知识嵌入式系统是集软、硬件于一体的可独立工作的“器件”。嵌入式系统的硬件部分包括处理器微处理器、存储器及外设器件和端口、图形控制器等。这种系统有别于一般的计算机处理系统,它不像硬盘那样有大容量的存储介质,而大多使用-、或闪存 作为存储介质。软件部分包括操作系统软件要求实时和多任务操作和应用程序编程
3、。应用程序控制着系统的运作和行为;而操作系统则控制着应用程序编程与硬件的交互作用。嵌入式计算机系统同通用型计算机系统相比,具有以下特点:)嵌入式系统通常是面向特定应用的,嵌入式与通用型的最大不同就是,嵌入式大多工作在为特定用户群设计的系统中,它通常都具有低功耗、小体积、高集成度等特点,能够把通用中许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统设计趋于小型化,因此,器件的移动能力大大增强,同时跟网络的耦合也越来越紧密。)嵌入式系统的硬件和软件都必须高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。)因为嵌入式系统和具体
4、应用有机地结合在一起,它的升级换代也和具体产品同步进行,所以,嵌入式系统产品一旦进入市场,一般都具有较长的生命周期。)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机之中,而不是存贮于磁盘等载体中。嵌入式系统本身不具备自举开发能力,即使在设计完成后,用户也不能对其中的程序进行修改,而是必须有一套开发工具和环境才能进行开发。2、嵌入式Linux的特点嵌入式系统是以应用为中心,以计算机为基础,软硬件可裁剪,适用于系统对功能、可靠性、成本、功耗严格要求的专用计算机系统,系统结构见图1。实时性是嵌入式系统的基本要求,其次,还要求代码小,速度快,可靠性高。嵌入式Linux(
5、Embedded Linux)是指对Linux经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用Linux操作系统。嵌入式Linux的开发和研究已经成为目前操作系统领域的一个热点。与其它嵌入式操作系统相比,Linux的特点如下。1开放性是指系统遵循世界标准规范,特别是遵循开放系统互联(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互联。Linux采用GPL授权,除了把源代码公开以外,任何人都可以自由使用、修改、散布;而Linux核心本身采用模块化设计,让人很容易增减功能,由于Linux具有这样高的可伸缩性,所以可以调出最适合我们硬件平台的核心
6、出来。2多用户是指系统资源可以被不同用户各自拥有并使用,即每个用户对自己的资源有特定的权限,互不影响。Linux和UNIX都具有多用户的特性。3多任务是现代计算机最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。4稳定性强,Linux不属于任何一家公司,但它却拥有全世界愿意投入自由软件的开发人员。在全球各处都有无数的人参与Linux核心的改进、调试与测试,也正因此造就了稳定度高的Linux。所以,Linux虽不是商业的产物,但它的质量却不逊于商业产
7、品。5设备独立性,是指操作系统把所有外部设备统一当做文件来看待,只要安装它们的驱动程序,任何用户都可以像使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。 6提供了丰富的网络功能完善的内置网络是Linux的一大特点。Linux在通信和网络功能方面优于其他操作系统。Linux为用户提供了完善的、强大的网络功能,包括支持Internet、文件传输和远程访问。7可靠的系统安全在Linux操作系统中采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等
8、,这些措施为网络多用户环境中的用户提供了必要的安全保障。8良好的可移植性可移植性是指将操作系统从一个平台转移到另一个平台,并使它仍然能按其自身的方式运行的能力。Linux一开始是基于Intel 386机器设计的,但是随着网络的散布,加上有许多工程师致力于各式平台的移植,使得Linux可以在x86、MIPS、ARM/StrongARM、PowerPC、Motorola 68k、Hitachi SH3/SH4、Transmeta等平台上运行。这些平台几乎覆盖了所有嵌入式系统的CPU种类,这样,在硬件平台设计时,使得可以考虑的CPU种类增加了不少。9应用软件多自由软件世界里有个很大的特点就是软件多,
9、授权几乎都是采用GPL方式,大家都可以自由参考与使用,但是因为这些软件多半是由设计者利用空余时间开发的,不以赢利为目的,所以并不能担保这些软件完全没有问题。尽管如此,仍有许多优秀软件出现,例如,大家熟知的KDE与GNOME便是很好的证明。 3、 Linux嵌入式系统开发平台3.1 系统软件操作平台操作系统是一种在计算机上运行的软件。它的主要任务是管理计算机上的系统资源,为用户提供使用计算机及其外部设备的接口。它存在的目的是为了管理所有硬件资源,并且提供应用软件一个合适的操作环境。嵌入式系统由于硬件的限制,通常只具有极稀少的硬件资源,如主频较低的CPU、较小的内存、小容量的固态电子盘芯片DoC(
10、Disk on Chip)或DoM(Disk on Module)替代磁盘等。在使用电池的系统中,它还要实现低功耗,延长电池使用时间的功能。Linux作为嵌入式操作系统是完全可行的。因为Linux提供了完成嵌入功能的基本内核和所需要的所有用户界面,能处理嵌入式任务和用户界面。将Linux看作是连续的统一体,从一个具有内存管理、任务切换和时间服务及其它分拆的微内核到完整的服务器,支持所有的文件系统和网络服务。Linux作为嵌入式系统,是一个带有很多优势的新成员。它对许多CPU和硬件平台都是易移植、稳定、功能强大、易于开发的。嵌入式Linux系统需要下面三个基本元素:系统引导工具(用于机器加电后的
11、系统定位引导)、Linux微内核(内存管理、 程序管理)、初始化进程。但如果要它成为完整的操作系统并且继续保持小型化,还必须加上硬件驱动程序、硬件接口程序和应用程序组。Linux是基于GNU的C编译器,作为GNU工具链的一部分,与gdb源调试器一起工作的。它提供了开发嵌入式Linux系统的所有软件工具。3.2 系统硬件平台在选择硬件时,常由于缺乏完整或精确的信息而使硬件选择成为复杂且困难的工作。硬件开发成本常是我们很关心的。当考虑硬件成本时,须要考虑产品的整个成本而不仅是CPU的成本。因为合适的CPU,一旦加上总线逻辑和延时电路使之与外设一起工作,硬件系统就可能变得非常昂贵。如果要寻找嵌入式软
12、件系统,那么,应首先确定硬件平台,即确定微处理器CPU的型号。现在比较流行的硬件平台有Intel公司的StrongARM 系列,Motorola公司的DragonBall系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等等。选定硬件平台前,首先要确定系统的应用功能和所需要的速度,并制定好外接设备和接口标准。这样才能准确地定位所需要的硬件方案,得到性价比最高的系统。4、嵌入式Linux系统开发模式嵌入式系统通常为一个资源受限的系统。直接在嵌入式系统的硬件平台上编写软件比较困难,有时甚至是不可能的。目前,一般采用的办法是,先在通用计算机上编写程序,然后,通过交叉编译,生成目标平台
13、上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行,具体步骤如下。第一步,建立嵌入式Linux交叉开发环境。目前,常用的交叉开发环境主要有开放和商业两种类型。开放的交叉开发环境的典型代表是GNU工具链,目前已经能够支持x86、ARM、MIPS、PowerPC等多种处理器。商业的交叉开发环境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C+等。交叉开发环境是指编译、链接和调试嵌入式应用软件
14、的环境。它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,见图3。第二步,交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生成可执行代码。由于开发过程大多是在Intel公司x86系列CPU的通用计算机上进行的,而目标环境的处理器芯片却大多为ARM、MIPS、PowerPC、DragonBall等系列的微处理器,这就要求在建立好的交叉开发环境中进行交叉编译和链接。例如,在基于ARM体系结构的gcc交叉开发环境中,arm-linux-gcc是交叉编译器,arm-linux-ld是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应于一种交叉编译器和
15、交叉链接器。如对于M68K体系结构的gcc交叉开发环境而言,就对应于多种不同的编译器和链接器。如果使用的是COFF格式的可执行文件,那么在编译Linux内核时,需要使用m68k-coff-gcc和m68k-coff-ld,而在编译应用程序时则需要使用m68k-coff-pic-gcc和m68k-coff-pic-ld。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。第三步,交叉调试。 硬件调试。如果不采用在线仿真器,可以让CPU直接在其内部实现调试功能,并通过在开发板上引出的调试端口,发送调试命令和接收调试信息,完成调试过
16、程。目前,Motorola公司提供的开发板上使用的是DBM调试端口,而ARM公司提供的开发板上使用的则是JTAG调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与ICE类似的调试效果。 软件调试。在嵌入式Linux系统中,Linux系统内核调试,可以先在Linux内核中设置一个调试桩(debug stub),用作调试过程中和宿主机之间的通信服务器。然后,可以在宿主机中通过调试器的串口与调试桩进行通信,并通过调试器控制目标机上Linux内核的运行。嵌入式上层应用软件的调试可以使用本地调试和远程调试两种方法。如果采用的是本地调试,首先要将所需的调试器移植到目标系统中,然后就可以直接在目
17、标机上运行调试器来调试应用程序了;如果采用的是远程调试,则需要移植一个调试服务器到目标系统中,并通过它与宿主机上的调试器共同完成应用程序的调试。在嵌入式Linux系统的开发中,远程调试时目标机上使用的调试服务器通常是gdbserver,而宿主机上使用的调试器则是gdb。两者相互配合共同完成调试过程。第四步,系统测试。整个软件系统编译过程,嵌入式系统的硬件一般采用专门的测试仪器进行测试,而软件则需要有相关的测试技术和测试工具的支持,并要采用特定的测试策略。测试技术指的是软件测试的专门途径,以及能够更加有效地运用这些途径的特定方法。在嵌入式软件测试中,常常要在基于目标机的测试和基于宿主机的测试之间
18、做出折衷。基于目标机的测试需要消耗较多的时间和经费,而基于宿主机的测试虽然代价较小,但毕竟是在仿真环境中进行的,因此难以完全反映软件运行时的实际情况。这两种环境下的测试可以发现不同的软件缺陷,关键是要对目标机环境和宿主机环境下的测试内容进行合理取舍。嵌入式软件测试中经常用到的测试工具主要有:内存分析工具、性能分析工具、覆盖分析工具、缺陷跟踪工具等,在这里不加详述。以下即为一个典型开发工具的使用流程: 写入或植入引导码; 向串口打印字符串的编码; 将gdb目标码移植工作串口,可与另一台运行gdb程序的Linux主机系统对话; 利用gdb让硬件和软件初始化码在Linux内核启动时工作; Linux
19、内核启动,串口成为Linux控制口并可用于后续开发; 如果在目标硬件上已运行了完整的Linux内核,即可调试用户的应用进程。5、嵌入式Linux面临的挑战目前,对嵌入式Linux系统的开发正在蓬勃兴起,并已形成了很大的市场。除了一些传统的Linux公司,像RedHat、VA Linux等,正在从事嵌入式Linux的研究之外,一批新公司(如Lineo、TimeSys等)和一些传统的大公司(如IBM、SGI、Motorola、Intel等)以及一些开发专用嵌入式操作系统的公司(如Lynx)也都在进行嵌入式Linux的研究和开发。但就目前的技术而言,嵌入式Linux的研究成果与市场的真正需求还有一些
20、距离,因此,嵌入式Linux走向成熟还需要在以下几个方面有所发展。 (1)Linux的实时性扩充实时性是嵌入式操作系统的基本要求。由于Linux还不是一个真正的实时操作系统,内核不支持事件优先级和抢占实时特性,所以在开发嵌入式Linux的过程中,首要问题是扩展Linux的实时性能。对Linux实时性的扩展可以从两方面进行:向外扩展和向上扩展。向外扩展即从范围上扩展,让实时系统支持的范围更广,支持的设备更多。目前的开发所面向的设备仅限于较简单的有实时要求的串/并口数据采集、浮点数据计算等,而像实时网络这样实时系统的高级应用还需进一步发展。向上扩展是扩充Linux内核,从功能上扩充Linux的实时
21、处理和控制系统。如嵌入式系统RT-Linux,它的基本原理是将Linux本身的任务以及Linux内核本身作为一个优先级最低的任务,而实时任务作为优先级最高的任务,即在实时任务存在的情况下运行实时任务,否则就运行Linux本身的任务。实时任务不同于Linux普通进程。它是以Linux的可装载的内核模块(Loadable Kernel Module,LKM)的形式存在的,需要运行实时任务的时候,将这个实时任务的内核模块插入到内核中去,实时任务和Linux一般进程之间的通信通过共享内存或者FIFO通道来实现。 (2)改变Linux内核的体系结构Linux的内核体系采用的是Monolithic。在这种
22、体系结构中,内核的所有部分都集中在一起,而且所有的部件在一起编译连接。这样虽然能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高系统的响应速度和CPU的利用率,且实时性好;但在系统比较大时体积也比较大,与嵌入式系统容量小、资源有限的特点不符。而另外一种内核体系结构MicroKernel, 在内核中只包括了一些基本的内核功能,如创建和删除任务、任务调度、内存管理和中断处理等部分,而文件系统、网络协议栈等部分都是在用户内存空间运行。这种结构虽然执行效率不如Monolithic内核,但大大减小了内核的体积,同时也方便了整个系统的升级、维护和移植,更能满足嵌入式系统的特点需要。为此,要使嵌入
23、式Linux的应用更加广泛,若将Linux目前的Monolithic内核结构中的部分结构改造成MicroKernel体系结构,可使得到的Linux既具有很好的实时性,又能满足嵌入式系统体积小的要求。另外,Linux是一个需要占用存储器的操作系统。虽然这可以通过减少一些不必要的功能来弥补,但可能会浪费很多时间,而且容易带来很大的麻烦。许多Linux的应用程序都要用到虚拟内存,这在许多嵌入式系统中是没有价值的。所以,并不是一个没有磁盘的Linux嵌入式系统就可以运行任何Linux应用程序。 (3)完善Linux的集成开发环境提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。一个完整的嵌入式
24、系统的集成开发环境一般需要提供的工具是:编译/连接器、内核调试/跟踪器和集成图形界面开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。在Linux系统中,具有功能强大的gcc编译器工具链,使用了基于GNU的调试器gdb的远程调试功能,一般由一台客户机运行调试程序调试宿主机运行的操作系统内核; 在使用远程开发时还可以使用交叉平台的方式,如在Windows平台下的调试跟踪器对Linux的宿主系统做调试。但是,Linux在基于图形界面的特定系统定制平台的研究上,与Windows操作系统相比还存在差距。因此,要使嵌入式Linux在嵌入式操作系统领域中的优势更加明显,整体集成
25、开发环境还有待提高和完善。6、嵌入式Linux的发展及应用前景嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括:工业控制、交通管理、信息家电、家庭智能系统、POS网络及电子商务、环境工程与自然、机器人。这些应用中,可以着重于在控制方面的应用。就远程家电控制而言,除了开发出支持TCP/IP的嵌入系统之外,家电产品控制协议也需要制订和统一,这需要家电生产厂家来做。同样的道理,所有基于网络的远程控制协议也需要与嵌入式系统之间实现接口,然后再由嵌入式系统来控制并通过网络实现控制。所以,开发和探试嵌入式系统有着十分重要的意义。相对于其他的领域,机电产品可以说是嵌入式系统应用最典型最广泛的领域之一
26、。从最初的单片机以现在的工控机、SOC在种机电产品中均有着巨大的市场。工业设备是机电产品中最大的一类,在目前的工业控制设备中,工控机的使用非常广泛,这些工控机一般采用的是工业级的处理器和各种设备,其中以X86的MPU最多。家电行业是嵌入式应用的另一大行业,我们传统的电视,电冰箱当然其中也嵌有处理器,但是这些处理器只是在控制方面应用。而现在只有按钮、开关的电器显然已经不能满足人们的日常需求,具有用户界面,能远程控制,智能管理的电器是未来的发展趋势。到我们身边。综上,由于Linux具有对各种设备的广泛支持性,因此,能方便地应用于机顶盒、IA设备、PDA、掌上电脑、WAP手机、寻呼机、车载盒以及工业
27、控制等智能信息产品中。与PC相比,手持设备、IA设备以及信息家电的市场容量要高得多,而Linux嵌入式系统的强大的生命力和利用价值,使越来越多的企业和高校表现出对它极大的研发热情。蓝点软件公司、博利思公司、共创软件联盟、中科红旗等公司都已将嵌入式系统的开发作为自己的主要发展方向之一。在嵌入式系统的应用中,Linux嵌入式操作系统所具有的技术优势和独特的开发模式给业界以新异。有理由相信,它能成为Internet时代嵌入式操作系统中的最强音。7、结束语信息时代数字时代使得嵌入式产品获得了巨大的发展机遇,也为嵌入式市场展现了美好的前景同时也对嵌入式系统的开发者提出了新的挑战。开发出的产品除了应具有独
28、特的创新功能外,开发者还应遵循一定的原则,只有这样,才能使嵌入式系统产品的开发事半功倍。如今,互联网应用正在转到以嵌入式设备为中心,因此,用工控系统与相结合来实现网络化已是一种必然的趋势。而把嵌入式微处理器内核嵌入到基于 的位系统中,然后通过构造多种网络协议和基本网络通信协议,再利用嵌入式操作系统对底层硬件和网络协议的支持,以及对工控系统实时性要求的-内核和虚拟内存机制进行改造,即可保证测控任务完成的实时性和可靠性。可以预见,这种方案在工业控制领域具有很好的应用前景,而且具有开发周期短、系统性能稳定可靠、适应性强等特点。8、参考文献:1 嵌入式处理器分类与现状吕京建肖海桥2 嵌入式系统设计系统 马洪连等3 嵌入式系统开发工具及RTOS平台. 吕京建,肖海桥