当前位置: 首页 > >

嵌入式Linux系统及其应用前景

发布时间:

仅供个人参考

嵌入式 Linux 系统及其应用前景

班级:数计学院计科系 07 级 1 班 姓名:罗强 学号:09

不得用于商业用途

仅供个人参考

嵌入式 Linux 系统及其应用前景 摘要:主要分析嵌入式 Linux 系统应用开发的特点;概述其开发过程和所面临的挑战;阐述
嵌入式 Linux 的发展和应用前景。

关键词:嵌入式

Linux

操作系统

应用前景

不得用于商业用途

仅供个人参考 引 言 近年来,随着计算技术、通信技术的飞速发展,特别是互联网的迅速普及和 3C(计算 机、通信、消费电子)合一的加速,微型化和专业化成为发展的新趋势,嵌入式产品成为信 息产业的主流。Linux 从 1991 年问世到现在,短短的十几年时间已经发展成为功能强大、 设计完善的操作系统之一;可运行在 X86、Alpha、Sparc、MIPS、PPC、Motorola、NEC、 ARM 等多种硬件平台,而且开放源代码,可以定制;可与各种传统的商业操作系统分庭抗 争。越来越多的企业和研发机构都转向嵌入式 Linux 的开发和研究上,在新兴的嵌入式操作 系统领域内也获得了飞速发展。 1 嵌入式 Linux 的特点 嵌入式系统是以应用为中心,以计算机为基础,软硬件可裁剪,适用于系统对功能、可 靠性、成本、功耗严格要求的专用计算机系统,系统结构见图 1。实时性是嵌入式系统的基 本要求,其次,还要求代码小,速度快,可靠性高。嵌入式 Linux(Embedded Linux)是指 对 Linux 经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用 L inux 操作系统。嵌入式 Linux 的开发和研究已经成为目前操作系统领域的一个热点。与其它 嵌入式操作系统相比(详见表 1),Linux 的特点如下。 表 1 专用嵌入式实时操作系统与嵌入式 Linux 的比较 专用嵌入式实时操作系统 每生产一件产品需交纳一份版权 版权费 费 购买费用 数十万元(RMB) 由开发商独家提供有限的技术支 技术支持 持 网络特性 软件移值 另加数十万元(RMB)购买 难(因为是封闭系统) 免费且性能优异 易, 代码开放 (有许多应用软件支持) 短,新产品上市迅速,因为有许多公 应用产品开发周期 长,因为可参考的代码有限 开的代码可以参考和移植 实时性能 稳定性 好 较好 须改进,可用 PT_Linux 等模块弥补 较好,但在高性能系统中须改进 全世界的自由软件开发者提供支持 免费 免费 嵌入式 Linux 操作系统

不得用于商业用途

