第2章ARM体系结构_第1页
第2章ARM体系结构_第2页
第2章ARM体系结构_第3页
第2章ARM体系结构_第4页
第2章ARM体系结构_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、xupt 嵌入式系统嵌入式系统 原理与应用原理与应用第第2章章 arm体系结构体系结构目目 录录v2.1 arm体系结构体系结构v2.2 arm工作状态和工作模式工作状态和工作模式v2.3 arm状态下寄存器组织状态下寄存器组织v2.4 tumb状态下寄存器组织状态下寄存器组织v2.5 arm存储器组织存储器组织v2.6 异常异常22.1 arm体系结构体系结构v arm内核以其高性能、低功耗等特点,被公认为业界领先内核以其高性能、低功耗等特点,被公认为业界领先的的32位嵌入式位嵌入式risc微处理器核,得到了越来越多半导体微处理器核,得到了越来越多半导体生产厂商的青睐。以生产厂商的青睐。以a

2、rm核为嵌入式微处理器的核心,配核为嵌入式微处理器的核心,配以各厂家根据自己处理器的应用领域定位不同而设计的独以各厂家根据自己处理器的应用领域定位不同而设计的独有的片内有的片内i/o,形成了各种各样可供不同应用领域选择使,形成了各种各样可供不同应用领域选择使用的微处理器芯片,因此,了解用的微处理器芯片,因此,了解arm内核是进行嵌入式微内核是进行嵌入式微处理器芯片选择、操作系统移植、应用软件开发以及硬件处理器芯片选择、操作系统移植、应用软件开发以及硬件系统设计与调试等工作的基础。本章围绕系统设计与调试等工作的基础。本章围绕arm7tdmi核核,从应用系统开发人员的角度,对,从应用系统开发人员的

3、角度,对arm的内核结构、工作的内核结构、工作状态、工作模式以及应用程序可访问的寄存器结构、存储状态、工作模式以及应用程序可访问的寄存器结构、存储器组织等进行详细介绍,为后续各章节的学习打下坚实的器组织等进行详细介绍,为后续各章节的学习打下坚实的基础。基础。 32.1 arm体系结构体系结构v 2.1 arm核及基于核及基于arm核的芯片结构核的芯片结构v 目前流行的目前流行的arm处理器处理器ip核有核有十十多个,获得多个,获得arm公司授权的半导体制造公司授权的半导体制造厂商多大厂商多大70多家,不可能也没有必要对每个多家,不可能也没有必要对每个ip核、每种核、每种arm芯片进行一芯片进行

4、一一介绍。考虑到一介绍。考虑到arm7tmdi是目前使用最广泛的是目前使用最广泛的32位嵌入式位嵌入式risc处处理器理器ip核,且其指令系统与核,且其指令系统与arm9系列、系列、arm9e系列和系列和arm10e系列系列兼容,本书将重点介绍兼容,本书将重点介绍arm7tmdi内核结构(本章介绍)以及飞利浦半内核结构(本章介绍)以及飞利浦半导体公司(导体公司(nxp恩智浦半导体)使用该恩智浦半导体)使用该ip核设计生产的核设计生产的lpc2000系列系列arm芯片(第芯片(第5章和第章和第6章)。读者在实际工作中涉及到其它章)。读者在实际工作中涉及到其它arm微处微处理器理器ip核及芯片时,

5、可参阅相关书籍或技术手册。核及芯片时,可参阅相关书籍或技术手册。v arm7tdmi是是arm公司最早为业界普遍认可且得到了广泛应用的核,公司最早为业界普遍认可且得到了广泛应用的核,特别是在手机和特别是在手机和pda应用中。随着应用中。随着arm技术的发展,它已是目前最低端技术的发展,它已是目前最低端的的arm核。核。42.1 arm体系结构体系结构v2.1.1 arm内核内核v不同版本的不同版本的arm核其内部结构是有所区别的,但核其内部结构是有所区别的,但是其数据流模型基本上是一致的。从应用系统开发是其数据流模型基本上是一致的。从应用系统开发者的角度来看,可以抛开处理器内部具体硬件结构者的

6、角度来看,可以抛开处理器内部具体硬件结构的细节,而把的细节,而把arm内核看作是由总线连接的各个内核看作是由总线连接的各个功能单元组成的集合,功能单元组成的集合,arm内核功能的实现最终内核功能的实现最终体现为各种数据在不同部件之间的流动。图体现为各种数据在不同部件之间的流动。图2.1为为arm7tdmi内核的内部结构框图。内核的内部结构框图。52.1 arm体系结构体系结构62.1 arm体系结构体系结构v可以看出,可以看出,arm7tdmi核内部各组成部件之间核内部各组成部件之间通过通过5条相互独立的片内总线连接起来,这条相互独立的片内总线连接起来,这5条总条总线分别是线分别是pc总线,地

