首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM中的异常和中断

ARM中的异常和中断

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

返回列表