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