ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:441.69KB ,
资源ID:6302936      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6302936.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ARM七种运行模式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ARM七种运行模式.docx

1、ARM七种运行模式s3c2440中断体系结构: 如何用中断? 1.中断发生:保存别人的状态 如何中断可以事先设置,对程序初始化,使能中断。 中断发生后,进入中断模式 2.中断处理 分辨中断源 进行不同的处理 清理工作 3.恢复别人的状态过程: 外界信号上升沿、下降沿,高电平、低电平都可以设置成信号 引脚设置,再进入状态寄存器。 状态寄存器连接屏蔽寄存器 进入第二个状态寄存器,储存各种中断,可以储存多个中断 进入优先级寄存器,判断中断运行顺序 再进入屏蔽使能寄存器和模式寄存器 进入优先级寄存器 进入cpu处理 cpu的处理:进入入口地址 b handleIRQ 计算返回地址,被中断处地址 保存现

2、场,即各寄存器状态 调用处理函数 函数运行完后恢复现场 函数的处理:分辨终端 处理中断 清除数据,即清除中断1.中断寄存器 arm的七种模式 1.usr 用户模式 r0-r15 2.fiq 快中断模式 r0-r7 专用寄存器r8-r15, 3.svc 管理模式 专用寄存器r13-r14, 4.abt 数据访问终止模式 5.sys 系统模式 6.und 未定义指令终止模式 7.irq 中断模式 几种模式的区别:嵌入式的中断: a.不同的寄存器 b.不同的权限 c.触发条件不一样 何时使用几种模式: usr 用户模式 :arm处理器正常的程序执行状态 fiq 快中断模式:高速数据传输和通道处理 s

3、vc 管理模式 :操作系统使用的保护模式 abt 数据访问终止模式:数据或者指令终止时进入,用于虚拟存储或者存储保护 sys 系统模式:运行具有特权的操作系统任务und 未定义指令终止模式:未定义的指令执行时进入该模式,用于支持硬件处理器的软件仿真. irq 中断模式:用于通用的中断处理 后六种是特权模式,用于处理中断、异常和特殊权限处理 用户模式是最常见的模式2.中断中的异常 中断是一种异常。 当发生中断时,cpu进入中断模式 cpu进入异常入口,异常入口是硬件规定的一个地址运行模式ARM920T 支持 7 种运行模式: 用户 (usr) ):正常 ARM 程序执行状态 快中断 (fiq)

4、):为支持数据传输或通道处理设计 中断 (irq) ):用于一般用途的中断处理 管理 (svc) ):操作系统保护模式 中止 (abt ): 数据或指令预取中止后进入 系统 (sys) ):操作系统的特权用户模式 未定义 (und) ):执行了一个未定义指令时进入模式的改变可由软件控制,或者由外部中断或进入异常引起。大部分应用程序都将在用户模式执行。 被称为特权模式的非用户模式,都将进入到中断服务或异常中去,或者访问受保护的资源。内部寄存器ARM920T 总共有 37 个寄存器,其中 31 通用 32 位寄存器和 6 个状态寄存器,但不能在同一时刻对所有的寄存器可见。处理器状态和运行模式决定了

5、哪些寄存器对程序员可见。ARM状态时内部寄存器集在 ARM 状态,16 个通用寄存器和一个状态寄存器在任意时刻都可见。在特权(非用户)模式下,将切换到指定模式的分组(banked)寄存器。图 2-3 显示了哪些寄存器在各模式下是可见的:分组寄存器被标记了阴影三角形。ARM 状态时寄存器被设为包含 16 个直接可以访问的寄存器:R0 到 R15。除了 R15,其他全部寄存器都为通用寄存器,如可能用于保存数据或地址值。除此之外,还有第 17 个寄存器用于存储状态信息。FIQ 模式包含 7 个分组寄存器,分别映射到 R8-14(R8_fiq-R14_fiq)。在 ARM 状态,有很多不需要保存寄存器

6、的 FIQ 处理程序。用户,IRQ,管理中止和未定义模式都包含两个分组寄存器映射到 R13 和 R14,允许这些模式都都包含私有堆栈指针和链接寄存器。Thumb 状态时内部 寄存器集Thumb 状态时的寄存器集为 ARM 状态时的寄存器的分配的一个子集。程序员能够直接访问 8 个通用寄存器R0 至 R7,还有程序计数器(PC),一个堆栈指针寄存器(SP),一个链接寄存器(LR)和 CPSR。各自特权模式还分别有分组堆栈指针,链接寄存器和进程保存状态寄存器(SPSR)。如图 2-4 所示。Thumb 状态访问高寄存器 (Hi-Registers )在 Thumb 状态,寄存器 R8-R15(“H

7、i registers”)不是标准的寄存器集的一部分。然而,汇编语言程序员可以受限的对它们的进行访问,可以将它们用于快速暂存。使用 MOV 指令的特殊变量可以将一个值从 R0-R7(“Lo register”)范围内的寄存器传送到高寄存器或从高寄存器到第低寄存器。使用 CMP 和 ADD 指令也可以对高寄存器的值与寄存器的值进行比较以或相加。更多内容请参考表 3-34。程序状态寄存器ARM920T 包含了一个当前程序状态寄存器(Current Program Status Register-CPSR),还有5 个用于异常程序处理的程序状态保存寄存器(Saved Program Status R

8、egisters-SPSR)。这些寄存器的功能为: 保存最近已处理的 ALU 操作的信息 控制中断的使能与禁止 设置处理器的运行模式图 2-6 显示了各位的编排状态代码标志位N,Z,C 和 V 位为状态代码标志位。算术或逻辑操作结果可能会改变这些位,并检验以决定是否应该执行某条指令。在 ARM 状态,所有指令都可能为条件执行:详情见表 3-2。在 Thumb 状态,只有分支指令才能条件执行:详情见表 3-46。控制位PSR (包含 I,F,T 和 M4:0)的末端 8 位,统称为控制位。当发生异常时将会改变这些位。如果处理器运行在特权模式,它们也可由软件控制。异常:程序暂时停止当正常程序流程被

