第2章ARM体系结构

上传人:新** 文档编号:568742017 上传时间:2024-07-26 格式:PPT 页数:50 大小:1.10MB
返回 下载 相关 举报
第2章ARM体系结构_第1页
第1页 / 共50页
第2章ARM体系结构_第2页
第2页 / 共50页
第2章ARM体系结构_第3页
第3页 / 共50页
第2章ARM体系结构_第4页
第4页 / 共50页
第2章ARM体系结构_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《第2章ARM体系结构》由会员分享,可在线阅读,更多相关《第2章ARM体系结构(50页珍藏版)》请在金锄头文库上搜索。

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

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

3、度,对ARM的内核结构、工作状态、的内核结构、工作状态、工作模式以及应用程序可访问的寄存器结构、存储器组织等工作模式以及应用程序可访问的寄存器结构、存储器组织等进行详细介绍,为后续各章节的学习打下坚实的基础。进行详细介绍,为后续各章节的学习打下坚实的基础。 32.1 ARM体系结构体系结构v2.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、相关书籍或技术手册。核及芯片时,可参阅相关书籍或技术手册。vARM7TDMI是是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可以在两种状态之间进行几乎零开销的切换。可以在两种状态之间进行几乎零开销的切换。处理器工作状态的转变不影响处理器的工作模式处理器工作状态的转变不影响处理器的工作模式(A

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

12、、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, =Lable;

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

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

16、生时将会进入这种模式,用:当一个低优先级中断产生时将会进入这种模式,用于通常的中断处理。于通常的中断处理。v5管理模式管理模式(Supervisor):当复位或软中断指令执行时将会进入这种模式,:当复位或软中断指令执行时将会进入这种模式,是一种可以供操作系统使用的保护模式。是一种可以供操作系统使用的保护模式。v6中止模式中止模式(Abort):当数据或指令存取异常时将会进入这种模式,用于虚:当数据或指令存取异常时将会进入这种模式,用于虚拟存储及存储保护。拟存储及存储保护。v7未定义模式未定义模式(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状态下寄存器组织状态下寄存器组织v2.3.1 通用寄存器通用寄存器v 通用寄存器通用寄存器R0R15通常用来存放数据,但有些寄存器(如通常用来存放数据,但有些寄存器(如R13,R14,R15)也被赋予其他特殊用途:)也被赋予其他

20、特殊用途:R13常被用作堆栈指针寄存器常被用作堆栈指针寄存器SP,R14被用作子程序连接寄存器被用作子程序连接寄存器LR,R15用作程序计数器用作程序计数器PC。详。详见下述。见下述。v1 共用寄存器(共用寄存器(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也被称为子程序连接寄存器(也被称为子程序连接寄存器(Subroutine Link Regis

24、ter)或连接寄存器)或连接寄存器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状态下寄存器组织状态下寄存器组织v3 程序计数器(程序计数器(R15)v寄存器寄存器R15用作程序计数器(用作程序计数器(PC),用来存放下一条要读取指令的地),用来存放下一条要读取指令的地址。在址。在ARM状态下,位状态下,位1:0为为0,位,位31:2用于保存用于保存PC;在;在Thumb状态下,位状态下,位0为为0,位,位31:1用于保存用于保存PC。v R15虽然也可用做通用数据寄存器,但一般不这样使用,因为对虽然也可用做通用数据寄存器,

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

27、下寄存器组织状态下寄存器组织v注:因为注:因为ARM状态处理器执行的是状态处理器执行的是32位字对齐的位字对齐的ARM指令,一条指令需要指令,一条指令需要4个字节对齐存放,因此个字节对齐存放,因此指令地址的低两位为指令地址的低两位为00;Thumb状态处理器执行状态处理器执行的是的是16位半字对齐的位半字对齐的Thumb指令,需要个字节对指令,需要个字节对齐存放,地址的最低位为齐存放,地址的最低位为0。212.3 ARM状态下寄存器组织状态下寄存器组织v2.3.2 程序状态寄存器程序状态寄存器vARM有两类程序状态寄存器:当前程序状态寄存有两类程序状态寄存器:当前程序状态寄存器器CPSR(Cu

28、rrent Program Status Register)和程序状态保存寄存器和程序状态保存寄存器SPSR(Saved Program Status Register)。如图)。如图2.3所示,所示,CPSR是是ARM的的7种工作模式共用的一个物理寄存器,可以被任何一种工作模式共用的一个物理寄存器,可以被任何一种工作模式访问,用来存放或设置相关的状态标志种工作模式访问,用来存放或设置相关的状态标志和控制标志,和控制标志,CPSR各位的功能见图各位的功能见图2.4。222.3 ARM状态下寄存器组织状态下寄存器组织232.3 ARM状态下寄存器组织状态下寄存器组织v如图如图2.3所示,所示,A

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

30、标志位。242.3 ARM状态下寄存器组织状态下寄存器组织v1状态标志位状态标志位vN、Z、C、V是四个状态标志位。是四个状态标志位。CPSR各状态位的置位或各状态位的置位或清零操作,通常是处理器根据当前执行运算指令的结果,由清零操作,通常是处理器根据当前执行运算指令的结果,由硬件电路自动完成的。在应用程序设计中常常需要根据状态硬件电路自动完成的。在应用程序设计中常常需要根据状态位的情况实现程序的各种判断和处理。各标志位的含义见表位的情况实现程序的各种判断和处理。各标志位的含义见表2.1。252.3 ARM状态下寄存器组织状态下寄存器组织v在在ARM处理器体系机构中,所有的处理器体系机构中,所

31、有的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) 工作状态标志位工作状态标志位TvT标志位用来标识标志位用来标识/设置处理器

34、的工作状态。对于设置处理器的工作状态。对于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 ARM状态下寄存器组织状态下寄存器组织292.3 ARM状态下寄存

36、器组织状态下寄存器组织30v3保留位保留位vCPSR中的位中的位8到位到位27为保留位,保留位将用于为保留位,保留位将用于ARM版本的扩展。版本的扩展。CPSR和和SPSR可通过专门指可通过专门指令进行访问,这些指令将在第令进行访问,这些指令将在第3章介绍。章介绍。 2.4 Thumb状态下寄存器组织状态下寄存器组织vThumb状态下的寄存器集是状态下的寄存器集是ARM状态下寄存器状态下寄存器集的一个子集。如图集的一个子集。如图2.5所示,所示,Thumb状态共有状态共有27个个32位寄存器,其中位寄存器,其中21个为通用寄存器,个为通用寄存器,6个个为状态寄存器。图为状态寄存器。图2.6给出

37、给出Thumb状态下的寄存状态下的寄存器组织与器组织与ARM状态下的寄存器组织的关系。状态下的寄存器组织的关系。312.4 Thumb状态下寄存器组织状态下寄存器组织322.4 Thumb状态下寄存器组织状态下寄存器组织332.4 Thumb状态下寄存器组织状态下寄存器组织34vThumb状态下的寄存器组织与状态下的寄存器组织与ARM状态寄存器组织有如状态寄存器组织有如下的关系:下的关系:vThumb状态状态R0R7与与ARM状态状态R0R7相同;相同;vThumb状态状态CPSR和和SPSR与与ARM状态状态CPSR和和SPSR相同;相同;vThumb状态状态SP映射到映射到ARM状态状态R

38、13;vThumb状态状态LR映射到映射到ARM状态状态R14;vThumb状态状态PC映射到映射到ARM状态状态PC(R15)。)。v以上对应关系如图以上对应关系如图2.6所示。所示。2.5 ARM存储器组织存储器组织 v2.5.1 编址方式与寻址空间编址方式与寻址空间v在计算机系统中主要有两类资源需要编址访问:存在计算机系统中主要有两类资源需要编址访问:存储单元和储单元和I/O端口。这两类资源在计算机系统中有端口。这两类资源在计算机系统中有两种编址方式:两种编址方式:v 1统一编址方式:存储单元和统一编址方式:存储单元和I/O端口统一编端口统一编址在同一个地址空间。该方式的特点是:将同一地

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

40、,即有专用的端口,即有专用的I/O访问指令,芯片上有专用于访问指令,芯片上有专用于I/O访问的引脚。访问的引脚。vARM处理器有处理器有32条地址线,使用统一编址方式,将存储器、条地址线,使用统一编址方式,将存储器、I/O端口端口等组织在一个线性递增的字节地址空间中,等组织在一个线性递增的字节地址空间中,ARM处理器寻址的地址空处理器寻址的地址空间为间为0x000000000xFFFF FFFF,共,共4GB。ARM处理器支持字处理器支持字节节(8bit)、半字、半字(16bit)和字和字(32bit)数据访问。在进行半字和字数数据访问。在进行半字和字数据访问时,要求数据是半字据访问时,要求数

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

42、)位)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位于地址位于地址A的字包含的半字位于地址的字包含的半字位于地址A和和A+2; 372.5 ARM存储器组织