7、址自增总线,总线,地址自增总线,alu总线,总线,a总线和总线和b总线。总线。arm7tdmi有有37个个32位寄存器位寄存器,有,有6个状态寄存器。个状态寄存器。 72.1 arm体系结构体系结构v2.1.2 基于基于arm核的芯片结构核的芯片结构v半导体厂商从半导体厂商从arm公司购买其设计的公司购买其设计的arm微处理器核,根据各自不同的应用领域,加微处理器核,根据各自不同的应用领域,加入适当的外围电路(片内入适当的外围电路(片内i/o),从而形成自己的),从而形成自己的arm微处理器芯片。图微处理器芯片。图2.2为一个典为一个典型的使用型的使用arm核的微处理器芯片内部结构图。可以看出

8、,核的微处理器芯片内部结构图。可以看出,arm芯片的核心为芯片的核心为arm处理处理器核,通过片内总线将器核,通过片内总线将arm微处理器、控制器(微处理器、控制器(dma控制器、总线仲裁控制器等)和控制器、总线仲裁控制器等)和各种片内各种片内i/o(存储器、键盘、(存储器、键盘、urat等)连接到一起。等)连接到一起。varm芯片内部广泛采用芯片内部广泛采用amba(advanced microprocessor bus architecture)总线结构。最初的)总线结构。最初的amba总线包含总线包含arm系统总线系统总线asb(advanced system bus) 和和arm外设总

9、线外设总线apb(advanced peripheral bus),之后又提出一种称为),之后又提出一种称为arm高性能总线高性能总线ahb(advanced high-performance bus)。)。ahb直接连接到直接连接到微处理器核,它是为高速传输而优化设计的,支持流水线技术、突发传输、多总线控制微处理器核,它是为高速传输而优化设计的,支持流水线技术、突发传输、多总线控制器等高性能总线特性,用于连接性能高速的片内器等高性能总线特性,用于连接性能高速的片内i/o。apb假设外设工作在主从方式,假设外设工作在主从方式,且不支持流水线操作,以简化外设和总线控制器中所需的逻辑,且不支持流水

10、线操作,以简化外设和总线控制器中所需的逻辑,apb用于连接低速片内用于连接低速片内i/o。 82.1 arm体系结构体系结构92.2 arm工作状态和工作模式工作状态和工作模式 v2.2 arm工作状态和工作模式工作状态和工作模式v2.2.1 arm处理器工作状态处理器工作状态v从编程的角度看,从编程的角度看,arm处理器有两种工作状态:处理器有两种工作状态:32位的位的arm状态和状态和16位的位的thumb状态。并且状态。并且arm可以在两种状态之间进行几乎零开销的切换可以在两种状态之间进行几乎零开销的切换。处理器工作状态的转变不影响处理器的工作模式。处理器工作状态的转变不影响处理器的工作

11、模式(arm处理器有处理器有7中工作模式,详见下节)和相中工作模式,详见下节)和相应寄存器中的内容。应寄存器中的内容。102.2 arm工作状态和工作模式工作状态和工作模式varm状态:处理器执行状态:处理器执行32位的字对齐的位的字对齐的arm指令。指令。arm处理器在处理器在最开始执行代码时处于最开始执行代码时处于arm状态;当操作数寄存器的状态位状态;当操作数寄存器的状态位(位位0)为为1时,执行时,执行bx指令可使微处理器从指令可使微处理器从arm状态切换到状态切换到thumb状态;状态;当处理器处于当处理器处于thumb状态时发生异常状态时发生异常(如如irq、fiq、undef、a

12、bort、swi等等),则异常处理返回时,自动切换到,则异常处理返回时,自动切换到arm状态。状态。vthumb状态:处理器执行状态:处理器执行16位的半字对齐的位的半字对齐的thumb指令。当操作指令。当操作数寄存器的状态位(位数寄存器的状态位(位0)为)为0时,执行时,执行bx指令时可以使微处理器从指令时可以使微处理器从thumb状态切换到状态切换到arm状态;在处理器进行异常处理时,把状态;在处理器进行异常处理时,把pc指指针放入异常模式连接寄存器中,并从异常向量地址开始执行程序,也针放入异常模式连接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到可以使处理器切换到arm状态