仅供个人参考 第一,Linux 系统是层次结构且内核完全开放。Linux 是由很多体积小且性能高的微内 核系统组成。 在内核代码完全开放的前提下, 不同领域和不同层次的用户可以根据自己的应 用需要方便地对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统。 第二,强大的网络支持功能。Linux 诞生于因特网时代并具有 Unix 的特性,保证了它 支持所有标准因特网协议,并且可以利用 Linux 的网络协议栈将其开发成为嵌入式的 TCP/I P 网络协议栈。 此外,Linux 还支持 ext2、fat16、fat32、romfs 等文件系统,为开发嵌入式 系统应用打下了很好的基础。 第三, Linux 具备一整套工具链, 容易自行建立嵌入式系统的开发环境和交叉运行环境, 可以跨越嵌入式系统开发中仿真工具的障碍。Linux 也符合 IEEE POSIX.1 标准,使应用程 序具有较好的可移植性。 传统的嵌入式开发的程序调试和调试工具是用在线仿真器(ICE)实现的。它通过取代 目标板的微处理器,给目标程序提供一个完整的仿真环境,完成监视和调试程序;但一般价 格比较昂贵,只适合做非常底层的调试。使用嵌入式 Linux,一旦软硬件能够支持正常的串 口功能,即使不用仿真器,也可以很好地进行开发和调试工作,从而节省一笔不小的开发费 用。嵌入式 Linux 为开发者提供了一套完整的工具链(tool chain)。它利用 GNU 的 gcc 做 编译器,用 gdb、kgdb、xgdb 做调试工具,能够很方便地实现从操作系统到应用软件各个级 别的调试。 第四,Linux 具有广泛的硬件支持特性。无论是 RISC 还是 CISC、32 位还是 64 位等各 种处理器,Linux 都能运行。Linux 通常使用的微处理器是 Intel X86 芯片家族,但它同样能 运行于 Motorola 公司的 68K 系列 CPU 和 IBM、Apple、Motorola 公司的 PowerPC CPU 以 及 Intel 公司的 StrongARM CPU 等处理器。Linux 支持各种主流硬件设备和最新硬件技术, 甚至可以在没有存储管理单元(MMU)的处理器上运行。这意味着嵌入式 Linux 将具有更 广泛的应用前景。 2 Linux 嵌入式系统开发平台 2.1 系统软件操作平台 操作系统是一种在计算机上运行的软件。 它的主要任务是管理计算机上的系统资源, 为 用户提供使用计算机及其外部设备的接口。 它存在的目的是为了管理所有硬件资源, 并且提 供应用软件一个合适的操作环境。 嵌入式系统由于硬件的限制, 通常只具有极稀少的硬件资 源,如主频较低的 CPU、较小的内存、小容量的固态电子盘芯片 DoC(Disk on Chip)或 D oM(Disk on Module)替代磁盘等。在使用电池的系统中,它还要实现低功耗,延长电池 使用时间的功能。 Linux 作为嵌入式操作系统是完全可行的。因为 Linux 提供了完成嵌入功能的基本内核 和所需要的所有用户界面,能处理嵌入式任务和用户界面。将 Linux 看作是连续的统一体, 从一个具有内存管理、 任务切换和时间服务及其它分拆的微内核到完整的服务器, 支持所有 的文件系统和网络服务。Linux 作为嵌入式系统,是一个带有很多优势的新成员。它对许多 CPU 和硬件平台都是易移植、稳定、功能强大、易于开发的。

不得用于商业用途

