您的位置 首页 电源

ARM中的反常和中止

ARM处理器中主要有7个异常(2个中断异常):1、复位异常;在以ARM为核的单片机中,常把下列事件作为引起复位的原因。bull;上电复位:…

ARM处理器中主要有7个反常(2个间断反常):

1、复位反常;在以ARM为核的单片机中,常把下列事情作为引起复位的原因。

• 上电复位:在上电后,复位使内部到达预订的状况,特别是程序跳到初始进口;

•复位引脚上的复位脉冲:这是由外部其他操控信号引起的;

• 对体系电源检测发现过压或欠压;

• 时钟反常复位。

ARM处理器复位后,处理器硬件将进行以下操作:

• 强制进入管理形式;

• 强制进入ARM状况;

• 跳转到肯定地址PC=0x00000000处履行;

• 制止IRQ间断和FIQ间断。

复位后,程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
1
0
1
0
0
1
1

上电复位后,进入管理形式,履行操作体系程序,一般用做对体系初始化,例如开间断等;然后切换到用户形式,开端履行正常的用户程序。

切换到用户形式可运用下列程序:

MRS R0,CPSR ;读状况寄存器
BIC R0,R0,#03;把末两位清0
MSR CPRS_c,R0;把修改后的值加载给状况寄存器,切换完毕
……;用户程序

2、未界说指令反常;因为ARM运用32位代码,包括的信息量很大,可达2的31方(4G)。ARM指令集不能竭尽一切代码。当ARM处理器遇到无法译码的指令时就会发

生未界说指令反常。进入间断处理程序。

ARM的未界说指令反常有以下两种状况:

(1)遇到一条无法履行的指令,此指令没有界说;

(2)履行一条对协处理器的操作指令,在正常状况下,协处理器应该应对,但协处理器没有应对。

未界说反常间断时,状况寄存器中的F位不变。运用下列指令退出反常间断,回来原程序 。

• 把下一条指令的地址复制给LR;

• 把程序状况寄存器CPSR复制给SPSR_und;

• 强制进入未界说形式;

• 强制进入到ARM形式;

• 跳转到肯定地址PC=0x00000004处履行;

• 制止IRQ间断。

进入间断后,程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
x
0
1
1
0
1
1

MOVS PC,R14.

3、软件间断反常;是由指令SWI引起的。程序在履行这一指令后,进入反常间断。处理器呼应间断,硬件履行如下的操作。

• 把下一条指令的地址复制给LR;

• 把程序状况寄存器CPSR复制给SPSR_svc;

• 强制进入管理形式;

• 强制进入到ARM状况;

• 跳转到肯定地址PC=0x00000008处履行;

• 制止IRQ间断。

进入间断后的程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
x
0
1
0
0
1
1

软件间断处理程序完结后,运用下列指令回来到原间断处:MOVS PC,R14.

4、预取指间断反常;由程序存储器引起的间断反常叫做预取指间断反常;由数据存储器引起的间断反常叫做数据间断反常。因为ARM的指令是3级流水线结构,读

指令周期是提早进行的,因而把读取指令的进程一般称预取指。假如在获得指令的一起程序存储器宣布间断信号,则ARM处理器把这一条指令符号位无效,然后等候执

行。有两种或许如下:

• 当履行这条指令前程序产生跳转,则这条无效指令不引起反常间断;

• 当履行到这条指令时,处理器会产生预取指间断反常,引起间断。

当记进入预取指反常间断时,处理器硬件呼应间断,履行以下的操作:

• 把间断时PC的地址复制给LR;

• 把程序状况寄存器CPSR复制给SPSR_abt;

• 强制进入间断反常形式;

• 强制进入到ARM状况;

• 跳转到肯定地址PC=0x0000000C处履行;

• 制止IRQ间断。

进入间断后,程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
x
0
1
0
1
1
1

预取指间断反常间断回来时,应该履行下列指令:SUBS PC,R14,#4.

5、数据间断反常;ARM处理器拜访数据存储器时,在读取数据的一起数据存储器宣布了间断信号,引起数据间断反常。

数据间断反常间断服务程序回来时,运用下列指令:

SUBS PC,R14,#8

上述指令是回来到间断时所履行的指令,意图是再一次从数据存储器中读取数据。假如不再一次读取数据,则履行下一条指令,此刻运用下列指令回来:

SUBS PC,R14,#4

• 把间断时的PC的地址复制给LR;

• 把程序状况寄存器CPSR复制给SPSR_abt;

• 强制进入间断反常形式;

•强制进入到ARM状况;

• 跳转到肯定地址PC=0x00000010处履行;

• 制止IRQ间断。

进入间断后,程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
x
0
1
0
1
1
1

6、间断恳求(IRQ)反常;例如:定时器间断、串行口通讯间断、外部信号间断和A/D处理间断等。IRQ间断是可屏蔽的。在状况寄存器中的I位便是IRQ的屏蔽位

。当I=1时。则屏蔽IRQ间断,当I=0时,则答应间断。处理器复位后置I为1,封闭间断。

当产生IRQ间断时,处理器硬件呼应间断,履行下列操作:

• 把间断时的PC的地址值复制给LR;

• 把程序状况寄存器CPSR复制给SPSR_irq;

• 强制进入IRQ反常形式;

•强制进入到ARM状况;

• 跳转到肯定地址PC=0x00000018处履行;

• 制止IRQ间断。

进入间断后,程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
x
0
1
0
0
1
0

完结间断处理后,程序履行下列回来原间断处:SUBS PC.R14,#4.

7、快速间断(FIQ)恳求反常;FIQ快速间断是可屏蔽的。在状况寄存器中的F位便是FIQ的屏蔽位。当F=1时。则屏蔽FIQ间断,当F=0时,则答应间断。处理器复

位后置F为1,封闭间断。

当产生IRQ间断时,处理器硬件呼应间断,履行下列操作:

• 把间断时的PC的地址值复制给LR;

• 把程序状况寄存器CPSR复制给SPSR_fiq;

• 强制进入FIQ反常形式;

•强制进入到ARM状况;

• 跳转到肯定地址PC=0x0000001C处履行;

• 制止FIQ间断。

进入间断后,程序状况寄存器如下:

……
I
F
T
M4
M3
M2
M1
M0
1
x
0
1
0
0
0
1

完结间断处理后,程序履行下列回来原间断处:SUBS PC.R14,#4

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/276454.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部