9、暂时停止发生异常,例如响应一个来自外设的中断。在处理异常前,必须保护当前的处理器状态,以便在完成处理程序后能恢复到原来的程序。如果同时发生好几个异常,将会按照固定的顺序来分配,见 P2-13 的异常优先级。进入异常行为当处理一个异常时,ARM920T 将会进行以下活动:1. 相应链接寄存器保存下条指令的地址。如果在 ARM 状态进入异常,下条指令的地址将会复制到链接寄存器(当前 PC+4 或 PC+8,由异常决定。详情见表 2-2)中。如果在 Thumb 状态进入异常,写入链接寄存器的值则为当前 PC 偏移一个值,这样异常返回后程序能从正确的位置恢复。这意味着异常处理不需要确定异常是从什么状态

10、进入的。例如,在 SWI 的情况,无论是在 ARM 状态还是 Thumb 状态执行 SWI,MOVS PC,R14_svc 语句都将返回到下一条指令。2. 复制 CPSR 的内容到相应 SPSR 中。3. 根据异常类型强制将 CPSR 模式位设为某一个值。4. 强制 PC 从相关异常向量处取下条指令。通常也会置位中断禁止标志位,以防止不同的难处理的异常嵌套。如果一个异常发生时处理器处于 Thumb 状态,当装载异常向量地址到 PC 时会自动切换到 ARM 状态。离开异常行为:当异常结束,异常处理程序将会:1. 将链接寄存器适当减去一个偏移量并放入到 PC 中。(偏移量由异常类型决定)2. 复制

11、 SPSR 的内容返回给 CPSR 中。3. 如果在异常进入时置位了中断禁止标志位异常,清除中断禁止标志位。注意:不需要在异常结束时切换回 Thumb 状态,因为在异常前会立刻保存 CPSR 中 T 位的值到 SPSR 中,并在退出异常时从 SPSR 恢复到 CPSR 中。异常进入/ 退出总结表 2-2 总结了进入异常时保存在相关 R14 中的 PC 值和被推荐的退出异常的指令。注释:1. 此处 PC 为含预取中止的 BL/SWI/未定义指令取指令的地址。2. 此处 PC 为由于 FIQ 或 IRQ 抢先而未执行的指令地址。3. 此处 PC 为发生了数据中止的 Load 或 Store 指令的

12、地址。4. 当复位时保存在 R14_svc 的值将是不可预测的。快中断 FIQFIQ(快中断请求)异常是为支持数据传输或通道处理而设计的,在 ARM 状态拥有足够的私有寄存器来消除对寄存器保存的需求(这样最小化了对上下文的切换的开销)。将 nFIQ 输入端拉低可以实现外部产生 FIQ。由 ISYNC 输入信号端的状态决定是同步还是异步传输。当 ISYNC 为低电平,认为 nFIQ 和 nIRQ 为异步,中断前会引起同步周期延迟并影响处理器流程。无论是从 ARM 还是 Thumb 状态进入的异常,FIQ 处理时执行SUBS PC,R14_fiq,#4时,都应该避免中断。如果设置 CPSR 的 F

13、 标志位,FIQ 将会被禁止(但主义这不可能在用户模式中发生)。如果 F 标志位为零,ARM920T将在每条指令末检测 FIQ 同步发生器的输出是否为低电平。中断 IRQIRQ(中断请求)异常是一个由 nIRQ 输入端的低电平产生的一个普通中断。IRQ 的优先级低于 FIQ,当进入了相关的 FIQ,会屏蔽 IRQ。除非是在特权(非用户)模式,其他任何时刻都禁止设置 CPSR 内的 I 位。无论是从 ARM 还是 Thumb 状态进入的异常,IRQ 处理时执行SUBS PC,R14_fiq,#4时,都应该避免中断。中止中止表示不能完成当前对存储器的访问。通过外部 ABORT 输入端指示的。ARM