43、存储器组织 v2.5.3 存储格式存储格式vARM体系结构可以使用两种方法来存储字数据,称为大端格式和小端体系结构可以使用两种方法来存储字数据,称为大端格式和小端格式。格式。v小端格式小端格式v在小端格式中,高位数字存放在高地址字节中。因此存储器系统字节在小端格式中,高位数字存放在高地址字节中。因此存储器系统字节0连接到数据线连接到数据线70(低位对齐低位对齐)。 v大端格式大端格式v在大端格式中,高位数字存放在低地址字节中。因此存储器系统字节在大端格式中,高位数字存放在低地址字节中。因此存储器系统字节0连接到数据线连接到数据线3124(高位对齐高位对齐) 。 v32位字数据位字数据0x123

44、45678分别以小端模式和大端模式存储时的具体分别以小端模式和大端模式存储时的具体情况如图情况如图2.7所示。所示。382.5 ARM存储器组织存储器组织 v 392.5 ARM存储器组织存储器组织40v如果数据都是按字存放、按字读取的,则用户不必关心存储如果数据都是按字存放、按字读取的,则用户不必关心存储器格式是大端模式还是小端模式,处理器会按照一致的格式器格式是大端模式还是小端模式,处理器会按照一致的格式来访问存储器。只有在使用字节数据组装字数据(或字数据来访问存储器。只有在使用字节数据组装字数据(或字数据拆成字节数据拆成字节数据)时,才需要关心存储器的大小端模式,来保时,才需要关心存储器

45、的大小端模式,来保证数据的正确性。证数据的正确性。ARM指令集不包含任何大小端存储器格指令集不包含任何大小端存储器格式相关的指令。一个支持大小端存储器模式的式相关的指令。一个支持大小端存储器模式的ARM芯片,芯片,通常由硬件配置通常由硬件配置(芯片引脚的高低电平芯片引脚的高低电平)来选择对存储器系来选择对存储器系统访问用的是大端模式还是小端模式。飞利浦统访问用的是大端模式还是小端模式。飞利浦LPC2000系系列列ARM固定为小端模式。固定为小端模式。2.6 异常异常v2.6 异常异常v2.6.1 ARM异常类型异常类型v在在ARM系统中,异常是一些事件,这些事件能导致系统中,异常是一些事件,这

46、些事件能导致正常运行的程序被暂时停止,而进入到该事件对应正常运行的程序被暂时停止,而进入到该事件对应的处理器异常模式并对该事件进行处理,这个过程的处理器异常模式并对该事件进行处理,这个过程叫做异常响应。叫做异常响应。ARM体系结构支持复位、未定义指体系结构支持复位、未定义指令、令、SWI(软中断软中断)、预取指终止、预取数终止、预取指终止、预取数终止、IRQ以及以及FIQ等等7种异常,具体含义见表种异常,具体含义见表2.3。412.6 异常异常422.6 异常异常v2.6.2 ARM异常的处理异常的处理v1 异常向量表异常向量表vARM处理器硬件约定,在处理器寻址空间处理器硬件约定,在处理器寻

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

48、以在异常向量表的各字单元中存放一条异常处理通常是一段程序,所以在异常向量表的各字单元中存放一条32位的跳转指令,实现到各异常处理代码的转移。位的跳转指令,实现到各异常处理代码的转移。432.6 异常异常442.6 异常异常v2 异常响应异常响应v当异常发生时,当异常发生时,ARM硬件自动完成图硬件自动完成图2.8所示的一系列操所示的一系列操作。图中作。图中SPSR_x、LR_x是指处理器模式是指处理器模式x下的下的SPSR和和LR寄存器。首先,寄存器。首先,ARM硬件自动将当前程序状态寄存器硬件自动将当前程序状态寄存器CPSR和和PC的内容拷贝到异常发生后所进入的处理器模式的内容拷贝到异常发生

49、后所进入的处理器模式对应的对应的SPSR_x寄存器和寄存器和LR_x寄存器;之后根据异常类寄存器;之后根据异常类型改写型改写CPSR中的控制位,以便设置中的控制位,以便设置IRQ和和FIQ的中断允的中断允许状态和处理器工作模式;最后根据不同的异常重置许状态和处理器工作模式;最后根据不同的异常重置PC,以便使处理器转到异常向量表对应的字单元执行对应的跳转以便使处理器转到异常向量表对应的字单元执行对应的跳转程序,转去执行相应的异常处理程序。表程序,转去执行相应的异常处理程序。表2.5“异常响应异常响应”一列给出各种异常发生时硬件进行的响应操作。一列给出各种异常发生时硬件进行的响应操作。452.6

50、异常异常462.6 异常异常v3 异常返回异常返回v当异常处理程序结束时,异常处理程序返回发生异当异常处理程序结束时,异常处理程序返回发生异常所中断程序的断点处继续执行。在异常处理程序常所中断程序的断点处继续执行。在异常处理程序的最后,把进入异常前有硬件压入到该异常模式的的最后,把进入异常前有硬件压入到该异常模式的程序状态寄存器的值送给程序状态寄存器的值送给CPSR,把压入该模式,把压入该模式R14(LR)的值经过适当修正后送给的值经过适当修正后送给PC。为什么要。为什么要对对LR中的值修正后才能送给中的值修正后才能送给PC呢?这是由于呢?这是由于ARM流水线的存在,在进入异常处理时被保存到流

51、水线的存在,在进入异常处理时被保存到LR中的值未必就是程序返回地址。各种异常模式中的值未必就是程序返回地址。各种异常模式返回地址见表返回地址见表2.5。472.6 异常异常v2.6.3 ARM异常的优先级异常的优先级v异常优先级包含两种的情况:第一种情况是多个异常同时发生时处理器异常优先级包含两种的情况:第一种情况是多个异常同时发生时处理器如何响应;第二种情况是处理器正在处理异常过程中又有新的异常发生如何响应;第二种情况是处理器正在处理异常过程中又有新的异常发生时处理器如何响应。在时处理器如何响应。在ARM异常响应机制中,处理器硬件仅解决了当异常响应机制中,处理器硬件仅解决了当多个异常同时发生

52、时处理器如何响应的问题,系统约定总是优先级高的多个异常同时发生时处理器如何响应的问题,系统约定总是优先级高的异常优先获得响应,在异常优先获得响应,在ARM体系结构中,硬件约定了各个异常的优先体系结构中,硬件约定了各个异常的优先级顺序,详见表级顺序,详见表2.6。异常嵌套及嵌套方案则由软件完成。从表。异常嵌套及嵌套方案则由软件完成。从表2.6可可以看出:复位异常优先级最高,任何时候复位异常总是首先获得响应;以看出:复位异常优先级最高,任何时候复位异常总是首先获得响应;软中断指令和未定义指令总是互斥的,因此使用同一个优先级,且它们软中断指令和未定义指令总是互斥的,因此使用同一个优先级,且它们的优先

53、级最低;的优先级最低;IRQ和和FIQ两种异常可以通过讲两种异常可以通过讲CPSR中的中的I、F位置位置1来禁止其发生。来禁止其发生。 482.6 异常异常v 492.6 异常异常50v习题习题v1、ARM7处理器是几级流水线?在处理器是几级流水线?在ARM7处理器中,处理器中,“PC指向的是下一条要执行的指指向的是下一条要执行的指令令”,这句话对吗?为什么?,这句话对吗?为什么?v2、ARM处理器的工作状态分为哪两种?在处理器的工作状态分为哪两种?在CPSR中如何设置处理器的工作状态?中如何设置处理器的工作状态?v3、ARM处理器有哪些工作模式?不同工作模式下处理器有哪些工作模式?不同工作模

54、式下CPSR寄存器的模式位寄存器的模式位M4:0如何如何设置?设置?v4、试说明、试说明ARM处理器在处理器在ARM状态下寄存器结构,并分别说明状态下寄存器结构,并分别说明R13、R14、R15寄存寄存器的作用。器的作用。v5、试简述程序计数器、试简述程序计数器PC,连接寄存器,连接寄存器LR的作用。的作用。v6、如何禁止、如何禁止IRQ和和FIQ中断?中断?v7、什么是、什么是ARM处理器的异常?处理器的异常?ARM处理器中有哪几种异常?简述异常与中断的关系。处理器中有哪几种异常?简述异常与中断的关系。v8、请描述一下、请描述一下ARM处理器产生异常的条件分别是什么?各种异常会使处理器进入哪种处理器产生异常的条件分别是什么?各种异常会使处理器进入哪种模式?进入异常时处理器有何操作?各种异常的返回指令时什么?模式?进入异常时处理器有何操作?各种异常的返回指令时什么?v9、什么是大端存储模式和小端存储模式?画出、什么是大端存储模式和小端存储模式?画出0x87654321分别以小端模式和大端模分别以小端模式和大端模式存储在式存储在0x00006000单元中的存储格式。单元中的存储格式。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号