基于ARM的嵌入式系统设计研究

时间:2022-09-10 02:06:46

基于ARM的嵌入式系统设计研究

1 嵌入式系统

嵌入式系统是一种具有专业用途的计算机系统,系统以计算机技术作为技术支撑,软件和硬件可以根据实际的应用需求进行设置,适用于对系统功能、稳定性、成本、占用空间以及功耗有较高要求的条件。为了追求系统的高性能,嵌入式系统的软件和硬件都要尽可能的设计为最佳性能,减少冗余部分,在有限的空间,有限的硅片上,实现软硬件的性能最大化。32位ARM嵌入式处理器的性能高于同类,且其能耗很低,其可编程性和可操作性,让系统软件的设计更加方便,能够在现有的硬件基础上,根据所需自由设计软件。目前,32位ARM嵌入式处理器已经在电子产品、无线通信以及网络通信等各个领域得到了非常普遍的应用。嵌入式Linux是一种小型操作系统,其内核经过特殊剪裁,系统模块也是对应功能要求而定制的。嵌入式Linux具有以下特点:内核相对很小,仅占用不到1M的空间;同时支持包括X86在内的三十多种8bit-64bit的MPU和MCU;支持ROM等各类存储器;可以多任务多进程同时进行,具备一定的实时性;全面支持通信网络,具有良好的软件开放性,Linux主机中的软件应用可以自由导入到嵌入式Linux系统中;嵌入式Linux经过多年研发,具备坚实的技术支撑。基于ARM的嵌入式Linux系统,硬件方面主要包括32位ARM内核处理器,存储器以及相关的外部接口和设备,在设计过程中,最需要注意的是ARM选型、Bootloader开发、系统初始化、操作系统固化以及存储器管理等。

2 ARM选型

目前,能够适用于嵌入式系统设计的ARM微处理器存在许多系列,ARM7系列、ARM9系列、ARM9E系列、ARM10E系列、SecurCore系列、Intel的Xscale以及StrongARM。前四个系列是通用型处理器,每一个系列的处理器具备独特的功能和性能,能够应用于各个领域,满足对应的需求。SecurCore系列的处理器的安全性很高,可用于保密程度高的情况。ARM微处理器的内核结构各式各样,能够在不同领域和条件下发挥作用,用户需要根据自己的实际需求,来选择最合适的芯片。例如,如果用户想要在系统中使用标准Linux等操作系统来更方便快捷的进行软件设计,那么最佳的选择是ARM720T以上,并且具备MMU功能的ARM芯片。此外,诸如uCLinux一类的不需要MMU功能支持的操作系统已经研发出来,并在不具备MMU功能的微处理器上获得了成功应用,而且其系统稳定性和功能,都具有较高水平。

3 Bootloader开发

Bootloader是嵌入式系统的芯片引导程序,由开发人员应用汇编语言设计出来。Bootloader固化在目标板的ROM中,其功能是启动ROM或RAM中的嵌入式软件程序。在CPU支持的情况下,bootloader在开发时可以在RAM中运行。在基于ARM的嵌入式系统设计过程中,需要结合硬件目标板的相关特性来设计相应的bootloader程序,从而达到初始化处理器和相关硬件的目的。初始化处理器是通过bootloader对处理器中的配置寄存器进行初始化,这很容易实现,例如,在使用ARM处理器的MMU时,只需通过bootloader调用控制命令打开MMU。对于嵌入式系统必备硬件的初始化,一般是对系统内存、Flash ROM以及终端控制器的初始化,此外,从主机下载系统映像需要在硬件板和主机之间通过接口设备连接,系统的接口设备初始化也是由bootloader完成的。例如,一些嵌入式系统硬件板是通过以太网从主机下载系统映像文件的,在这里,bootloader就会使用以太网卡驱动程序来对相关硬件进行初始化,然后再与bootloader客户端程序进行连接,下载映像文件。

4 系统初始化

基于ARM的嵌入式系统芯片大多属于复杂的片上系统,这种系统的硬件部分很多都是可以自由配置的,其工作状态和参数属性也是由一定的软件进行设置的。用户在使用应用程序前,需要首先使用对应的启动代码对系统硬件进行初始化,这种初始化任务可由bootloader完成。在系统的初始化中,主要包括三个部分。其一,初始化中断向量表。ARM处理器对中中断向量表的位置有特殊要求,一般来说必须在从0地址开始的32字节的空间内。在ARM处理器的工作过程中,每当发生一个中断,ARM处理器都会将PC指针置为向量表中对应的中断类型的地址值。由于每个中断都只占据向量表一个字节的存储器空间,所以只能存放一条ARM指令,在一般情况下,向量表中并不直接存放ARM指令,而是跳转指令,程序可以由向量表在指令作用下跳转到寄存器的其他地址,然后再进行中断处理。其二,初始化堆栈。ARM具有7种不同的执行状态,每一种状态对应的堆栈指针寄存器都是相互独立的。所以,在程序中调整ARM执行状态需要给每个寄存器定义堆栈地址。寄存器堆栈地址的定义很简单,只要将处理器执行状态轮流切换,每个状态分别赋值。其三,改变处理器模式。ARM处理器有7种模式,在初始化时,需要先在6权模式下进行相关的修改,最后再切换到用户模式。

5 下载系统映像

系统映像是通过bootloader从主机载入到目标板上的。系统映像文件的下载位置是通过bootloader的指令代码或者交互shell界面来确定的,通过目标端的bootloader程序得到接收映像文件的程序,而主机端的程序则负责发送映像文件数据。这里一般可以通过串口和以太网卡等多种方式进行映像文件的传输。在成功接收系统映像后,如果具有相应的硬件模块,bootloader还能将映像写入到flash中。然后根据相应的启动地址,bootloader就能够将下载完毕的系统映像文件启动,并将程序流程转入主应用程序中。

6 存储器管理

嵌入式系统的软件平台是由系统引导程序、嵌入式操作系统内核以及文件系统三个部分构成的。软件平台固化在Flash中,对于Flash地址空间的分区,一般分为三个,分别用于存放bootloader、Linux内核以及文件系统。Bootloader的代码量相对较小,但也是非常重要的。嵌入式操作系统内核则是嵌入式系统的管理中心,负责各类任务和进程的切换和运行。文件系统则是嵌入式系统软件平台占用存储空间最大的,负责存储系统配置文件、系统程序、用户程序以及相关的驱动等。此外,如果嵌入式系统的结构较为复杂,就可能出现各种存储类型的接口,这些接口不能直接发挥作用,还需要一定的配置。就算是同类型的存储器,也需要根据访问速度来设置不同的时序配置。例如Flash和SRAM属于静态存储器类型,其端口可以共用,而DRAM则具有动态刷新和地址线复用的特性,需要配备专用存储器端口。

嵌入式系统作为计算机技术应用的一种,在社会的很多领域都能够得到有效的应用。对于嵌入式系统的设计也一直受到相关人士的关注。文章探讨了基于ARM的嵌入式系统的设计方法,以此为参考,再设置一定的硬件和程序即可发挥效用。

参考文献:

[1]黄克彬 叶梧 冯穗力.基于ARM-ucLinux嵌入式系统启动引导的实现[J].电子技术应用,2014,(3):23-24.

[2]费浙平.基于ARM的嵌入式系统程序开发要点(二)――系统的初始化过程{J].单片机与嵌入式系统应用,2013,(9):16-17.

[3]乐燕芬.ARM嵌入式系统启动过程分析及实现[J].仪器仪表学报,2015,27(z3):56-57.

作者简介:

杨伟超(1988-)男,湖南长沙,硕士研究生,西华师范大学电子信息工程学院,研究方向:物联网,人工智能

西华师范大学基本科研业务费专项资金资助,项目编号416341

上一篇:矿车车厢FEM分析与优化设计 下一篇:复杂区域高档普采工作面增加储量技术研究