目前,嵌入式系统如今已经被广泛应用到了各个领域。基于ARM内核的微处理器,被使用在Linux嵌入式系统中,具有内核精简、代码开放、易于移植等优点,因而应该广泛。本文介绍了基于ARM的嵌入式Linux系统的概念和软硬件组成,并对系统平台的开发构建进行了一定的探讨。
1.嵌入式系统概念
嵌入式系统(Embedded system),指以应用为中心,以计算机技术为基础,软件硬件可裁剪,同时能适应应用系统对功能、可靠性、成本、体积以及功耗严格要求的专用计算机系统。嵌入式系统与个人计算机这样的通用计算机系统不同,由于其执行的任务常常是预先定义下的任务,因而设计人员可以通过优化系统,减小尺寸降低成本。
2.嵌入式系统组成
通常情况下,嵌入式系统装置由嵌入式计算机系统和执行装置组成。嵌入式计算机系统在整个嵌入式系统中担负着核心的作用,缺少了嵌入式计算机系统,那么嵌入式系统也就无从谈起。具体来说,嵌入式计算机系统又有硬件层、中间层、系统软件层和应用软件层组成。执行装置是嵌入式系统的任务执行设备,也称为被控对象,它的主要作用是在接收到嵌入式计算机系统发出的控制命令之后,准确地对所规定的操作或任务予以执行。执行装置既可以很简单,也可以很复杂,从手机上的一个微小型的电机到具有一定智能的机器人等,都可以看作是嵌入式系统的执行装置。
2.1 硬件层
2.1.1 嵌入式微处理器
嵌入式微处理器是构建嵌入式硬件平台的核心,嵌入式微处理器与通用CPU不同,它是将有通用CPU卡板完成的任务都集成在了芯片内部,因此,使得处理系统更加微小,但却具有更高的效率和可靠性。
2.1.2 存储器
存储器是嵌入式系统存放和执行代码的装置,包含Cache、主存和辅助存储器。
Cache是一种存储器阵列,位置在主存和嵌入式微处理器内核之间,具有容量小、速度快的特点,存放的内容近期微处理器经常调用的数据和代码。由于微处理器多从Cache中读取数据,就使得主存的读取程序免去了,因而有利于提升读取速度,改善了系统的性能。
主存是微处理系统的主要存储设施,是用来存放系统和用户的程序及数据的。它的位置可以在微处理器的内部或外部,容量为256KB~1GB不等,当前随着处理任务的日益繁多,主存有不断增大的趋势。目前常用作主存的存储器有:ROM类的NOR Flash、EPROM和PROM和RAM类的SRAM、DRAM和SDRAM等。其中又以NOR Flash类最为常用。
辅助存储器一般是用来存放需要长期存储的较大数据或信息的,如大型文件、视频音频资料等,由于容量大,其读写速度一般较慢。目前常用的辅助存储设备有硬盘、SD卡、TF卡等。
2.2 中间层
中间层是位于硬件层与软件层之间的部分,也有称之为硬件抽象层(Hardware Abstract Layer,HAL)或板级支持包(Board Support Package,BSP)的,它的作用在于分离开系统上层软件与底层硬件,从而使研发人员不需要底层硬件提供支持就可以对系统的底层驱动程序进行开发。中间层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
2.3 系统软件层
系统软件层是微处理器得以运行的软件支持系统,主要由实时多任务操作系统(Real-time Operation System,RTOS)、图形用户接口(Graphic User Interface,GUI)、文件系统、网络系统及通用组件模块组成。其中RTOS起着嵌入式应用软件的基础和开发平台的作用。
3.嵌入式系统开发平台的选择
熟悉了嵌入式系统的基本组成,我们就可以依据其组成组建嵌入式系统的开发平台。
3.1 硬件平台的选择
为嵌入式系统挑选合适的硬件平台是一件很复杂的工作,对于ARM微处理器来说,由于ARM微处理器有多达十几种的内核结构,如ARM处理器就包含ARM7系列,ARM9系列,ARM9E系列,ARM10E系列,SecurCore系列,Inter的Xscale,Inter的StrongARM ARM11系列等,因此,要想组建合适的微处理器系统就需要对这些系列有一个清晰的认识,以便根据需要选择不同的处理器类型。如ARM7系列微处理器的典型处理速度为0.9MIPS/MHz,ARM9系列微处理器的典型处理速度为1.1MIPS/MHz,而SecurCore系列则是专门为安全要求较高的应用而设计的。如果从其一般适应性来考虑,建议可以选用ARM公司提供的ARM7TDMI RISC处理器核。因为它具有高性能、低功耗的特点,比较适用手持设备、网络通信的应用。
3.2 软件平台的选择
嵌入式系统软件的主要作用在于代码编程、交叉编译、交叉链接、重定位、下载到目标板和调试等,因此,软件平台的选用也要从这些方面来考虑。
3.2.1 操作系统的选择
目前,嵌入式Linux系统方面主要有三类产品。分别是:第一类,专门为Linux的嵌入式应用而做的,其考虑的主要是Linux和硬件的对接问题,既如何让Linux更小、更容易地嵌入到更高性能的硬件中去。第二类是专门为Linux的实时特性设计的产品,主要考虑的是如何将Linux应用到一些关键场所的控制系统中去,也就是将其开发成硬实时系统。第三类的产品是将上述两种方案结合起来的方案,暨既可以充当嵌入式系统解决方案,也可以作为实时性系统方案而发挥出监视和控制的作用。由于Linux系统具有不同的使用场合,因此,在组建自己的嵌入式系统的时候,一定要结合自己的实际情况,选择合适的Linux操作系统方案,对于大多数用户来说,最好还是选择较普通的嵌入式Linux系统,不仅方便使用和维护,也为今后系统的升级和软硬件的更换提供了便利。
3.2.2 编程语言的选择
编程语言是处理系统的基本功能,在选择编程语言的时候应该注意以下两个方面。(1)通用性:对于微处理器来说,大多都有自己专用的编程语言,但也存在着相同系列编程语言通用的情况,如嵌入式ARM处理器系列就有着良好的支持,通用性较好,所以,在选择编程语言的时候,应尽可能选择通用性强的高级编程语言,以方便在不同场合的使用。(2)可移植性程度:如果汇编语言可移植性程度较低,同样会导致汇编语言只能在一个微处理器上使用,而无法移植到其他微处理器上使用的情况,由此,将给微处理器系统工作带来较大的不便,所以,应该选择可移植程度较好的汇编语言,以方便在各种处理器上使用。
当前,嵌入式系统开发过程中使用的编程高级语言主要有Ada、C/C++、Modula-2和Java等。Ada语言具有定义严格,易读易懂,及较丰富的库程序支持的特点,因此,目前这种语言在国防、航空、航天等相关领域有较广泛的引用。C语言是目前最通用的语言,几乎所有的编程语言都使用的是该语言,因而通用性强,便于移植。C++是一种面向对象的编程语言,目前在嵌入式系统设计中也得到了广泛的应用。Modula-2目前主要应用在教学科研方面。Java语言是Sun Microsystems公司于1995年5月推出的,具有卓越的通用性、高效性、平台移植性和安全性,目前已经被广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网之中,并且未来拥有良好的发展势头。
3.2.3 软件组件的选择
目前系统应用软件有些是免费的,但也有许多是需要收费的,对于收费软件来说,虽然费用高昂,但大都经过严格测试,具有较强的可靠性,而免费软件组件由于大多经过了长时期的使用测试,因而可靠性也较高,这就需要平台组建人员根据实际需要,选择相应的收费或免费软件,以发挥嵌入式系统的最佳性能。
4.总结
随着微处理系统的不断发展,基于ARM的Linux嵌入式系统已经被广泛应用到了各个领域,并由于其强大的生命力和使用价值,受到了越来越多研究机构的重视,纷纷研究和开发新的系统平台,因此,相信在今后,基于ARM的Linux嵌入式系统一定会更加发展壮大,为我们的生产和生活带来更大的便利。