- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式系统讲座3-内部寄存器
ARM的内部寄存器 ARM处理器共具有37个32位的寄存器:31个通用寄存器,6个状态寄存器,但并不是所有的寄存器都总能被访问到。在某一时刻寄存器能否访问,由处理器的当前工作状态和操作模式决定。 采用下面的记号来区分不同的物理寄存器:Rx_mode其中x表明寄存器号,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。 根据微处理器内核的当前工作状态,可分别访问ARM 状态寄存器集和Thumb 状态寄存器集。ARM 状态寄存器集包含16个可以直接访问的寄存器:R0~R15。除R15以外,其余的寄存器为通用寄存器,可用于存放地址或数据值。 Thumb状态寄存器集是ARM状态寄存器集的一个子集。可以访问的寄存器有:8个通用寄存器R0~R7,程序计数器PC、堆栈指针寄存器SP、连接寄存器LR和当前程序状态寄存器CPSR。在每一种特权模式下,都有对应的分组堆栈指针寄存器SP、连接寄存器LR和备份的程序状态寄存器SPSR。 Thumb状态寄存器集与ARM 状态寄存器集的对应关系如下: - Thumb状态下R0~R7寄存器与ARM状态下R0~R7寄存器是相同的。 - Thumb状态下的CPSR和SPSRs与ARM状态下的CPSR 和SPSRs是相同的。 - Thumb状态下的SP、LR 和PC直接对应ARM 状态寄存器R13、R14和R15。 在Thumb状态下,寄存器R8~R15不属于标准寄存器集的一部分,但在必要的情况下,用户可以通过汇编语言程序访问他们,用作快速的临时存储单元 程序状态寄存器 ARM处理器包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。备份的程序状态寄存器用来进行异常处理,这些寄存器的功能包括: · 保存ALU当前操作的有关信息 · 控制中断的允许和禁止 · 设置处理器的运行模式 程序状态寄存器组成如图所示: 条件码标志位(Condition Code Flags) N、Z、C、V均为条件码标志位。它们的内容根据算术或逻辑运算的结果所改变,并且用来作为一些指令是否的运行的检测条件。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。 控制位(Control Bits) 低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可被改变。如果处理器运行特权模式,这些位也可由程序修改。 ○ 中断禁止位I、F: I=1 禁止IRQ中断; F=1 禁止FIQ中断。 ○ T标志位:该位反映处理器的运行状态。 对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起未定义的指令异常;当该位为0时,表示运行于ARM状态。 ○ 运行模式位M[4:0] 决定了处理器的运行模式: 由上表可知,并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态。 保留位(reserved) PSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。 异常 当正常的程序执行流程被中断时,称为产生了异常。例如程序执行转向响应一个外设的中断请求。在优先处理异常时,处理器的当前状态必须保留,以便在异常处理完成之后程序流程能正常返回。并且,多个异常可能会同时发生,这时,它们将按照固定的顺序依次处理。 在异常中断时,处理器硬件会自动把中断处下一条指令的地址保存在链接寄存器LR(R14)中,由于各种异常中断响应的过程不同,因此,保存在LR中的地址是不同的。多数情况下 LR中保存值=(PC值-4)。这是由ARM7的三级流水线结构造成的。式中的PC值是发生异常中断时正在取指的指令地址,而不是正在执行的指令地址。 ARM所支持的7种异常如下: 当进入异常状态时,内核应该进行以下动作: 1.将原来执行的程序的下一条指令地址保存到LR中; 2.拷贝CPSR到SPSR;(如果是在Thumb状态下发生异常中断,CPSR不会自动保存) 3.根据发生的异常类型改变CPSR的模式位的值; 各类异常具体描述 FIQ(快速中断请求)异常通常用来支持数据传输和通道操作。在ARM状态下,它具有专用的影子寄存器,用来减少对寄存器存取的需要,从而减少进入中断前的“上下文切换”的工作,即保存和恢复寄存器值。 ARM处理器控制逻辑中有一个输入逻辑nFIQ ,称为快速中断请求信号,这个信号由处理器片内外围控制模块控制,当有满足条件的事件
文档评论(0)