微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM应用系统开发详解 第2章 ARM微处理器的编程模型

ARM应用系统开发详解 第2章 ARM微处理器的编程模型

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

有关。

当确定了中止的原因后,Abort处理程序均会执行以下指令从中止模式返回,无论是在ARM状态还是Thumb状态:

SUBS PC, R14_abt, #4;指令预取中止

SUBS PC, R14_abt, #8;数据中止

以上指令恢复PC(从R14_abt)和CPSR(从SPSR_abt)的值,并重新执行中止的指令。

Software Interruupt(软件中断)

软件中断指令(SWI)用于进入管理模式,常用于请求执行特定的管理功能。软件中断处理程序执行以下指令从SWI模式返回,无论是在ARM状态还是Thumb状态:

MOV PC , R14_svc

以上指令恢复PC(从R14_svc)和CPSR(从SPSR_svc)的值,并返回到SWI的下一条指令。

Undefined Instruction(未定义指令)

当ARM处理器遇到不能处理的指令时,会产生未定义指令异常。采用这种机制,可以通过软件仿真扩展ARM或Thumb指令集。

在仿真未定义指令后,处理器执行以下程序返回,无论是在ARM状态还是Thumb状态:

MOVS PC, R14_und

以上指令恢复PC(从R14_und)和CPSR(从SPSR_und)的值,并返回到未定义指令后的下一条指令。

2.6.5异常进入/退出小节

表2-4总结了进入异常处理时保存在相应R14中的PC值,及在退出异常处理时推荐使用的指令。

表2-4异常进入/退出

返回指令

以前的状态

注意

ARM R14_x

Thumb R14_x

BL

MOV PC,R14

PC+4

PC+2

1

SWI

MOVS PC,R14_svc

PC+4

PC+2

1

UDEF

MOVS PC,R14_und

PC+4

PC+2

1

FIQ

SUBS PC,R14_fiq,#4

PC+4

PC+4

2

IRQ

SUBS PC,R14_irq,#4

PC+4

PC+4

2

PABT

SUBS PC,R14_abt,#4

PC+4

PC+4

1

DABT

SUBS PC,R14_abt,#8

PC+8

PC+8

3

RESET

NA

4

注意:

1、在此PC应是具有预取中止的BL/SWI/未定义指令所取的地址。

2、在此PC是从FIQ或IRQ取得不能执行的指令的地址。

3、在此PC是产生数据中止的加载或存储指令的地址。

4、系统复位时,保存在R14_svc中的值是不可预知的。

2.6.6异常向量(Exception Vectors)

表2-5显示异常向量地址。

表2-5异常向量表

地址

异常

进入模式

0x0000,0000

复位

管理模式

0x0000,0004

未定义指令

未定义模式

0x0000,0008

软件中断

管理模式

0x0000,000C

中止(预取指令)

中止模式

0x0000,0010

中止(数据)

中止模式

0x0000,0014

保留

保留

0x0000,0018

IRQ

IRQ

0x0000,001C

FIQ

FIQ

2.6.7异常优先级(Exception Priorities)

当多个异常同时发生时,系统根据固定的优先级决定异常的处理次序。异常优先级由高到低的排列次序如表2-6所示。

表2-6异常优先级

优先级

异常

1(最高)

复位

2

数据中止

3

FIQ

4

IRQ

5

预取指令中止

6(最低)

未定义指令、SWI

2.6.8应用程序中的异常处理

当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。

2.7本章小节

本章对ARM微处理器的体系结构、寄存器的组织、处理器的工作状态、运行模式以及处理器异常等内容进行了描述,这些内容也是ARM体系结构的基本内容,是系统软、硬件设计的基础。

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

网站地图

Top