ARM体系结构

ARM微处理器的特点:

1、体积小、低功耗、低成本、高性能

2、支持 Thumb/ARM 双指令集

3、大量使用寄存器,指令执行速度更快

4、大多数数据操作在寄存器中完成

5、寻址方式灵活简单、执行效率高

6、指令长度固定

 

ARM系列及命名:

ARM7系列:属于低端ARM处理器核,最适合用于对价位和功能要求较高的消费类应用

主要应用领域:工业控制、网络和调制解调器设备、移动电话等多种多媒体和嵌入式应用

ARM7DMI:T表示支持Thumb,D表示支持片上调试 Debug,M表示内嵌硬件乘法器 Multiplier,I表示嵌入式ICE 仿真器,支持

片上断点和调试点 in-circuit emulater

 

ARM7系列处理器特点:

1、具有嵌入式ICE逻辑,调试开发方便

2、功耗极低,适合便携式产品开发

3、3级流水线结构:取指、译码和执行

     取指: 从存储器中装载指令

     译码:对刚装载的指令进行识别

     执行:处理指令并把结果写回对应的寄存器

4、支持Thumb

5、支持多种操作系统

6、指令与ARM9、ARM10系列兼容,便于升级

 

ARM9系列处理器特点:

高性能和低功耗特性方面提供最佳的性能

主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数码相机等

ARM9有5级流水线:FETCH、DECODE、EXECUTE、MEMORY、WRITE

 

 

ARM与THUMB:

ARM与THUMB之间的状态切换不影响处理器模式或寄存器的内容,默认情况ARM状态

切换方法:

进入THUMB状态:操作数寄存器Rm的状态位 bit[0] 置1,执行 BX Rm

进入ARM状态:操作数寄存器Rm的状态位 bit[1] 置1,执行 BX Rm

 

ARM微处理器的存储器格式:

1、支持最大寻址空间为4GB

2、存储格式:大端(低字节存放于高地址中),小端(高字节存放在高地址中)

 

ARM处理器工作模式(7种):

1、USR模式:正常用户模式

2、FIQ模式:快速中断请求,支持高速数据传送或通道处理

3、IRQ模式:普通中断请求

4、SVC模式:操作系统保护模式,处理软件中断

5、ABT终止:处理存储器故障,实现虚拟存储器和存储器保护

6、UND未定义:处理未定义的指令,支持硬件协处理器的仿真

7、SYS系统模式:与USR模式类似

 

ARM寄存器组成:

31个通用寄存器:R0-R15,R13-R14(svc、abt、und、irq、frq)

6个状态寄存器:CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_frq

R0-R7:普通工作寄存器

R8-R12:用于对场景信息的保留

R13:作为堆栈指针

R14:作为子程序连接寄存器,当执行BL子程序调用指令时,可以从R14中得到R15的备份

在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将CP的当前值拷贝给R14,执行完子程序

后,又将R14的值拷贝回PC,即可完成子程序的调用返回

      BL   SUB1

      ......

SUB1:

      ......

      MOV PC,LR           ;完成子程序返回

 

R15:程序计数器(PC)

 

 

CPSR(当前程序状态寄存器)、SPSR为备份的CPSR

 

N、Z、C、V为标志位

N: 当用两个补码表示的带符号数进行运算时,N=1表示运算结果为负数,N=0表示结果是正数或0

Z:Z=1表示结果为0,Z=0表示结果为非0

V:加/减法运算指令,V=1表示符号位的溢出

C:加法进位时,C=1,减法借位时,C=0,移位操作的非加/减法运算指令,C为移出的最后一位,其它非加/减法运算,C通常不变

 

I、F、T 和 M[4:0] 称为控制位,发生异常时这些位可以改变,M[4:0]可以选择处理器模式(7种)

I=1,禁止IRQ中断,F=1,禁止FIQ中断

T标志位反映处理器运行状态,T=1,THUMB状态,T=0,ARM状态

 

 

ARM体系结构所支持的异常类型:

1、复位:复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行

2、未定义指令:遇到不能处理的指令,定义未定义指令异常

3、软件中断:执行SWI指令产生,用于用户模式下的程序调用特权指令

4、指令预取中止:处理器预取指令的地址不存在,或该地址不允许当前指令访问

5、数据中止:处理器数据访问指令的地址不存在,或该地址不允许当前指令访问

6、IRQ:外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常

7、FIQ:快速中断请求引脚有效,且CPSR的F位为0时,产生FIQ异常

 

ARM体系中断向量表:

 

 

 

异常执行的一段代码通常为:

SUB LR,LR,#4     ;FIQ、IRQ的中断处理,因为当出现异常时,下一条指令的地址存入连接寄存器LR

STMFD SP!,{reglist,LR}

... ...

LDMFD SP!,{reglist,LR}

 

对异常的响应:

1、将下一条指令的地址存入相应的链接寄存器 LR,以便程序在处理异常返回时能从正确的位置重新开始执行,若是从ARM状态进入

LR寄存器中保存的是下一条指令的地址( PC+4或PC+8) ,与异常的类型有关

2、将CPSR复制到相应的SPSR中

3、根据异常类型,强制设置CPSR的运行模式位

4、强制PC从相关的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序中

 

还可以设置中断禁止位,以禁止中断发生,如果异常发生时,处理器处于THUMB状态,则从异常向量加载入PC时,处理器自动切换

到ARM状态

 

异常处理完毕后,返回:

1、将LR的值减去相应的偏移量后送到PC中

2、将SPSR复制回CPSR

3、若在进入异常处理时设置了中断禁止位,要在此清除

 

可以认为应用程序总是从复位异常处理程序开始执行,因为复位异常处理不需要返回

 

应用程序中的异常处理:

当系统呢运行时,异常可能随时发生,进行异常处理,采用的方式是异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,

当ARM处理器发生异常时,程序计数器PC会强制设置为对应的异常向量,从而跳转到处理程序,当异常处理完成后,返回主程序执行

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值