仅供个人参考 嵌入式 Linux 系统需要下面三个基本元素:系统引导工具(用于机器加电后的系统定位 引导)、Linux 微内核(内存管理、 程序管理)、初始化进程。但如果要它成为完整的操 作系统并且继续保持小型化,还必须加上硬件驱动程序、硬件接口程序和应用程序组。 Linux 是基于 GNU 的 C 编译器,作为 GNU 工具链的一部分,与 gdb 源调试器一起工 作的。它提供了开发嵌入式 Linux 系统的所有软件工具。 2.2 系统硬件平台 在选择硬件时, 常由于缺乏完整或精确的信息而使硬件选择成为复杂且困难的工作。 硬 件开发成本常是我们很关心的。当考虑硬件成本时,须要考虑产品的整个成本而不仅是 CP U 的成本。因为合适的 CPU,一旦加上总线逻辑和延时电路使之与外设一起工作,硬件系 统就可能变得非常昂贵。如果要寻找嵌入式软件系统,那么,应首先确定硬件平台,即确定 微处理器 CPU 的型号。 现在比较流行的硬件平台有 Intel 公司的 StrongARM 系列,Motorola 公司的 DragonBal l 系列,NEC 公司的 VR 系列,Hitachi 公司的 SH3、SH4 系列等等。选定硬件平台前,首先 要确定系统的应用功能和所需要的速度, 并制定好外接设备和接口标准。 这样才能准确地定 位所需要的硬件方案,得到性价比最高的系统。 3 嵌入式 Linux 系统开发模式 嵌入式系统通常为一个资源受限的系统。 直接在嵌入式系统的硬件平台上编写软件比较 困难,有时甚至是不可能的。一般流程见图 2。目前,一般采用的办法是,先在通用计算机 上编写程序,然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到 目标平台上的特定位置上运行,具体步骤如下。 第一步,建立嵌入式 Linux 交叉开发环境。目前,常用的交叉开发环境主要有开放和商 业两种类型。开放的交叉开发环境的典型代表是 GNU 工具链,目前已经能够支持 x86、AR M、MIPS、PowerPC 等多种处理器。商业的交叉开发环境主要有 Metrowerks CodeWarrior、 ARM Software Development Toolkit、SDS Cross compiler、WindRiver Tornado、Microsoft Embedded Visual C++等。交叉开发环境是指编译、链接和调试嵌入式应用软件的环境。 它与运行嵌入式应用软件的环境有所不同,通常采用宿主机/目标机模式,见图 3。 第二步,交叉编译和链接。在完成嵌入式软件的编码之后,就是进行编译和链接,以生 成可执行代码。由于开发过程大多是在 Intel 公司 x86 系列 CPU 的通用计算机上进行的,而 目标环境的处理器芯片却大多为 ARM、MIPS、PowerPC、DragonBall 等系列的微处理器, 这就要求在建立好的交叉开发环境中进行交叉编译和链接。 例如,在基于 ARM 体系结构的 gcc 交叉开发环境中,arm-linux-gcc 是交叉编译器,ar m-linux-ld 是交叉链接器。通常情况下,并不是每一种体系结构的嵌入式微处理器都只对应 于一种交叉编译器和交叉链接器。 如对于 M68K 体系结构的 gcc 交叉开发环境而言, 就对应 于多种不同的编译器和链接器。如果使用的是 COFF 格式的可执行文件,那么在编译 Linux 内核时,需要使用 m68k-coff-gcc 和 m68k-coff-ld,而在编译应用程序时则需要使用 m68k-c

不得用于商业用途

仅供个人参考 off-pic-gcc 和 m68k-coff-pic-ld。编写好的嵌入式软件经过交叉编译和交叉链接后,通常会生 成两种类型的可执行文件:用于调试的可执行文件和用于固化的可执行文件。 第三步,交叉调试。 ① 硬件调试。如果不采用在线仿真器,可以让 CPU 直接在其内部实现调试功能,并通 过在开发板上引出的调试端口,发送调试命令和接收调试信息,完成调试过程。目前,Mot orola 公司提供的开发板上使用的是 DBM 调试端口, 而 ARM 公司提供的开发板上使用的则 是 JTAG 调试端口。使用合适的软件工具与这些调试端口进行连接,可以获得与 ICE 类似 的调试效果。 ② 软件调试。在嵌入式 Linux 系统中,Linux 系统内核调试,可以先在 Linux 内核中设 置一个调试桩(debug stub),用作调试过程中和宿主机之间的通信服务器。然后,可以在 宿主机中通过调试器的串口与调试桩进行通信, 并通过调试器控制目标机上 Linux 内核的运 行。 嵌入式上层应用软件的调试可以使用本地调试和远程调试两种方法。 如果采用的是本地 调试, 首先要将所需的调试器移植到目标系统中, 然后就可以直接在目标机上运行调试器来 调试应用程序了;如果采用的是远程调试,则需要移植一个调试服务器到目标系统中,并通 过它与宿主机上的调试器共同完成应用程序的调试。在嵌入式 Linux 系统的开发中,远程调 试时目标机上使用的调试服务器通常是 gdbserver, 而宿主机上使用的调试器则是 gdb。 两者 相互配合共同完成调试过程。 第四步,系统测试。整个软件系统编译过程,嵌入式系统的硬件一般采用专门的测试仪 器进行测试, 而软件则需要有相关的测试技术和测试工具的支持, 并要采用特定的测试策略。 测试技术指的是软件测试的专门途径, 以及能够更加有效地运用这些途径的特定方法。 在嵌 入式软件测试中, 常常要在基于目标机的测试和基于宿主机的测试之间做出折衷。 基于目标 机的测试需要消耗较多的时间和经费, 而基于宿主机的测试虽然代价较小, 但毕竟是在仿真 环境中进行的, 因此难以完全反映软件运行时的实际情况。 这两种环境下的测试可以发现不 同的软件缺陷, 关键是要对目标机环境和宿主机环境下的测试内容进行合理取舍。 嵌入式软 件测试中经常用到的测试工具主要有:内存分析工具、性能分析工具、覆盖分析工具、缺陷 跟踪工具等,在这里不加详述。嵌入式 Linux 系统的典型构成见图 4。 以下即为一个典型开发工具的使用流程: ① 写入或植入引导码; ② 向串口打印字符串的编码; ③ 将 gdb 目标码移植工作串口,可与另一台运行 gdb 程序的 Linux 主机系统对话; ④ 利用 gdb 让硬件和软件初始化码在 Linux 内核启动时工作; ⑤ Linux 内核启动,串口成为 Linux 控制口并可用于后续开发;

