刘彦文《基于ARM的嵌入式系统原理及应用》第2章.ppt

刘彦文《基于ARM的嵌入式系统原理及应用》第2章.ppt

  1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
刘彦文《基于ARM的嵌入式系统原理及应用》第2章

表2.2 不同方式位对应的不同操作方式 M[4:0] Mode(方式) Thumb状态可见寄存器 ARM状态可见寄存器 10000 User(用户) r0-r7、SP、LR、PC、CPSR r0-r14、PC、CPSR 10001 FIQ(快速中断请求) r0-r7、SP_fiq、LR_fiq、PC、 CPSR、SPSR_fiq r0-r7、r8_fiq-r14_fiq、PC、 CPSR、SPSR_fiq 10010 IRQ(中断请求) r0-r7、SP_irq、LR_irq、PC、 CPSR、SPSR_irq r0-r12、r13_irq、r14_irq、PC、 CPSR、SPSR_irq 10011 Supervisor(管理) r0-r7、SP_svc、LR_svc、PC、 CPSR、SPSR_svc r0-r12、r13_svc、r14_svc、PC、 CPSR、SPSR_svc 10111 Abort(中止) r0-r7、SP_abt、LR_abt、PC、 CPSR、SPSR_abt r0-r12、r13_abt、r14_abt、PC、 CPSR、SPSR_abt 11011 Undefined(未定义) r0-r7、SP_und、LR_und、PC、 CPSR、SPSR_und r0-r12、r13_und、r14_und、PC、 CPSR、SPSR_und 11111 System(系统) r0-r7、SP、LR、PC、CPSR r0-r14、PC、CPSR ⒊ 保留位 在CPSR和SPSR中,保留位没有用处,仅仅用于保留。当改变CPSR或SPSR标志位或控制位时,要确认这些保留位没有被改变。同样要确认程序不依赖保留位所含的专门值,因为后续处理器可能将这些位置1或清0。 2.4.6 异常 异常出现在程序正常的流动被暂时停止时。例如,对从一个外部设备来的中断进行服务。对异常处理前,ARM7TDMI处理器保留当前处理器的状态,使得异常处理例程结束时能够返回原来的程序。 如果2个或多个异常同时发生,那么以固定的次序处理异常。 ⒈ 异常进入和退出 表2.3汇总了异常进入时保存在r14中的PC值和退出异常处理时推荐使用的返回指令。 表2.3 异常进入和退出 异常或 进入 返 回 指 令 先前的状态 ARM r14_x Thumb r14_x 注 释 BL MOV PC,r14 PC+4 PC+2 此处的PC是BL、SWI的地址,或者是未定义指令(在取指时发生了预取中止Abort)的地址 SWI MOVS PC,r14_svc PC+4 PC+2 UDEF MOVS PC,r14_und PC+4 PC+2 PABT SUBS PC,r14_abt,4 PC+4 PC+4 FIQ SUBS PC,r14_fiq,#4 PC+4 PC+4 此处的PC是指令的地址,而该指令由于FIQ或IRQ占先还没有被执行 IRQ SUBS PC,r14_irq,#4 PC+4 PC+4 DABT SUBS PC,r14_abt,8 PC+8 PC+8 此处的PC是装入或存储指令的地址,而这些指令产生了数据中止(Data Abort) RESET 无 — — 保存在r14_svc中的值在reset时是不可预知的 ⒉ 进入异常 处理器以如下方法处理一个异常: ⑴ 在对应的LR中保存下一条指令的地址。 当异常是从ARM状态进入,处理器复制下一条指令的地址到LR,这时地址是PC+4或PC+8,与不同的异常有关。 当异常从Thumb状态进入,处理器写当前的PC值到LR,这时地址是PC+2或PC+4,与不同的异常有关。 异常处理不必确定进入异常前的状态。例如由SWI进入异常,MOVS PC,r14_svc总是返回到下一条指令,而不管SWI是在ARM或Thumb状态下被执行。 ⑵ 复制CPSR到应对的SPSR。 ⑶ 强制CPSR方式位成为某一个值,这个值取决于不同的异常。 ⑷ 强制PC从相关的异常向量处取下一条指令。 ⒊ 离开异常 当异常处理完时,异常处理程序必须: ⑴ 参考表2.3,对应不同类型的异常,直接传送LR到PC或从LR中减去一个偏移量送到PC。 ⑵ 复制SPSR到CPSR。 ⑶ 清除在进入异常时被设置的中断禁止标志。 将SPSR值恢复到CPSR的同时,自动地将T位的值恢复成进入异常前的值。 ⒋ 快速中断请求 快速中断请求(FIQ)异常支持数据传输或通道处理。在ARM状态,FIQ方式有8个分组寄存器,使用它们可以免除保存寄存器的要求。这是上下文切换最小开销的一种方法

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档