Chinaunix首页 | 论坛 | 博客
  • 博客访问: 588763
  • 博文数量: 169
  • 博客积分: 2656
  • 博客等级: 少校
  • 技术积分: 1685
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-30 13:03
文章分类

全部博文(169)

文章存档

2011年(1)

2010年(135)

2009年(33)

我的朋友

分类: 嵌入式

2010-07-19 01:46:58

向量中断就是不同的中断有不同的入口地址,非向量中断就只有一个入口地址,进去了在判断中断标志来识别具体是哪 个中断。向量中断实时性好,非向量中断简单

向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类,FIQ,向量IRQ和非向量 IRQ。
FIQ(fast interrpt request)快速中断请求要求具有最高优先级。如果分配给FIQ的请求多于一个,VIC将中断请求相或后向ARM处理器产生FIQ信号。当只有一个中 断被分配为FIQ时可实现最短的FIQ等待,但如果分配给IFIQ级的中断多于1个,FIQ服务程序需要读取FIQ状态寄存器来识别产生中断请求的FIQ 中断源!
向量IRQ具有中等优先级。该级别可分别32个请求中断的16个。32个请求种的任意一个都可分配到16个向量 IRQ slot中的任意一个,其中slot0具有最高优先级
非向量IRQ的优先级最低
1. 中断优先级不同: 非向量中断比向量中断要低(向量中断则比FIQ优先级低);
2. 两者的设置方式不同:非向量中断只需要通过VICDefVectAddr来设置ISR地址,然后在VIC控制器中使能外设中断即可;而向量中断配置时,先 选择为IRQ中断,然后分配中断通道(即优先级。此为IRQ内部的优先级,不同于FIQ、IRQ与非向量中断三者的优先级意义),再在 VICVectAddrx 中设置ISR地址,最后使能向量中断。
3. 中断响应异同:响应过程两者皆是由VIC硬件来控制,用户软件不用干预。共同点是,当中断产生,处理器进入IRQ模式,并将对应的ISR地址保存寄存器的 值,复制到VICVectAddr寄存器中,PC根据此地址进行跳转,执行相应ISR程序。而区别如下:
a. 非向量中断:ISR地址由VICDefVectAddr复制到VICVectAddr,如果有多路非向量中断,在确定是哪路中断产生时,要通过 VICIRQStatus寄存器来查询;
b. 向量中断:ISR地址由VICVectAddrx复制到VICVectAddr,如果有多路向量中断,在同时产生中断时,处理器响应的是具有最高优先级的 IRQ中断。
4. 中断服务程序编写:两者没有差异。中断处理完毕后,皆要先清除中断标志,再对VICVectAddr执行写操作,以更新中断优先级,正常响应下一次中断。
阅读(2205) | 评论(0) | 转发(0) |
0

上一篇:BMP图象格式

下一篇:flash SST39VF1601的擦除

给主人留下些什么吧!~~