张童菲 辽宁锦州渤海大学信息科学与技术学院
基于ARM的嵌入式Linux操作系统移植
张童菲 辽宁锦州渤海大学信息科学与技术学院
这些年以来,随着计算机科技以及电子技术的突飞猛进,尤其计算机硬与电子以及通信技术的相互结合,这是社会进步以及发展的必然趋势。目前信息产业的市场上最为流行的是嵌入式产品。本文主要是介绍了基于ARM的嵌入式Linux操作系统移植,同时根据实际的例子介绍了具体的实现流程,此外对交叉开发环境的创建过程进行了阐述。该课题的研究可以给开发其他的嵌入式操作系统提供一定的参考意义。
ARM 嵌入式 Linux
现今社会中,基于在嵌入式系统里基于ARM微核的嵌入式处理器已经成为市场主流。随着基于ARM的嵌入式Linux操作系统是目前信息市场的主流,也是该领域研究的重点问题。目前的市场上出现了各式各样的嵌入式操作系统,比如有来自微软的Windows CE以及来自Tor-nado的VxWork。在这些嵌入式的操作系统中,选择操作系均是Linux,其原因在于Linux可以将源代码公开,其他人能够在该代码的基础上,从而将其进行移植,运用到所需要的平台系统中。ARM Linux所用到的处理器有ARM720T、ARM610、ARM902T、ARM710等,该处理器的特点是里面都有MMU,也就是内存管理单元,对于那些没有MMU的中央处理器,通常选择的操作系统是μClinux。
到目前为止,嵌入式系统的发展经历了几十年,同时嵌入式的阶段具体能够分为四个。进入九十年代以后,主要的发展技术是数字化技术,该项技术的核心是结合软件以及计算机,该项技术在军事,通信以及交通等众多领域中都有涉足,同时还应用到了艺术,以及家电、社会文化等众多的领域中,从而开创了数字化技术的浪潮。由于多媒体技术的飞速发展,另外将通信,消费电子以及计算机结合一起而形成的技术在现今社会运用很普遍,因此嵌入式技术迅速引起了人们的关注与重视。
从嵌入式技术历程能够发现,第一阶段存在的形式是可编程控制器形式,该形式的核心是单芯片,另外所具备的功能包括了指示设备、监测以及伺服等。该系统在很多的工业方面都可以应用,有时如果没有操作系统,那么控制部分就直接通过使用汇编语言进行编程实现,当结束运行后内存就会被清空。
嵌入式系统第一发展阶段特点是功能以及结构方面都比较单一,而且处理的效率不高,另外存储的容量也小,用户接口不存在。因为该系统成本低,而且易于使用。所以在很多的工业领域中都比较受欢迎,然而由于社会的不断进步,工业领域不断对存储容量提出了更高的要求,而且已经无法满足新兴的信息家电行业。嵌入式系统的第二阶段存在的形式是简单易用,该系统的特点是有着多种种类,同时通用性不高,开销比较小,用户界面体验不好,应用的场合大部分是集中于监控应用程序以及系统负载的控制方面。
第三阶段的存在形式是嵌入式操作系统。该阶段的系统的特点是可以运行在多种类型的微处理器中,有着很好的兼容性,同时扩展性好,系统效率高,有着很多的应用程序的接口,开发应用程序有着丰富的应用软件。
第四阶段嵌入式系统的发展目前正在如火如荼地进行。现今很多的嵌入式系统都是独立在因特网外,随着信息技术以及因特网技术、工业控制技术的飞速发展,嵌入式设备结合因特网,预示着嵌入式技术的到来。
应用比较多的ARM嵌入式系统硬件平台通常情况下的组成成分具体涉及到了存储器、外部接口以及ARM微内核处理器。CPU是嵌入式系统的核心,所选择的型号是ARMll36JF-S,这是ARMll系列的第一代产品,能够兼容ARMV6体系结构。APdlV6体系结构的应用场合是网络、下一代消费电子、车电子产品、无线等行业。APdlV6的特点是低功耗以及媒体处理能力,这些都是APdlV6应用于消费电子以及无线领域的因素,在网络的应用中高数据带宽应用比较广泛。AF311 l开发的目标是为了达到功耗低、处理器的高性能以及成本低的目的。微处理器的体系结构中对编程模型、处理器的指令集以及内存资源、处理器接口间的联系进行了很好的定义。
在软件方面,ARMll微内核的体系结构取得了很大的进步,ARMll微内核包含了很多的媒体处理指令从而将视频以及音频的应用进行加速,操作系统的性能得到了很大的提高,这归功于内存系统体系结构的刷新。另外还涉及到了新的指令进而将中断响应以及实时性能提高。除此之外,自从很多应用都配置处理器,比如ARM核需要多个或者DSP系统。目前在与处理器实现数据共享方面,比较容易实现,从非ARM处理器到应用程序的移植。ARMIl粗茶了可综合性内核系列的形成,使得SoC的集成更容易实现,从而提供半定制内核给性能高的应用。ARM公司为ARMll处理器提供了整套的IP支持,具体包含了ARM PrimeCell IP库。
3.1 Linux交叉编译环境的建立
在移植之前要先建立ARM的交叉编译环境,环境建立的意义是可以在将PC机当作宿主机进行目标开发板的调试中有着重要的意义。ARM的交叉编译环境的建立的应用场合有glibc、gcc以及binutils。而作为处理二进制文件的一种工具,binu-tils包括的内容涉及到了辅助开发工具,比如段信息、nm列出符号表。以及objdump等。在开发嵌入式的初始阶段,特别是操作系统的移植中都有着重要的意义。作为编译工具的一种,gcc主要的使用场合是内核代码的编译,该工具可以用于c语言以及汇编语言的编译,从而形成ARM代码;glibc是链接以及运行库,glibc的编译需要提供编译器给已经做好的ARM交叉编译器,不然会导致所编译出来的glibc代码会有ARM以及x86代码。全部的工具都能够通过源码的下载而完成自行编译,最后将其安装在宿主机中,从而完成ARM的交叉编译环境的建立。
3.2 配置、剪裁以及内核编译
现今市场上用的Linx内核是比较标准的,可以适用于资源庞大的嵌入式系统。所以在嵌入式系统中能够移植入Linx内核,这个移植的过程需要按照目标平台的具体情况对Linux内核完成配置以及剪裁。当这个前奏完成后,重新对内核进行编译,从而形成内核映象文件。按照嵌入式系统的相关功能概念,当设定内核的时候一些没必要的功能模块或者是选项可以删除。还有一种方式可以代替,比如显卡的输出可以用串行端口代替,从而能够避免内核浪费42KB空间。此外,并口,这个意思也就是所谓的软驱、即插即用设备、鼠标以及光驱等驱动程序,都能够将这些裁减。当裁减流程进行完后,就要完成内核的配置工作。配置内核的命令是通过/usrs/ srcs/linux中的“make config”实现。需要配置的选项具体为:处理器类型的选择、RAM disk的选择、支持板级选择、以及文件系统的支持。当完成了配置工作后,下一步工作就是编译内核。内核编译可以分为两种方式:首先是压缩方式,其次是非压缩方式。运用比较多是用压缩方式编译,主要是由于嵌入式的需要。压缩方式中,FLASH中会先存放内核映象文件,该文件事先是编译好的,当该文件启动的时候,通过引导程序从而FLASH中的内核加到RAM中进行解压,下一步运行。压缩方式编译所形成的内核映象文件不是很大,在嵌入式系统中运用比较多。
3.3 引导内核启动流程
本文介绍的嵌入系统里是不存在硬盘设备的,因此FLASH存储器中存放的是根盘文件系统以及ARM Linux内核,所以编写ARM Linux中引导程序的时候一定要按照目标平台实现。在目标平台里,0x0C000000到0x0CFFFFFF是FLASH的地址。区域划分FLASH,启动代码存放bootloader的空间地址是0x0B000000到0x0CFFFFFF,而0x0C100000到0x0C2FFFFF的空间地址主要是进行内核映象文件的存放,根盘文件系统存储的地址是从0x0C300000到0x0CFFFFFF之间。
结束语:基于ARM的嵌入式操作系统移植流程主要包括了两个:首先是把内核移植到ARM的平台中,从而确保内核能够在工作平台中运行起来,这个过程包括了引导代码的启动。其次当内核成功运行的时候对外设驱动以及应用程序进行移植。本文重点分析了嵌入式系统的发展历程,以及Linux是如何移植到ARM的嵌入式系统的流程进行了介绍,从而通过掌握本文介绍的移植过程对嵌入式系统的开发有着很重要的意义,同时能够给其他人提供技术参考,另外还能够在一定程度上简单化嵌入式产品的开发难度以及缩短开发周期。
[1]刘名博,邓中亮.基于ARM的嵌入式Linux操作系统移植的研究[J].计算机系统应用,2006,15(11):87-88
[2]张永强,田紫君,申利永,等.基于ARM的HMS30C7202平台的嵌入式Linux移植[J].微计算机信息,2005,21(4):125-126
[3]Yaghmour K,Masters J,Ben- G. Building embedded linux systems, 2nd edition[M]. O'Reilly & Associates,Inc. 2015
[4]Moon S P,Kim J W,Bae K H, et al. Embedded Linux implementation on a commercial digital TV system[J]. IEEE Transactions on Consumer Electronics,2014,49(4):1402-1407
[5]Winter J. Trusted computing building blocks for embedded linux-based ARM trustzone platforms[C]// ACM Workshop on Scalable Trusted ComputingStc 2008,Alexandria, Va,Usa, October. DBLP, 2015:21-30