13、。状态。112.2 arm工作状态和工作模式工作状态和工作模式v 使用使用bx指令将指令将arm7tdmi内核的操作状态在内核的操作状态在arm状态和状态和thumb状状态之间进行切换(详见第态之间进行切换(详见第3章),程序如下所示:章),程序如下所示:v ;从从arm状态切换到状态切换到thumb状态状态v ldr r0, =lable+1; lable为跳转的目标地址,其最低两位为为跳转的目标地址,其最低两位为00v bx r0;地址地址(lable+1)最低位为最低位为1,表示切换到,表示切换到thumb状态状态v ;从从thumb状态切换到状态切换到arm状态状态v ldr r0,

14、=lable;地址地址(lable)最低位为最低位为0,表示切换到,表示切换到arm状态状态v bx r0122.2 arm工作状态和工作模式工作状态和工作模式v2.2.2 arm处理器工作模式处理器工作模式varm处理器有处理器有7种基本工作模式。除用户模式以种基本工作模式。除用户模式以外,其余的外,其余的6种模式称为非用户模式或特权模式。种模式称为非用户模式或特权模式。除去用户模式和系统模式以外的除去用户模式和系统模式以外的5种又称为异常模种又称为异常模式,常用于处理中断或异常,以及需要访问受保护式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况。的系统资源等情况。132.2 a