不得用于商业用途

仅供个人参考 ⑥ 如果在目标硬件上已运行了完整的 Linux 内核,即可调试用户的应用进程。 4 嵌入式 Linux 面临的挑战 目前,对嵌入式 Linux 系统的开发正在蓬勃兴起,并已形成了很大的市场。除了一些传 统的 Linux 公司,像 RedHat、VA Linux 等,正在从事嵌入式 Linux 的研究之外,一批新公 司(如 Lineo、TimeSys 等)和一些传统的大公司(如 IBM、SGI、Motorola、Intel 等)以及 一些开发专用嵌入式操作系统的公司(如 Lynx)也都在进行嵌入式 Linux 的研究和开发。 但就目前的技术而言,嵌入式 Linux 的研究成果与市场的真正需求还有一些距离,因此,嵌 入式 Linux 走向成熟还需要在以下几个方面有所发展。 (1)Linux 的实时性扩充 实时性是嵌入式操作系统的基本要求。由于 Linux 还不是一个真正的实时操作系统,内 核不支持事件优先级和抢占实时特性,所以在开发嵌入式 Linux 的过程中,首要问题是扩展 Linux 的实时性能。对 Linux 实时性的扩展可以从两方面进行:向外扩展和向上扩展。向外 扩展即从范围上扩展,让实时系统支持的范围更广,支持的设备更多。目前的开发所面向的 设备仅限于较简单的有实时要求的串/并口数据采集、浮点数据计算等,而像实时网络这样 实时系统的高级应用还需进一步发展。向上扩展是扩充 Linux 内核,从功能上扩充 Linux 的 实时处理和控制系统。 如嵌入式系统 RT-Linux, 它的基本原理是将 Linux 本身的任务以及 L inux 内核本身作为一个优先级最低的任务, 而实时任务作为优先级最高的任务, 即在实时任 务存在的情况下运行实时任务,否则就运行 Linux 本身的任务。实时任务不同于 Linux 普通 进程。它是以 Linux 的可装载的内核模块(Loadable Kernel Module,LKM)的形式存在的, 需要运行实时任务的时候,将这个实时任务的内核模块插入到内核中去,实时任务和 Linux 一般进程之间的通信通过共享内存或者 FIFO 通道来实现。 (2)改变 Linux 内核的体系结构 Linux 的内核体系采用的是 Monolithic。在这种体系结构中,内核的所有部分都集中在 一起,而且所有的部件在一起编译连接。这样虽然能使系统的各部分直接沟通,有效地缩短 任务之间的切换时间,提高系统的响应速度和 CPU 的利用率,且实时性好;但在系统比较 大时体积也比较大,与嵌入式系统容量小、资源有限的特点不符。而另外一种内核体系结构 MicroKernel, 在内核中只包括了一些基本的内核功能,如创建和删除任务、任务调度、内 存管理和中断处理等部分,而文件系统、网络协议栈等部分都是在用户内存空间运行。这种 结构虽然执行效率不如 Monolithic 内核, 但大大减小了内核的体积,同时也方便了整个系统 的升级、维护和移植,更能满足嵌入式系统的特点需要。为此,要使嵌入式 Linux 的应用更 加广泛, 若将 Linux 目前的 Monolithic 内核结构中的部分结构改造成 MicroKernel 体系结构, 可使得到的 Linux 既具有很好的实时性,又能满足嵌入式系统体积小的要求。 另外,Linux 是一个需要占用存储器的操作系统。虽然这可以通过减少一些不必要的功 能来弥补,但可能会浪费很多时间,而且容易带来很大的麻烦。许多 Linux 的应用程序都要 用到虚拟内存,这在许多嵌入式系统中是没有价值的。所以,并不是一个没有磁盘的 Linux 嵌入式系统就可以运行任何 Linux 应用程序。 (3)完善 Linux 的集成开发环境 不得用于商业用途

