微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM体系结构知识点

ARM体系结构知识点

时间:11-11 来源:互联网 点击:

  1. 据栈中,入栈的顺序与参数的顺序相反,即最后一个参数先入栈。

  2. 在子程序中用R4~R11来保存局部变量,这时,R4~R11可以记作V1~V8;而在Thumb程序中,通常只能使用寄存器R4~R7。

  3. 寄存器R12用作子程序间的scratch寄存器,记作ip,在子程序间的连接代码中常有这种使用规则

三、异常

当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。

当一个异常出现以后,ARM微处理器会执行以下几步操作

1.将下一条指令的地址存入相应连接寄存器LR,以便程序在处理异常返回时能从正确的位置重新开始执行。

2.将CPSR复制到相应的SPSR中。

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

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

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

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

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

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

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

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

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

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

ARM体系中断向量表

优先级

地址

异常原因

进入模式

1

0x0000,0000

复位

管理模式

6

0x0000,0004

未定义指令

未定义模式

6

0x0000,0008

软件中断

管理模式

5

0x0000,000C

中止(预取指令错误)

中止模式

2

0x0000,0010

中止(预取数据错误)

中止模式

0x0000,0014

保留

保留

4

0x0000,0018

IRQ(外部中断,且I允许)

IRQ

3

0x0000,001C

FIQ(外部中断,且F允许)

FIQ


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top