15、rm工作状态和工作模式工作状态和工作模式v 1用户模式(用户模式(user):非特权模式,正常程序执行的模式,大部分任务执:非特权模式,正常程序执行的模式,大部分任务执行在这种模式下。行在这种模式下。v 2系统模式系统模式(system):使用和:使用和user模式相同寄存器集的特权模式,但是模式相同寄存器集的特权模式,但是运行的是特权级的操作系统任务。运行的是特权级的操作系统任务。v 3快速中断模式快速中断模式(fiq):当一个高优先级中断产生时将会进入这种模式,:当一个高优先级中断产生时将会进入这种模式,用于高速数据传输和通道处理。用于高速数据传输和通道处理。v 4普通中断模式普通中断模式

16、(irq):当一个低优先级中断产生时将会进入这种模式,:当一个低优先级中断产生时将会进入这种模式,用于通常的中断处理。用于通常的中断处理。v 5管理模式管理模式(supervisor):当复位或软中断指令执行时将会进入这种模:当复位或软中断指令执行时将会进入这种模式,是一种可以供操作系统使用的保护模式。式,是一种可以供操作系统使用的保护模式。v 6中止模式中止模式(abort):当数据或指令存取异常时将会进入这种模式,用于:当数据或指令存取异常时将会进入这种模式,用于虚拟存储及存储保护。虚拟存储及存储保护。v 7未定义模式未定义模式(undefined):当执行未定义指令时会进入这种模式,可用

17、:当执行未定义指令时会进入这种模式,可用于支持硬件协处理器的软件仿真。于支持硬件协处理器的软件仿真。142.2 arm工作状态和工作模式工作状态和工作模式15v绝大多数应用程序都在用户模式下运行,当处理器绝大多数应用程序都在用户模式下运行,当处理器运行在用户模式下时,某些被保护的系统资源是不运行在用户模式下时,某些被保护的系统资源是不能被访问的,除了产生异常实现模式切换外,不能能被访问的,除了产生异常实现模式切换外,不能随意进行模式切换,这将有效的保护系统资源。随意进行模式切换,这将有效的保护系统资源。v除用户模式外,其他模式均为私有模式,这些模式除用户模式外,其他模式均为私有模式,这些模式对

18、系统有完全的访问控制权,另外,这对系统有完全的访问控制权,另外,这6中模式既中模式既可以通过软件改变,也可以通过外部中断和异常处可以通过软件改变,也可以通过外部中断和异常处理来实现模式的改变。理来实现模式的改变。2.3 arm状态下寄存器组织状态下寄存器组织varm处理器在处理器在arm状态下共有状态下共有37个个32位寄存器位寄存器,其中,其中31个为通用寄存器,个为通用寄存器,6个为状态寄存器。如个为状态寄存器。如图图2.3所示,处理器在某种模式时有其对应的一组所示,处理器在某种模式时有其对应的一组寄存器,其中用户模式和系统模式使用的是完全相寄存器,其中用户模式和系统模式使用的是完全相同的

19、一组寄存器,对于其他同的一组寄存器,对于其他5种异常模式,为了使种异常模式,为了使进入异常模式后不会影响系统的正常工作或为了提进入异常模式后不会影响系统的正常工作或为了提高响应速度,专门设计了对应模式独用的一些寄存高响应速度,专门设计了对应模式独用的一些寄存器(图中以三角形标出,称其为分组寄存器)。器(图中以三角形标出,称其为分组寄存器)。162.3 arm状态下寄存器组织状态下寄存器组织172.3 arm状态下寄存器组织状态下寄存器组织v 2.3.1 通用寄存器通用寄存器v 通用寄存器通用寄存器r0r15通常用来存放数据,但有些寄存器(如通常用来存放数据,但有些寄存器(如r13,r14,r1

20、5)也被赋予其他特殊用途:)也被赋予其他特殊用途:r13常被用作堆栈指针寄存常被用作堆栈指针寄存器器sp,r14被用作子程序连接寄存器被用作子程序连接寄存器lr,r15用作程序计数器用作程序计数器pc。详见下述。详见下述。v 1 共用寄存器(共用寄存器(r0r7)v 共用寄存器共用寄存器r0r7是被所有运行模式共用的,指向的是同一个物理寄是被所有运行模式共用的,指向的是同一个物理寄存器,它们用来存放数据,未被系统用做特殊的用途。因此,在中断或存器,它们用来存放数据,未被系统用做特殊的用途。因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同异常处理进行运行模式转换时,由

21、于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时要引起注意。计时要引起注意。182.3 arm状态下寄存器组织状态下寄存器组织v2 分组寄存器(分组寄存器(r8r14)v 与共用寄存器不同,分组寄存器与共用寄存器不同,分组寄存器r8r14在不同的模式下可能访问的是不同的物理寄存器,分一在不同的模式下可能访问的是不同的物理寄存器,分一下三种情况讨论。下三种情况讨论。vr8r12:快速中断模式(:快速中断模式(fiq)有对应的专门寄存器()有对应的专门寄存器(r8_fiqr12_fiq)

22、,以减少中断保护),以减少中断保护所需要的时间开销,实现中断的快速响应。其他所需要的时间开销,实现中断的快速响应。其他6中模式使用相同的物理寄存器中模式使用相同的物理寄存器r8r12。vr13:在:在arm指令中常用作堆栈指针指令中常用作堆栈指针sp。但这只是一种习惯用法,用户也可以使用其它寄存器作为。但这只是一种习惯用法,用户也可以使用其它寄存器作为堆栈指针。而在堆栈指针。而在thumb指令中,某些指令强制性地要求使用指令中,某些指令强制性地要求使用r13作为堆栈指针。由于每种运行模式作为堆栈指针。由于每种运行模式都有各自独立的物理寄存器都有各自独立的物理寄存器r13,所以在用户应用程序的初

23、始化部分,一般都要初始化每种模式下的,所以在用户应用程序的初始化部分,一般都要初始化每种模式下的r13,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存,使其指向该运行模式的栈空间。这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入器放入r13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复相关寄存器的值,采所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复相关寄存器的值,采用这种方式可以保证异常发生后程序的正常执行。用这种方式可以保证异常发生后程序的正常执行。vr14:r14也被称为子程序连接寄存器(也被称为子程序连接寄存器(

24、subroutine link register)或连接寄存器)或连接寄存器lr。当用。当用bl或或blx指令调用子程序时,系统自动将指令调用子程序时,系统自动将pc(r15)的当前值复制给)的当前值复制给r14,执行完子程序后,为,执行完子程序后,为了返回到调用处,在子程序的最后安排一条指令,将保存在了返回到调用处,在子程序的最后安排一条指令,将保存在r14中的断点地址送回给中的断点地址送回给pc(r15),),这样程序就可以从子程序返回到调用处。在其他情况下,这样程序就可以从子程序返回到调用处。在其他情况下,r14用作通用寄存器。与之类似,当发生中用作通用寄存器。与之类似,当发生中断或异常

25、时,对应的分组寄存器断或异常时,对应的分组寄存器r14_svc、r14_irq、r14_fiq、r14_abt和和r14_und用来保用来保存存r15(pc)的值。)的值。 192.3 arm状态下寄存器组织状态下寄存器组织v 3 程序计数器(程序计数器(r15)v 寄存器寄存器r15用作程序计数器(用作程序计数器(pc),用来存放下一条要读取指令的地),用来存放下一条要读取指令的地址。在址。在arm状态下,位状态下,位1:0为为0,位,位31:2用于保存用于保存pc;在;在thumb状态下,位状态下,位0为为0,位,位31:1用于保存用于保存pc。v r15虽然也可用做通用数据寄存器,但一般

26、不这样使用,因为对虽然也可用做通用数据寄存器,但一般不这样使用,因为对r15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。果是未知的。v 由于由于arm体系结构采用了多级流水线技术,所以对于体系结构采用了多级流水线技术,所以对于arm7tdmi而而言,由于有取指、译码和执行三级流水结构,同时进行执行、译码和取言,由于有取指、译码和执行三级流水结构,同时进行执行、译码和取指三个操作,因此,一下条要读取指令所在存储单元的地址为当前正在指三个操作,因此,一下条要读取指令所在存储单元的地址为当前正在执行指令所在单元的地址加执

27、行指令所在单元的地址加8。202.3 arm状态下寄存器组织状态下寄存器组织v注:因为注:因为arm状态处理器执行的是状态处理器执行的是32位字对齐的位字对齐的arm指令,一条指令需要指令,一条指令需要4个字节对齐存放,因个字节对齐存放,因此指令地址的低两位为此指令地址的低两位为00;thumb状态处理器状态处理器执行的是执行的是16位半字对齐的位半字对齐的thumb指令,需要个指令,需要个字节对齐存放,地址的最低位为字节对齐存放,地址的最低位为0。212.3 arm状态下寄存器组织状态下寄存器组织v2.3.2 程序状态寄存器程序状态寄存器varm有两类程序状态寄存器:当前程序状态寄存有两类程

28、序状态寄存器:当前程序状态寄存器器cpsr(current program status register)和程序状态保存寄存器和程序状态保存寄存器spsr(saved program status register)。如图)。如图2.3所示,所示,cpsr是是arm的的7种工作模式共用的一种工作模式共用的一个物理寄存器,可以被任何一种工作模式访问,用个物理寄存器,可以被任何一种工作模式访问,用来存放或设置相关的状态标志和控制标志,来存放或设置相关的状态标志和控制标志,cpsr各位的功能见图各位的功能见图2.4。222.3 arm状态下寄存器组织状态下寄存器组织232.3 arm状态下寄存器组

