ARM中断VIC/GIC

1. CPSR定义

31    30   29   28   27                   7      6      5      4        3       2       1      0

N      Z      C     V     Q                   I      F     T     M4     M3    M2    M1   M0

N:当前指令运算结果的31位数值,当有符号数运算时候,N=1表示结果为负数,N=0表示为零或者正数;

Z:Z=1表示运算结果为0;cmp指令执行的时候,Z=1表示比较的两个数相等;

C:溢出指示……

I:I=1 禁止IRQ中断

F:F=1 禁止FIQ中断;

T:T=1 thumb;指示正在执行的是arm or  thumb

M4-M0:控制处理区所处的模式,七种模式之一

=============================
VIC : Vectored Interrupt Controller
1. ARM Core有2个中断输入: IRQ / FIQ
    VIC负责管理外设部件的中断信号,是外设中断源和ARM CPU之间的Bridge.

     VIC具有32个中断请求输入,可将其编程分为3类:

     (1) FIQ,

           FIQ(fast interrpt request)快速中断请求要求具有最高优先级。如果分配给FIQ的请求多于一个,VIC将中断请求相或后向ARM处

           理器产生FIQ信号。当只有一个中断被分配为FIQ时可实现最短的FIQ等待,但如果分配给IFIQ级的中断多于1个,FIQ服务程序需

           要读取FIQ状态寄存器来识别产生中断请求的FIQ中断源!

     (2) 向量IRQ

           向量IRQ具有中等优先级。该级别可分别32个请求中断的16个。32个请求种的任意一个都可分配到16个向量IRQ slot中的任意一

           个,其中slot0具有最高优先级

     (3) 非向量IRQ。
           非向量IRQ的优先级最低

2. 向量中断、非向量中断

    (1) 向量中断就是不同的中断有不同的入口地址,

         向量中断实时性好,非向量中断简单。向量者,矢量也,即指方向,门路。
         向量中断------由硬件提供中断服务程序入口地址;

         VIC的vecaddr中存放的就是真正的中断服务程序的地址,直接取出来跳过去执行就可以了。所以向量中断较快。

       向量中断模式用于RESET、NMI、异常处理。

       当向量中断产生时,控制器直接将PC赋值,如跳刿x0000000d处,而在0x0000000d地址处通常放置

       ISR服务程序地址LDR PC, =ISR_HANDLER


    (2) 非向量中断就只有一个入口地址,进去了在判断中断标志来识别具体是哪个中断。

          非向量中断------由软件件提供中断服务程序入口地址


          非向量中断发生后,VIC中的vecaddr中会存放一个默认中断服务程序的地址,这个程序是被所有的非向量中断公用的,

          他执行的作用就是判断究竟是发生了那个非向量中断,然后再转向真正要被执行的中断服务程序。

          其实,所有的非向量中断可以看成是一个向量中断。

       非向量中断模式,有一个寄存器标识位,跳转到统一的函数地址,此函数通过判别寄存器标识位和优

       先级关系进行中断处理 
         快速中断FIQ也可以看作是一个向量中断,只不过不需要从VIC的vecaddr中取地址,而是直接跳到相应地址执行,

         可以看作是一个指定了向量地址的中断。

 

       非向量中断模式处理方式是一种传统的中断处理方法,当系统产生中断的时候,系统将INTPND寄存器

       中对应标志位置位,然后跳转到位于x18处的统一中断函数中;该函数通过读取INTPND寄存器中对应

       标志位来判断中断源,并根据优先级关系再跳到对应中断源的处理代码中处理中断


3. 为什么会有向量IRQ和非向量IRQ?

    44B0X 是基于ARM7TDMI的芯片。ARM系列内核对于IRQ中断的处理就是通过查询中断标志寄存器来确

    定中断源,并执行对应的中断服务程序,这也就是非向量中断处理方法了?

    4B0X的厂家三星为了加快IRQ中断的响应速度,在此基础上添加了另外一种方法,其实也就是单片机

    都采用的固定中断向量地址的办法,很明显这种方法减少了中断响应的时间?

 

     向量中断模式是当CPU读取位于0x18处的IRQ中断指令的时候,系统自动读取对应于该中断源确定地址上的指令取代0x18处的指令,通过跳转令系统直接跳转到对应地址函数中,节省了中断处理时间提高了中断处理速度。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值