关于ARM架构

关于ARM架构



ARM处理器的运行模式

在这里插入图片描述

其中Monitor模式是Cortex-A特有的安全模式
Cortex-A多了一种工作模式:monitor

  1. usr 用户模式: 非特权模式,大部分应用程序运行在这个模式下
  2. fiq 快中断模式: 高优先级的中断
  3. irq 普通中断模式: 低优先级的中断
  4. svc 超级用户模式(管理模式): 软中断和复位
  5. abort 中止模式: 当存取异常
    读取指令中止
    读取数据中止
  6. undef 未定义指令模式: 执行到一个cpu不能识别的指令,当一个高版本的指令(cortex-a)运行到低版本的cpu(arm7)上是,可能会发生未定义指令异常
  7. sytem 系统模式: 特权模式,os处在系统模式下
  8. monitor 安全模式: 为安全而扩展出

处理器模式可以通过软件进行控制切换,也可以通过外部中断或异常处理过程切换,大多数用户程序运行在用户模式下,这时应用程序不能访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。需要切换时,应用程序产生异常处理,在异常处理中进行处理器模式切换。

ARM寄存器介绍

ARM处理器有37个寄存器,

由于Cotex-A多了一种monitor工作模式,所以又多了三个寄存器(R13_mon,R14_mon,SPSR_mon),Cortex-A系列有40个寄存器

cortex-a的寄存器个数

1. system和usr公用一组寄存器
2. r0-r7 一组 ,8种模式公用一组 8
3. r8-r12 2组,fiq私有一组,其余7种公用一组 2*5
4. r13(sp) 7组 7
5. r14(lr) 7组 7
6. r15(pc) 1组 1
7. cpsr 1组 1
8. spsr 6组 6

Cotex-A 寄存器一共有40个寄存器
在这里插入图片描述

r0 ~ r7 所有工作模式共用
r8 ~ r12 除去FIQ模式,其它工作模式共用
r13 ~ r14 均单独使用
r15 所有工作模式共用

通用寄存器

在这里插入图片描述

r0 -r11         一般用途
lp(r12)     保存栈指针
sp(r13)     栈指针  用来指向一个可以使用的内存
lr(r14)     链接寄存器,用来保存pc的值
pc(r15)     程序计数器,用来记录程序执行的位置
cpsr        当前程序状态寄存器,用来记录cpu运行的状态
spsr        保存程序状态寄存器

ARM数据类型

ARM采用32位架构
ARM约定:
Byte(字节) 8bits
Halfword(半字) 16bits
Word(字) 32bits
Doubleword(双字) 64bits (Cortex-A处理器特有)

ARM指令集

大部分ARM core提供:

ARM指令集(32-bit)
Thumb指令集(16-bit)

ARM11处理器:

ARM指令集(32-bit)
16位和32位的Thumb-2指令集

Cotex-A 处理器

ARM指令集(32-bit)
16位和32位的Thumb-EE指令集

Jazelle cores支持Java bytecode
当处理器执行在Jazelle状态:
所有指令8bits宽
处理器执行word存取,一次取4条指令

AMBA (arm微控制器总线架构)

AMBA:
AHB 高速总线 cpu core ,DMA,SDRAM,SRAM,FLASH,APB BRIDGE
APB 外设总线 GPIO,INTERRUPT,I2C,SPI,TIMER,ADC,USB

在这里插入图片描述

ARM处理器的后缀名

T: 支持thumb 指令
D: 支持片上DEBUG
M: 64位的长乘法
I: 嵌入式ICE逻辑单元
S: TDMI的缩写
E: 支持DSP指令
J: java字节码F: 硬件浮点

在这里插入图片描述

	N 运算结果为负
	Z 运算结果为0
	C 进位,借位
	V 溢出位

处理器的状态 4种

T=0;J = 1 处理器处于Jazelle状态
T = 0;J=0; 处理器处于 ARM 状态
T = 1;J=0 处理器处于 Thumb 状态
T = 1;J=1 处理器处于 ThumbEE 状态

处理器模式 8种

10000 User mode; 10001 FIQ mode; 10011 SVC mode;
10111 Abort mode; 11011 Undfined mode; 11111 System mode;
10110 Monitor mode; 10010 IRQ

异常处理

1. 8种模式
    7种特权,1种非特权(usr)
2. 7种特权:
    2种 非异常的特权模式: system,mon
    5种 异常的特权模式: fiq,irq,svc,undef,abort
3. 异常处理: 异常源一旦发生,cpu所做的处理,这个过程是cpu自动完成的,不需要代码实现
            异常处理实现需要7步,4大3小
4. 异常返回:
    恢复pc
    恢复cpsr

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

处理器五种异常工作模式与七种异常源的对应关系

在这里插入图片描述

异常向量表基地址:

arm7,ARM9,ARM10只可以在0(低端向量表)地址和0xffff0000(高端向量表)arm11,cortex-a
可以在任意设置异常向量表的基地址,由cp15当中的c12寄存器控制异常向量表的基地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值