29、织状态下寄存器组织v如图如图2.3所示,所示,arm的的5种异常模式各自都有一个种异常模式各自都有一个程序状态保存寄存器程序状态保存寄存器spsr。当异常发生时,每种。当异常发生时,每种异常模式专用的异常模式专用的spsr用于保存用于保存cpsr的当前值,的当前值,从而在异常返回时恢复从而在异常返回时恢复cpsr原有的状态。用户模原有的状态。用户模式和系统模式不属于异常模式,所以不需要式和系统模式不属于异常模式,所以不需要spsr来保存来保存cpsr。v如图如图2.4所示,程序状态寄存器是一个所示,程序状态寄存器是一个32位寄存器位寄存器,其中,其中0-7位控制位,位控制位,8-27位保留未用

30、,位保留未用,28-31位为状态标志位。位为状态标志位。242.3 arm状态下寄存器组织状态下寄存器组织v1状态标志位状态标志位v n、z、c、v是四个状态标志位。是四个状态标志位。cpsr各状态位的置位各状态位的置位或清零操作,通常是处理器根据当前执行运算指令的结果或清零操作,通常是处理器根据当前执行运算指令的结果,由硬件电路自动完成的。在应用程序设计中常常需要根,由硬件电路自动完成的。在应用程序设计中常常需要根据状态位的情况实现程序的各种判断和处理。各标志位的据状态位的情况实现程序的各种判断和处理。各标志位的含义见表含义见表2.1。252.3 arm状态下寄存器组织状态下寄存器组织v 在

31、在arm处理器体系机构中,所有的处理器体系机构中,所有的arm指令都可以条件指令都可以条件执行,执行,thumb指令集中的指令集中的b分支指令也可以条件执行。这分支指令也可以条件执行。这些状态标志位的各种组合构成了指令执行的条件,也就是些状态标志位的各种组合构成了指令执行的条件,也就是说,指令条件执行的依据就是这些状态标志位,因此,有说,指令条件执行的依据就是这些状态标志位,因此,有些资料中把这几个标志位也称为条件码。指令的条件执行些资料中把这几个标志位也称为条件码。指令的条件执行是指当指令满足了指令约定的执行条件时,这条指令才被是指当指令满足了指令约定的执行条件时,这条指令才被执行,否则,这