仅供个人参考 提供完整的集成开发环境是每一个嵌入式系统开发人员所期待的。 一个完整的嵌入式系 统的集成开发环境一般需要提供的工具是:编译/连接器、内核调试/跟踪器和集成图形界面 开发平台。其中的集成图形界面开发平台包括编辑器、调试器、软件仿真器和监视器等。在 Linux 系统中,具有功能强大的 gcc 编译器工具链,使用了基于 GNU 的调试器 gdb 的远程 调试功能, 一般由一台客户机运行调试程序调试宿主机运行的操作系统内核; 在使用远程开 发时还可以使用交叉平台的方式,如在 Windows 平台下的调试跟踪器对 Linux 的宿主系统 做调试。但是,Linux 在基于图形界面的特定系统定制平台的研究上,与 Windows 操作系统 相比还存在差距。因此,要使嵌入式 Linux 在嵌入式操作系统领域中的优势更加明显,整体 集成开发环境还有待提高和完善。 5 嵌入式 Linux 的发展及应用前景 综上,由于 Linux 具有对各种设备的广泛支持性,因此,能方便地应用于机顶盒、IA 设 备、PDA、掌上电脑、WAP 手机、寻呼机、车载盒以及工业控制等智能信息产品中。与 P C 相比,手持设备、IA 设备以及信息家电的市场容量要高得多,而 Linux 嵌入式系统的强 大的生命力和利用价值, 使越来越多的企业和高校表现出对它极大的研发热情。 蓝点软件公 司、博利思公司、共创软件联盟、中科红旗等公司都已将嵌入式系统的开发作为自己的主要 发展方向之一。 在嵌入式系统的应用中,Linux 嵌入式操作系统所具有的技术优势和独特的开发模式给 业界以新异。有理由相信,它能成为 Internet 时代嵌入式操作系统中的最强音。

参考文献 1. 张小斌、严望佳。黑客分析与防范技术。北京:清华大学出版社,2004 年 5 月,IS BN7-302-03460-5/TP.1885 2. 张轶博、孙占峰。Linux 应用大全。北京:机械工业出版社,2004 年 1 月,ISBN7111-07768-7 3. 施势帆、吕建毅。Linux 网络服务器实用手册。北京:清华大学出版社,2005 年 7 月,ISBN7-900617-86-8

不得用于商业用途

仅供个人参考

仅供个人用于学习、研究;不得用于商业用途。
For personal use only in study and research; not for commercial use. Nur für den pers?nlichen für Studien, Forschung, zu kommerziellen Zwecken verw endet werden. Pour l 'étude et la recherche uniquement à des fins personnelles; pas à des fins commerciales. только для людей, которые используются для обучения, исследований и не должны

использоваться в коммерческих целях.

以下无正文

不得用于商业用途




友情链接: