工作模式切换(嵌入式系统原理及应用实验报告).docVIP

工作模式切换(嵌入式系统原理及应用实验报告).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
工作模式切换(嵌入式系统原理及应用实验报告)

嵌入式系统原理及应用实验报告 ARM的7种工作模式: 用户模式(usr):ARM处理器正常的程序执行状态。 快速中断模式(fiq):用于高速数据传输或通道处理。 外部中断模式(irq):用于通用的中断处理。 管理模式(svc):操作系统使用的保护模式。 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存 储及存储保护。 系统模式(sys):运行具有特权的操作系统任务。 未定义指令终止模式(und):当未定义的指令执行时进入该模式,可用于支持硬 件协处理器的软件仿真。 注意: 用户模式是最常见的模式。 除了用户模式的其他6个模式称为特权模式。 在用户模式下是不可以切换到特权模式的。 除了用户模式和系统模式,其他5个称为异常模式,常用于处理中断 或异常,以及需要访问受保护的系统资源等情况。 ARM的37个寄存器 用户模式 非用户模式(特权模式) 异常模式 用户 系统 管理 中止 未定义 IRQ FIQ R0 ~ R7 R8 ~ R12 R8_fiq ~ R12_fiq R13 ~ R14 R13_svc R14_svc R13_abt R14_abt R13_und R14_und R13_irq R14_irq R13_fiq R14_fiq R15 ARM状态下的寄存器组织分为通用寄存器(31个)和状态寄存器(6个)。 其中,通用寄存器包括R0 ~ R15,可分为四类: 未分组寄存器:R0 ~ R7 用于保存地址或数据。是所有处理器模式下共用的寄存器,在模式切换时 必须进行保护,进堆。 分组寄存器:R8 ~ R12 FIQ模式有单独的分组寄存器R8_fiq~R12_fiq,FIQ(快速中断)处理程序 不用保存和恢复中断现场,中断处理更加快速。 FIQ以外的分组寄存器R8~R12为四种异常模式(Svc,Abort,Undef,IRQ)共 用,模式切换时需保护。 分组寄存器:R13 ~ R14 R13通常用做堆栈指针SP ,习惯用法,非强制。 R14称作子程序链接寄存器(Link Register-LR),简称LR,用于存放当前 子程序的返回地址。当程序执行子程序调用指令BL,BLX时,当前的PC将 保存在R14中。执行完子程序后,只要将R14复制到PC,子程序即可返回。 每一种异常模式都有自已的物理R13、R14。 程序计数器:R15(PC) 寄存器R15被用作程序计数器,也称为PC 。 R15值的改变将引起程序执行顺序的变化,这有可能引起程序执行中出现 一些不可预料的结果 。 ARM处理器采用多级流水线技术,因此保存在R15的程序地址并不是当前 指令的地址 。 一些指令对于R15的用法有一些特殊的要求 。 还有6个状态寄存器,分别为CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq 。 CPSR:当前程序状态寄存器,指示当前程序的状态信息,包括条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。 SPSR:程序状态保存寄存器。每种异常模式都有一个对应的SPSR物理寄存器( SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq ),当异常出现时,用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。 程序解说: .global _start /*定义全局变量*/ .text /*关键字,程序从此开始,程序放到存储代码中,闪存*/ _start: /*程序从这里开始 */ # /*注释 */ B /*声明变量*/ NOP /*在此没有操作*/ MRS R0,CPSR /*把程序状态寄存器的值存到R0中*/ BIC R0,R0,#0x1F /*主位清0,是一种逻辑运算,把R0的后5位变成0 , 其他位不

文档评论(0)

kaiss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档