32、条指令仅仅是空流过处理器,不做任何操执行,否则,这条指令仅仅是空流过处理器,不做任何操作。如指令作。如指令“addne r0, r0, r1”就是一条条件执行就是一条条件执行指令,其条件为指令,其条件为“ne”(not equal),也就是上一条指),也就是上一条指令执行后令执行后cpsr中标志位中标志位z被设置为被设置为0(两操作数不相等)(两操作数不相等)时条件成立,执行时条件成立,执行r0+r1并将结果送并将结果送r0。否则,不执行。否则,不执行相加操作。相加操作。262.3 arm状态下寄存器组织状态下寄存器组织v2控制位控制位vcpsr的低的低8位位(包括包括i、f、t和和m4:0)

33、称为控称为控制位,当发生异常时这些位可以被改变。如果处理制位,当发生异常时这些位可以被改变。如果处理器运行在特权模式,这些位也可以由程序修改。器运行在特权模式,这些位也可以由程序修改。v(1) 中断禁止位中断禁止位i和和fv中断禁止位包括中断禁止位包括i和和f,用来禁止或允许,用来禁止或允许irq和和fiq两类中断,当两类中断,当i=1时,表示禁止时,表示禁止irq中断,中断,i=0时表示允许时表示允许irq中断;当中断;当f1时,表示禁止时,表示禁止fiq中断,中断,f0时,表示允许时,表示允许fiq中断。中断。272.3 arm状态下寄存器组织状态下寄存器组织v (2) 工作状态标志位工作

34、状态标志位tv t标志位用来标识标志位用来标识/设置处理器的工作状态。对于设置处理器的工作状态。对于arm体系结构体系结构v4及及以上的版本的以上的版本的t系列处理器,当该位为系列处理器,当该位为1时,程序运行于时,程序运行于thumb状态状态;当该位为;当该位为0时,表示运行于时,表示运行于arm状态。状态。arm指令集和指令集和thumb指令指令集均有切换处理器状态的指令,这些指令通过修改集均有切换处理器状态的指令,这些指令通过修改t位的值来实现在两位的值来实现在两种工作状态之间切换。种工作状态之间切换。v (3) 工作模式控制位工作模式控制位v 工作模式控制位(工作模式控制位(m4:0)

35、用来标识或设置处理器的工作模式,)用来标识或设置处理器的工作模式,m4,m3,m2,m1,m0不同组合来实现处理器工作模式的设置,不同组合来实现处理器工作模式的设置,见表见表2.2所示。可以看出,所示。可以看出,cpsr中用中用5位来设置处理器的工作模式,位来设置处理器的工作模式,理论上可设置的工作模式有(理论上可设置的工作模式有(25)32种,但种,但arm的实际工作模式只的实际工作模式只有有7种,因此,有部分编码组合是无效的,使用这些无效组合的编码会种,因此,有部分编码组合是无效的,使用这些无效组合的编码会导致处理器进入一个不可恢复的状态。导致处理器进入一个不可恢复的状态。282.3 ar

36、m状态下寄存器组织状态下寄存器组织292.3 arm状态下寄存器组织状态下寄存器组织30v3保留位保留位vcpsr中的位中的位8到位到位27为保留位,保留位将用于为保留位,保留位将用于arm版本的扩展。版本的扩展。cpsr和和spsr可通过专门指可通过专门指令进行访问,这些指令将在第令进行访问,这些指令将在第3章介绍。章介绍。 2.4 thumb状态下寄存器组织状态下寄存器组织vthumb状态下的寄存器集是状态下的寄存器集是arm状态下寄存器状态下寄存器集的一个子集。如图集的一个子集。如图2.5所示,所示,thumb状态共有状态共有27个个32位寄存器,其中位寄存器,其中21个为通用寄存器,个

37、为通用寄存器,6个个为状态寄存器。图为状态寄存器。图2.6给出给出thumb状态下的寄存状态下的寄存器组织与器组织与arm状态下的寄存器组织的关系。状态下的寄存器组织的关系。312.4 thumb状态下寄存器组织状态下寄存器组织322.4 thumb状态下寄存器组织状态下寄存器组织332.4 thumb状态下寄存器组织状态下寄存器组织34v thumb状态下的寄存器组织与状态下的寄存器组织与arm状态寄存器组织有如状态寄存器组织有如下的关系:下的关系:v thumb状态状态r0r7与与arm状态状态r0r7相同;相同;v thumb状态状态cpsr和和spsr与与arm状态状态cpsr和和sp

38、sr相同;相同;v thumb状态状态sp映射到映射到arm状态状态r13;v thumb状态状态lr映射到映射到arm状态状态r14;v thumb状态状态pc映射到映射到arm状态状态pc(r15)。)。v 以上对应关系如图以上对应关系如图2.6所示。所示。2.5 arm存储器组织存储器组织 v2.5.1 编址方式与寻址空间编址方式与寻址空间v在计算机系统中主要有两类资源需要编址访问:存在计算机系统中主要有两类资源需要编址访问:存储单元和储单元和i/o端口。这两类资源在计算机系统中有端口。这两类资源在计算机系统中有两种编址方式:两种编址方式:v 1统一编址方式:存储单元和统一编址方式:存储

