第2章 ARM嵌入式处理器体系结构

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第2章 ARM嵌入式处理器体系结构 2. ARM处理器工作模式
7
第2章 ARM嵌入式处理器体系结构 2.1.4 ARM处理器寄存器组 1. ARM状态下的寄存器组
8
第2章 ARM嵌入式处理器体系结构
从表2.3中可以看出,ARM处理器工作在不同模式,使 用的寄存器有所不同,共同点是:无论何种模式,R15均作为 PC使用;CPSR为当前程序状态寄存器;R7~R0为公用的通 用寄存器。不同之处在于高端7个通用寄存器和状态寄存器在 不同模式下不同。 1)通用寄存器 通用寄存器有31个,其中不分组的寄存器有8个(R0~ R7);在快速中断模式下,R8~R12标有fiq,代表快速模式 专用,与其他模式地址重叠,但模式不同,因此寄存器内容 并不冲突,共2组计10个寄存器;R13~R14除了用户模式和 系统模式分别为堆栈指针(Stack Pointer, SP)和程序链接 寄存器(Link Register, LR)之外,其他模式下均有自己独 特的标记方式,是专用于特定模式的寄存器,共6组计12个; 另外还有作为PC的R15,这样通用寄存器共31个。所有通用 寄存器均为32位结构。
5
第2章 ARM嵌入式处理器体系结构
3)ARM与Thumb间的切换 (1)由ARM状态切换到Thumb状态。通过BX指令可将 ARM状态切换到Thumb状态,即当操作数寄存器的最低位为1 时,可执行BX指令使微处理器进入Thumb状态。例如: MOV R6,0X16000001 BX R6 在本例中,操作数寄存器R6的最低位为1,则执行上述两 条指令时,转移到地址为R6&0XFFFFFFFE=0X16000000处的 Thumb指令。 如果Thumb状态进入异常处理,则当异常返回时, 系统 状态将自动切换到Thumb状态。 (2)由Thumb状态切换到ARM状态。通过BX指令可将 Thumb状态切换到ARM状态,即当操作数寄存器的最低位为0 时,可执行BX指令使微处理器进入ARM状态。当处理器进行 异常处理时,则从异常向量地址开始执行,系统将自动进入 ARM状态。 6
2
第2章 ARM嵌入式处理器体系结构
2.1 ALeabharlann BaiduM体系结构概述
2.1.1 ARM体系结构的发展 ARM处理器采用RISC(Reduced Instruction Set Computer)体系结构设计,使用标准的、固定长度的32位指 令格式,所有ARM指令都使用4位的条件编码来决定指令是否 执行,以解决指令执行的条件判断。从ARM7开始采用32位地 址空间(此前为26位地址)。 ARM7采用3级流水线结构,采 用冯· 诺依曼体系结构(程序存储器与数据存储器统一编址)。 ARM9采用5级流水线,采用哈佛体系结构(程序存储器与数 据存储器分开独立编址)。ARM10采用6级流水线。ARM架 构自诞生至今,已经发生了很大的演变,至今已定义了7种不 同的版本。
3
第2章 ARM嵌入式处理器体系结构 2.1.2 ARM体系结构的技术特征 (1)单周期操作。ARM指令系统中的指令只需要执行简单的 和基本的操作,因此其执行过程在一个机 器周期内完成。 (2)采用加载/存储指令结构。ARM只采用了加载和存储两种 指令对存储器进行读和写的操作,面向运算部件的操作都经过加 载指令和存储指令从存储器取出后预先存放到寄存器内,以加快 执行速度。 (3)固定的32位长度指令。ARM指令系统的指令格式固定为 32位长度,指令译码结构简单,效率高。 (4)3地址指令格式。由于编译开销大,需要尽可能优化,因 此采用3地址指令格式,较多寄存器和对称的指令格式便于生成优 化代码。 (5)指令流水线技术。ARM采用多级流水线技术,以提高指 令执行的效率;ARM7采用冯· 诺依曼体系结构的3级指令流水线; ARM9TDMI采用基于哈佛体系结构的5级指令流水线技术; ARM10 采用6级指令流水线。 4
嵌入式处理器内核是一个设计技术,并不是一个芯片, 内核的设计一般追求高速度、低功耗、易于集成。
1
第2章 ARM嵌入式处理器体系结构
ARM内核具有低功耗的特点,ARM内核的设计技术被授权 给数百家的半导体厂商,做成不同的SOC芯片。ARM内核在 当今最活跃的无线局域网、3G、手机终端、手持设备、有线 网络通信设备中得以广泛应用,其应用形式是集成到专用芯片 之中作为控制器。采用ARM内核的主要半导体处理器厂商韩 国三星公司在其面向手持设备和网络设备的处理器上都全面采 用了ARM内核,如S3C4510B用于Gateway等。 Intel公司从StrongARM到Xscale处理器家族,都是立足于 ARM内核并增加了多媒体指令特性,并进一步降低功耗,提 高速度。 Motorola公司在其手持设备处理器方面从68K内核改成了 ARM内核,从此,手持设备领域成了ARM内核的天下。 Cirrus Logic公司的EP7312等手持设备处理器增加了MP3 以及音频处理的功能。
12
第2章 ARM嵌入式处理器体系结构
2.异常中断的优先级 7种类型的异常分成6级,优先级由高到低依次是: (1)复位(RESET)异常; (2)数据访问中止(DABT)异常; (3)快速中断请求(FIQ)异常; (4)外部中断请求(IRQ)异常; (5)指令预取中止(FABT)异常; (6)软件中断(SWI)异常和未定义的指令(UND)异 常最低优先级。 复位异常的优先级最高,因此任何情况下,只要进入复 位状态,系统无条件地将PC指向0x00000000处,去执行系统 第一条指令。通常此处放一条无条件的转移指令,转移到系 统初始化程序处。
18
第2章 ARM嵌入式处理器体系结构
不同模式返回用的指令有所不同,下面简要介绍几种异常程 序的返回方法。 (1) FIQ(Fast Interrupt Request),即快速中断异常,是 为了支持数据传输或者通道处理而设计的。在ARM状态下,系 统有足够的寄存器,从而可以保障对寄存器保存的需求。 若将 CPSR的F位设置为1,则会禁止FIQ中断,若将CPSR的F位清零, 处理器会在指令执行时检查FIQ的输入。注意只有在特权模式下 才能改变F位的状态。 可由外部通过对处理器上的nFIQ引脚输入低电平产生FIQ。 不管是在ARM状态还是在Thumb状态下进入FIQ模式,FIQ处 理程序均会执行以下指令从FIQ模式返回: SUBS PC,R14_fiq,#4 该指令将寄存器R14_fiq的值减去4后,复制到程序计数器 (PC)中,从而实现从异常处理程序中的返回,同时将 SPSR_mode寄存器的内容复制到当前程序状态寄存器(CPSR) 中。
9
第2章 ARM嵌入式处理器体系结构
2)状态寄存器 状态寄存器共6个,除了共用的CPSR外还有分组的SPSR (5组共5个)。程序状态寄存器的格式如图2.1所示,其中条 件码标志4个(N,Z,C,V),还有Q标志以及8个控制位(I, F,T,M4~M0)。
31 N 30 Z 29 C 28 V 27 Q 26 ... 保留 8 7 I 6 F 5 T 4 3 2 1 0 M0
第2章 ARM嵌入式处理器体系结构
目前世界上有四大流派的嵌入式处理器内核生产厂家 及嵌入式处理器内核, 即MIPS公司(www.mips.com) 的MIPS处理器内核,ARM公司( www.arm.com )的 ARM处理器内核,国际商用机器公司(IBM)、苹果公司 (Apple)及摩托罗拉(Motorola)公司 联合开发的 PowerPC,摩托罗拉公司( www.motorola.com)的 68K/COLDFIRE。
图2.2 中断跳转流程
14
第2章 ARM嵌入式处理器体系结构
2)解析过程示例
图2 .3
中断解析示例流程
15
第2章 ARM嵌入式处理器体系结构
3)解析程序的扩展
扩展解析程序 起始地址 解析程序 IRQ/FIQ服务程序 目标地址
向量表
中断控制 状态寄存器
图2 .4
中断解析的扩展
16
第2章 ARM嵌入式处理器体系结构
M4 M3 M2 M1
图2.1 程序状态寄存器格式
10
第2章 ARM嵌入式处理器体系结构 2.Thumb状态下的寄存器组 Thumb状态下的寄存器组是ARM状态下寄存器组的子集。
11
第2章 ARM嵌入式处理器体系结构
2.1.5 ARM处理器的异常中断 在正常程序执行过程中,每执行一条ARM指令,PC值加4, 每执行一条Thumb指令, PC值加2,程序按顺序正常执行。 异常( Exceptions)是指内部或外部事件引起的请求使处 理器做出相应处理的事件。当发生异常时,系统执行完当前指 令后,跳转到相应的异常处理程序人口执行异常处理,异常处 理完,程序返回。 1.ARM异常种类及异常中断向量 在ARM体系结构中,异常中断用来处理软中断、未定义 指令陷阱、系统复位及外部中断,共有7种不同类型的异常中 断及其对应的向量地址,见表2.50 实现异常向量的定位由32位地址空间低端的正常地址范围 0x00000000~0x0000001C决定,但有些ARM允许高端地址 0xFFFF0000 ~ 0xFFFF001C来定位异常向量的地址。
4)向量中断的处理
图2 .5
向量中断解析流程示例
17
第2章 ARM嵌入式处理器体系结构
4.从异常处理程序中返回 复位异常发生后,由于系统自动从0x00000000开始重 新执行程序,因此复位异常处理 程序执行完后无须返回。 其他所有异常处理完后必须返回到原来程序处向下执行, 为达到 这一目的,需要执行以下操作: (1)恢复原来被保护的用户寄存器。 (2)将SPSR_mode寄存器值复制到CPSR中,使得 CPSR从相应的SPSR中恢复,以恢复被中断的程序工作状 态。 (3)根据异常类型将PC值恢复成断点地址,以执行用 户原来运行着的程序。 (4)清除CPSR中的中断禁止标志I和F,开放外部中断 和快速中断。
第2章 ARM嵌入式处理器体系结构 2.1.3 ARM处理器工作状态与工作模式
1. ARM处理器工作状态 1)ARM状态 ARM状态是指ARM工作于32位指令状态,即32位状态。 所有指令均为32位指令。 2)Thumb状态 Thumb状态是指ARM执行16位的Thumb指令的状态,即 16位状态。 在有些情况下,如异常处理时,必须是ARM状态下的 ARM指令,此时如果原来工作于Thumb状态,必须将其切换 到ARM状态,使之执行ARM指令。在程序执行的过程中,处 理器可随时在这两种工作状态间进行切换,切换时并不影响 处理器的工作模式和相应寄存器中的内容。 ARM处理器复位后开始执行代码时总是只处于ARM状态, 如果需要,则可通过下面的方法切换到Thumb状态。
19
第2章 ARM嵌入式处理器体系结构
(2) IRQ(Interrupt Request)异常属于正常的中断请 求,可通过对处理器的nIRQ引脚输入低电平产生。IRQ的优 先级低于FIQ,当程序执行进入FIQ异常时,IRQ可能被屏蔽。 若将CPSR的I位设置为1,则会禁止IRQ中断,若将CPSR的I 位清零,处理器会在指令执行完之前检查IRQ的输入。注意 只有在特权模式下才能改变I位的状态。不管是在 ARM状态 还是在Thumb状态下进入IRQ模式,IRQ处理程序均会执行 以下指令从IRQ 模式返回: SUBS PC,R14_irq,#4 该指令将寄存器R14_irq的值减去4后,复制到程序计数 器(PC)中,从而实现从异常处理程序中的返回,同时将 SPSR_mode寄存器的内容复制到当前程序状态寄存器 (CPSR)中。
13
第2章 ARM嵌入式处理器体系结构
1)解析程序的概念和作用 中断请求 ARM处理器响应中断的时 候,总是从固定的地址开始的, 而在高级语言环境下开发中断 PC跳转到固定地址 服务程序时,无法控制固定地 址开始跳转流程。为了使得上 层应用程序与硬件中断跳转联 从起始固定地址跳转到用户自定义固定地址的内存区, 其中存放着中断再跳转的解析程序 系起来,需要编写一段中间的 服务程序来进行连接。这样的 解析程序读取中断向量表,得到中断函数的目标地址 服务程序常被称作中断解析程 序。 常用的中断跳转流程,如 跳转到目标函数地址 图2.2所示。
相关文档
最新文档