- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二讲 体系结构 ARM体系结构 ARM处理器工作状态 ARM处理器工作模式 ARM寄存器组成 ARM的异常中断 ARM组织结构简介 ARM存储器接口及存储器层次 ARM处理器工作状态 自从ARM7TDMI核以后,体系结构中具有T变种的ARM处理器核可以工作在以下两种状态: ARM状态 32位,ARM状态下执行字对准的32位ARM指令; Thumb状态 16位,Thumb状态下执行半字对准的16位Thumb指令。在Thumb状态下,程序计数器PC使用位1选择另一个半字。 ARM处理器工作状态 ARM处理器工作状态 进入ARM状态: 当操作数寄存器Rm的状态位bit[0]为0时,执行BX Rm指令进入ARM状态。 如果处理器进行异常处理(IRQ,FIQ,Undef,Abort和SWI),在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态。 ARM处理器工作状态 在程序执行的过程中,处理器可以在两种状 态下切换。需要强调的是: ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。 ARM指令集和Thumb指令集都有相应的状态切换命令。 ARM处理器在开始执行代码时,只能处于ARM状态。 ARM处理器工作状态 ARM技术基础 ARM处理器工作状态 ARM处理器工作模式 ARM寄存器组成 ARM的异常中断 ARM组织结构简介 ARM存储器接口及存储器层次 ARM处理器工作模式 ARM处理器共支持所列的7种处理器模式见下表 表中给出了CPSR[4:0]与七种工作模式的关系以及各种模式的解释。 处理器模式 特权模式 异常模式 用户和系统模式 ARM技术基础 ARM处理器工作状态 ARM处理器工作模式 ARM寄存器组成 ARM的异常中断 ARM组织结构简介 ARM存储器接口及存储器层次 ARM寄存器组成概述 R14寄存器与子程序调用 R14寄存器与异常发生 R14寄存器注意要点 R14寄存器注意要点 3.7 内部寄存器 R14寄存器注意要点 读R15的限制 读R15的限制 写R15的限制 写R15的限制 3.8 程序状态寄存器 简介 程序状态寄存器 简介 程序状态寄存器 条件代码标志 程序状态寄存器 条件代码标志 程序状态寄存器 条件代码标志 程序状态寄存器 控制位 程序状态寄存器 控制位 程序状态寄存器 控制位 程序状态寄存器 保留位 Thumb状态寄存器 ARM状态和Thumb状态之间寄存器的关系 在Thumb状态中访问高寄存器 ARM技术基础 ARM处理器工作状态 ARM处理器工作模式 ARM寄存器组成 ARM的异常中断 ARM组织结构简介 ARM存储器接口及存储器层次 3.9 异常 简介 3.9 异常 异常的入口和出口处理 3.9 异常 异常的入口和出口处理 3.9 异常 进入异常 3.9 异常 进入异常 3.9 异常 进入异常 3.9 异常 退出异常 ARM的异常中断响应过程 ARM处理器对异常的响应过程可以用伪代码描 述如下 : ARM的异常中断响应过程 每个异常模式对应有两个寄存器R13_mode、R14_mode分别保存相应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户寄存器,这样异常处理程序就可以使用这些寄存器。 FIQ模式还有额外的专用寄存器R8_fiq~R12_fiq,使用这些寄存器可以加快快速中断的处理速度。 从异常中断处理程序中返回 复位异常处理程序执行完后不需要返回,因为系统复位后将开始整个用户程序的执行。 复位异常之外的异常一旦处理完毕,便须恢复用户任务的正常执行, 这就要求异常处理程序代码能精确恢复异常发生时的用户状态。 从异常中断处理程序中返回 从异常中断处理程序中返回时,需要执 行以下四个基本操作: 异常中断向量表 中断向量表中指定了各异常中断与其处理程序的对应关系。 它通常存放在存储地址的低端。在ARM体系结构中,异常中断向量表的大小为32字节。其中,每个异常中断占据4个字节大小,保留了4个字节空间。 每个异常中断对应的中断向量表的4个字节的空间中存放一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。 通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。 异常中断向量表 存储器的前8个字中除了地址0外,全部被用作异常矢量地址。 这是因为在早期的26位地址空间的ARM处理器中,曾使用地址0捕获落在地址空间之外的load和store存储器地址。这些陷阱称为“地址异常”,因为32位的ARM不会产生落在它的32位地址空间
文档评论(0)