39、单元和i/o端口统一编端口统一编址在同一个地址空间。该方式的特点是:将同一地址在同一个地址空间。该方式的特点是:将同一地址空间分别分配给存储器单元和址空间分别分配给存储器单元和i/o端口,可用访端口,可用访问存储单元的指令访问问存储单元的指令访问i/o端口,无专用的端口,无专用的i/o访访问指令。问指令。 352.5 arm存储器组织存储器组织 v 2独立编址方式:存储单元和独立编址方式:存储单元和i/o端口分别编址在两个地址空间,端口分别编址在两个地址空间,即存储器地址空间和即存储器地址空间和i/o地址空间。该方式的特点是:按资源分类的地地址空间。该方式的特点是:按资源分类的地址空间清晰,使

40、用不同的指令访问存储单元和址空间清晰,使用不同的指令访问存储单元和i/o端口,即有专用的端口,即有专用的i/o访问指令,芯片上有专用于访问指令,芯片上有专用于i/o访问的引脚。访问的引脚。v arm处理器有处理器有32条地址线,使用统一编址方式,将存储器、条地址线,使用统一编址方式,将存储器、i/o端口端口等组织在一个线性递增的字节地址空间中,等组织在一个线性递增的字节地址空间中,arm处理器寻址的地址空处理器寻址的地址空间为间为0 x000000000 xffff ffff,共,共4gb。arm处理器支持字处理器支持字节节(8bit)、半字、半字(16bit)和字和字(32bit)数据访问。

41、在进行半字和字数数据访问。在进行半字和字数据访问时,要求数据是半字据访问时,要求数据是半字/字对齐存储。字对齐存储。v arm处理器支持处理器支持232个字节个字节(4gb)地址空间,这些地址空间也可以组地址空间,这些地址空间也可以组织成织成231个半字地址空间或个半字地址空间或230个字地址空间。个字地址空间。362.5 arm存储器组织存储器组织 v 2.5.2 数据类型数据类型v arm处理器的指令长度可以是处理器的指令长度可以是32位(在位(在arm状态下),也可以是状态下),也可以是16位(在位(在thumb状态下)。对操作数的数据类型而言,状态下)。对操作数的数据类型而言,arm处

42、理器支处理器支持字节(持字节(8位)、半字(位)、半字(16位)和字(位)和字(32位)位)3种数据类型,其中,种数据类型,其中,字需要字需要4字节对齐(地址的低两位为字节对齐(地址的低两位为0)、半字需要)、半字需要2字节对齐(地址字节对齐(地址的最低位为的最低位为0)。)。v 地址空间的规则:地址空间的规则:v 位于地址位于地址a的字包含的字节位于地址的字包含的字节位于地址a,a+1,a+2和和a+3;v 位于地址位于地址a的半字包含的字节位于地址的半字包含的字节位于地址a和和a+1;v 位于地址位于地址a+2的半字包含的字节位于地址的半字包含的字节位于地址a+2和和a+3;v 位于地址位

43、于地址a的字包含的半字位于地址的字包含的半字位于地址a和和a+2; 372.5 arm存储器组织存储器组织 v 2.5.3 存储格式存储格式v arm体系结构可以使用两种方法来存储字数据,称为大端格式和小端体系结构可以使用两种方法来存储字数据,称为大端格式和小端格式。格式。v 小端格式小端格式v 在小端格式中,高位数字存放在高地址字节中。因此存储器系统字节在小端格式中,高位数字存放在高地址字节中。因此存储器系统字节0连接到数据线连接到数据线70(低位对齐低位对齐)。 v 大端格式大端格式v 在大端格式中,高位数字存放在低地址字节中。因此存储器系统字节在大端格式中,高位数字存放在低地址字节中。因

44、此存储器系统字节0连接到数据线连接到数据线3124(高位对齐高位对齐) 。 v32位字数据位字数据0 x12345678分别以小端模式和大端模式存储时的具体分别以小端模式和大端模式存储时的具体情况如图情况如图2.7所示。所示。382.5 arm存储器组织存储器组织 v 392.5 arm存储器组织存储器组织40v 如果数据都是按字存放、按字读取的,则用户不必关心存如果数据都是按字存放、按字读取的,则用户不必关心存储器格式是大端模式还是小端模式,处理器会按照一致的储器格式是大端模式还是小端模式,处理器会按照一致的格式来访问存储器。只有在使用字节数据组装字数据(或格式来访问存储器。只有在使用字节数

45、据组装字数据(或字数据拆成字节数据字数据拆成字节数据)时,才需要关心存储器的大小端模式时,才需要关心存储器的大小端模式,来保证数据的正确性。,来保证数据的正确性。arm指令集不包含任何大小端存指令集不包含任何大小端存储器格式相关的指令。一个支持大小端存储器模式的储器格式相关的指令。一个支持大小端存储器模式的arm芯片,通常由硬件配置芯片,通常由硬件配置(芯片引脚的高低电平芯片引脚的高低电平)来选择对存来选择对存储器系统访问用的是大端模式还是小端模式。飞利浦储器系统访问用的是大端模式还是小端模式。飞利浦lpc2000系列系列arm固定为小端模式。固定为小端模式。2.6 异常异常v2.6 异常异常

46、v2.6.1 arm异常类型异常类型v在在arm系统中,异常是一些事件,这些事件能导致系统中,异常是一些事件,这些事件能导致正常运行的程序被暂时停止,而进入到该事件对应正常运行的程序被暂时停止,而进入到该事件对应的处理器异常模式并对该事件进行处理,这个过程的处理器异常模式并对该事件进行处理,这个过程叫做异常响应。叫做异常响应。arm体系结构支持复位、未定义指体系结构支持复位、未定义指令、令、swi(软中断软中断)、预取指终止、预取数终止、预取指终止、预取数终止、irq以及以及fiq等等7种异常,具体含义见表种异常,具体含义见表2.3。412.6 异常异常422.6 异常异常v 2.6.2 ar

47、m异常的处理异常的处理v 1 异常向量表异常向量表v arm处理器硬件约定,在处理器寻址空间处理器硬件约定,在处理器寻址空间0 x0000 0000开始安排了开始安排了一个称为异常向量表的特殊存储空间,如表一个称为异常向量表的特殊存储空间,如表2.4所示。当所示。当arm处理器处理器硬件约定的异常发生时,处理器按照异常的种类自动转移到表硬件约定的异常发生时,处理器按照异常的种类自动转移到表2.4所列所列特定单元取指执行。例如,发生复位异常时,处理器自动转移到特定单元取指执行。例如,发生复位异常时,处理器自动转移到0 x0000 0000单元取指执行;当发生单元取指执行;当发生fiq异常时,处理

48、器自动转移异常时,处理器自动转移到到0 x0000 001c地址单元取指执行。地址单元取指执行。v 异常处理通常是一段程序,所以在异常向量表的各字单元中存放一条异常处理通常是一段程序,所以在异常向量表的各字单元中存放一条32位的跳转指令,实现到各异常处理代码的转移。位的跳转指令,实现到各异常处理代码的转移。432.6 异常异常442.6 异常异常v 2 异常响应异常响应v 当异常发生时,当异常发生时,arm硬件自动完成图硬件自动完成图2.8所示的一系列操所示的一系列操作。图中作。图中spsr_x、lr_x是指处理器模式是指处理器模式x下的下的spsr和和lr寄存器。首先,寄存器。首先,arm硬

49、件自动将当前程序状态寄存器硬件自动将当前程序状态寄存器cpsr和和pc的内容拷贝到异常发生后所进入的处理器模式的内容拷贝到异常发生后所进入的处理器模式对应的对应的spsr_x寄存器和寄存器和lr_x寄存器;之后根据异常类寄存器;之后根据异常类型改写型改写cpsr中的控制位,以便设置中的控制位,以便设置irq和和fiq的中断允的中断允许状态和处理器工作模式;最后根据不同的异常重置许状态和处理器工作模式;最后根据不同的异常重置pc,以便使处理器转到异常向量表对应的字单元执行对应的跳以便使处理器转到异常向量表对应的字单元执行对应的跳转程序,转去执行相应的异常处理程序。表转程序,转去执行相应的异常处理程序。表2.5“异常响应异常响应”一列给出各种异常发生时硬件进行的响应操作。一列给出各种异常发生时硬件进行的响应操作。452.6 异常异常462.6 异常异常v3 异常返回异常返回v当异常处理程序结束时,异常处理程序返回发生异当异常处理程序结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论