摘要:首要剖析嵌入式Linux体系运用开发的特色;概述其开发进程和所面对的应战;论述嵌入式Linux的开展和运用远景。
关键词:嵌入式Linux 操作体系 运用远景
linux操作体系文章专题:linux操作体系详解(linux不再难明)
引 言
近年来,跟着核算技能、通讯技能的飞速开展,特别是互联网的敏捷遍及和3C(核算机、通讯、消费电子)合一的加快,微型化和专业化成为开展的新趋势,
嵌入式产品成为信息产业的干流。Linux从1991年面世到现在,短短的十几年时刻现已开展成为功用强壮、规划完善的操作体系之一;可运转在X86、 Alpha、Sparc、MIPS、PPC、Motorola、NEC、ARM等多种硬件渠道,并且敞开源代码,能够定制;可与各种传统的商业操作体系分庭反抗。越来越多的企业和研制组织都转向嵌入式Linux的开发和研讨上,在新式的嵌入式操作体系范畴内也获得了飞速开展。
1 嵌入式Linux的特色
嵌入式体系是以运用为中心,以核算机为根底,软硬件可裁剪,适用于体系对功用、可靠性、本钱、功耗严格要求的专用核算机体系,体系结构见图1。实时性是嵌入式体系的根本要求,其次,还要求代码小,速度快,可靠性高。嵌入式Linux(Embedded Linux)是指对Linux经过裁剪小型化后,可固化在存储器或单片机中,运用于特定嵌入式场合的专用Linux操作体系。嵌入式Linux的开发和研讨现已成为现在操作体系范畴的一个热门。与其它嵌入式操作体系比较(详见表1),Linux的特色如下。 表1 专用嵌入式实时操作体系与嵌入式Linux的比较 专用嵌入式实时操作体系嵌入式Linux操作体系 版权费每出产一件产品需交纳一份版权费免费 购买费用数十万元(RMB)免费 技能支撑由开发商独家供给有限的技能支撑全世界的自由软件开发者供给支撑 网络特性另加数十万元(RMB)购买免费且功用优异 软件移值难(因为是封闭体系)易,代码敞开(有许多运用软件支撑) 运用产品开发周期长,因为可参阅的代码有限短,新产品上市敏捷,因为有许多揭露的代码能够参阅和移植 实时功用好须改善,可用PT_Linux等模块补偿 安稳性较好较好,但在高功用体系中须改善 榜首,Linux体系是层次结构且内核彻底敞开。Linux是由许多体积小且功用高的微内核体系组成。在内核代码彻底敞开的前提下,不同范畴和不同层次的用户能够依据自己的运用需求方便地对内核进行改造,低本钱地规划和开宣布满意自己需求的嵌入式体系。 第二,强壮的网络支撑功用。Linux诞生于因特网年代并具有Unix的特性,确保了它支撑一切规范因特网协议,并且能够运用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。 此外,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)或DoM(Disk on Module)代替磁盘等。在运用电池的体系中,它还要完结低功耗,延伸电池运用时刻的功用。 Linux作为嵌入式操作体系是彻底可行的。因为Linux供给了完结嵌入功用的根本内核和所需求的一切用户界面,能处理嵌入式使命和用户界面。将 Linux看作是接连的统一体,从一个具有内存办理、使命切换和时刻服务及其它分拆的微内核到完好的服务器,支撑一切的文件体系和网络服务。Linux作为嵌入式体系,是一个带有许多优势的新成员。它对许多CPU和硬件渠道都是易移植、安稳、功用强壮、易于开发的。 嵌入式Linux体系需求下面三个根本元素:体系引导东西(用于机器加电后的体系定位引导)、Linux微内核(内存办理、 程序办理)、初始化进程。但假如要它成为完好的操作体系并且持续坚持小型化,还必须加上硬件驱动程序、硬件接口程序和运用程序组。 Linux是根据GNU的C编译器,作为GNU东西链的一部分,与gdb源调试器一同作业的。它供给了开发嵌入式Linux体系的一切软件东西。
2.2 体系硬件渠道 在挑选硬件时,常因为缺少完好或精确的信息而使硬件挑选成为杂乱且困难的作业。硬件开发本钱常是咱们很关怀的。当考虑硬件本钱时,需求考虑产品的整个本钱而不仅是CPU的本钱。因为适宜的CPU,一旦加上总线逻辑和延时电路使之与外设一同作业,硬件体系就可能变得十分贵重。假如要寻觅嵌入式软件体系,那么,应首要确认硬件渠道,即确认微处理器CPU的类型。 现在比较盛行的硬件渠道有Intel公司的StrongARM 系列,Motorola公司的DragonBall系列,NEC公司的VR系列,Hitachi公司的SH3、SH4系列等等。选定硬件渠道前,首要要确认体系的运用功用和所需求的速度,并制定好外接设备和接口规范。这样才干精确地定位所需求的硬件计划,得到性价比最高的体系。
3 嵌入式Linux体系开发方法
嵌入式体系一般为一个资源受限的体系。直接在嵌入式体系的硬件渠道上编写软件比较困难,有时乃至是不可能的。一般流程见图2。现在,一般选用的办法是,先在通用核算机上编写程序,然后,经过穿插编译,生成方针渠道上可运转的二进制代码格局,最终下载到方针渠道上的特定方位上运转,具体步骤如下。 榜首步,树立嵌入式Linux穿插开发环境。现在,常用的穿插开发环境首要有敞开和商业两种类型。敞开的穿插开发环境的典型代表是GNU东西链,现在现已能够支撑x86、ARM、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是穿插编译器,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调试端口。运用适宜的软件东西与这些调试端口进行衔接,能够获得与%&&&&&%E相似的调试作用。 ② 软件调试。在嵌入式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自身的使命以及Linux内核自身作为一个优先级最低的使命,而实时使命作为优先级最高的使命,即在实时使命存在的情况下运转实时使命,不然就运转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手机、寻呼机、车载盒以及工业操控等智能信息产品中。与PC比较,手持设备、IA设备以及信息家电的商场容量要高得多,而Linux嵌入式体系的强壮的生命力和运用价值,使越来越多的企业和高校表现出对它极大的研制热心。蓝点软件公司、博利思公司、共创软件联盟、中科红旗等公司都已将嵌入式体系的开发作为自己的首要开展方向之一。 在嵌入式体系的运用中,Linux嵌入式操作体系所具有的技能优势和共同的开发方法给业界以新异。有理由信任,它能成为Internet年代嵌入式操作体系中的最强音。