14、920T 在存储器访问周期期间检测中止异常。有两种类型的中止: 预取中止(Prefetch Abort):发生在指令预取期间 数据中止(Date Abort):发生在数据访问期间如果发生预取中止,将屏蔽预取指并为无效,但并不会立刻带来异常,直到指令到达流水线的执行阶段才发生。若未执行该指令,将不会发生中止,因为流水线发生了分支。如果发生数据中止,由指令类型决定其行为: 单一的数据转移指令(LDR,STR)回写到被修改的基址寄存器:中止处理程序必须意识到这点。 交换指令(SWP)执行失败,就如同没有被执行。 块数据转移指令(LDM,STM)完成。如果设置了回写,基址寄存器将被更新。如果指令会覆盖

15、基址寄存器数据(转移列表中包含基址),覆盖将会被阻止。表明了中止后所有寄存器的覆盖都会被阻止,特别是R15(通常是最后转移的寄存器)在一个被中止的 LDM 指令会被阻止覆盖。中止机制使得分页虚拟存储器系统可以被实现。在这样一个系统中允许处理器产生任意地址。当无法获取某一地址上的数据时,内存管理单元(Memory Management Unit-MMU)将表明产生一个中止。中止处理程序必须紧接着找出中止原因,使得被请求的数据可用并重试被中止的指令。应用程序并不需要了解可以使用的内存总量,也不需要关心中止对其状态以任何方式被影响。当确定中止原因后,处理程序应该不顾状态(ARM 或 Thumb)执行

16、下列语句:SUBS PC,R14_abt,#4 ; 预取中止SUBS PC,R14_abt,#8 ; 数据中止这将恢复 PC 和 CPSR,并重试被中止的指令。软件 中断 SWI软件中断指令(Software Interrupt Instruction-SWI)用于进入管理模式,通常请求一个特定的管理功能。SWI处理程序应当在状态(ARM 或 Thumb)中通过执行下列指令返回:MOV PC,R14_svc这将恢复 PC 和 CPSR,并返回到 SWI 之后的指令。注意 :nFIQ,nIRQ,ISYNC,LOCK,BIGEND 和 ABORT 引脚只存在于 ARM920T CPU 内核之中。未

17、定义指令当 ARM920T 遇到不能处理的指令时,将产生未定义指令陷阱。这个机制可以用于软件仿真扩展 Thhumb 指令集或 ARM 指令集。仿真了失败指令后,陷阱处理程序应该执行在状态(ARM 或 Thumb)中执行下列指令:MOVS PC,R14_und这将恢复 CPSR,并返回到未定义指令之后的指令。异常向量下表显示了异常向量地址异常优先级当同时出现多个异常时,一个固定的优先级系统将确定它们的处理顺序:高优先级 :1. 复位2. 数据中止3. 快中断 FIQ4. 中断 IRQ5. 预取 中止低优先级 :6. 未定义指令,软件中断并不是所有的异常都可以在同一时刻发生 !未定义指令和软件中断

18、异常互斥,因为它们分别对应于当前指令的的特定(非重叠)译码。如果发生数据中止的同时发生 FIQ 并且又使能了 FIQ (CPSR 的 F 标志位被清零),ARM920T 将先进入数据中止处理程序,然后立即转向 FIQ 向量。当从 FIQ 正常返回将会引起数据中止处理程序恢复执行。为了确保传输错误不会在检测中被遗漏,必须将数据中止置为比 FIQ 更高的优先级。进入此异常的时间需要按加上最坏情况下 FIQ 的时间延迟来算。中断延迟当使能了 FIQ ,其最坏情况的延迟包括:请求通过同步器的最长时间(Tsyncmax,如果为异步),加上完成最长指令的时间(Tldm,最长指令是装载包括 PC 在内所有的

19、寄存器的 LDM 指令),加上数据中止进入的时(Texc),再加上 FIQ 进入的时间(Tfiq)。在该时间末 ARM920T 将会执行位于 0x1C 处的指令。Tsyncmax 为 3 个才处理器周期,Tldm 为 20 个周期,Texc 为 3 个周期,Tfiq 为 2 个周期。因此总时间为 28个处理器周期。在一个使用连续 20MHz 处理器时钟的系统中,其只过了 1.4 毫秒。最大 IRQ 延迟的计算与此类同,但还必须实际考虑, FIQ 具 有更高的优先级并且能推迟任意长度的时间进入到 IRQ 处理程序。FIQ 或 IRQ 最小延迟包括请求通过同步器的最短时间(Tsyncmin)加上

20、Tfiq。此时为 4 个处理器周期。复位当 nRESET 信号端变为低电平时,ARM920T 将放弃正在处理的指令,然后从递增(incrementing)字地址继续取指令。当 nRESET 信号端变为高电平时,ARM920T 将:1. 复制当前 PC 和 CPSR 的值覆盖到 R14_svc 和 SPSR_svc 中。未定义保存的 PC 和 SPSR 的值2. 强制将 M4:0设置为 10011(管理模式),置位 CPSR 中的 I 和 F 位并清除 CPSR 的 T 位。3. 强制 PC 从 0x00 地址开始对下一条指令的取指。4. 在 ARM 状态恢复执行。 (注:可编辑下载,若有不当之处,请指正,谢谢!)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1