Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401848
  • 博文数量: 107
  • 博客积分: 2536
  • 博客等级: 少校
  • 技术积分: 783
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-14 15:19
文章分类

全部博文(107)

文章存档

2017年(11)

2016年(8)

2015年(14)

2014年(32)

2012年(1)

2011年(1)

2010年(7)

2009年(33)

我的朋友

分类: 嵌入式

2017-01-24 17:49:17

 

linux-arm中断系统之GIC

   GIC为中断控制器,不要和ARM core的中断搞混了,这些中断都是连接到ARM core的IRQ或者FIQ上的。

   要了解arm中断系统,GIC绝对不容错过,好先付上一张大家都能百度到的图片。

++和*可以先不用考虑,用于安全模式。

GIC可以用于单核多核系统,这时候要抛开单片机的简单中断了,从图上看有SGI(Software-generated interrupt)、PPI(Private peripheral interrupt )、SPI(Shared peripheral interrupt),顾名思义SGI为软件可以触发的中断,经常用于各个core之间的通信,PPI为每个core的私有外设中断,SPI为各个core公用的中断。


SGI:0~15

PPI:16-31

SPI:32~1019


2.  follow me

 通常把GIC分成两个部分,分发器(Distributor)和CPU接口。

分发器其实应该叫汇聚器,在IC的后端设计中,layout会把各个模块引过来的中断线混接到GIC上(就是上面说的三种中断),然后把混聚合的中断接到CPU的irq线上。

这样core就有触觉了。

3. 模型

既然是中断控制器,必不可少的是总的中断使能,各个子中断使能,优先级排序,在多核系统中对于SGI还可以指定中断发往哪个CPU core。

如何才能保证中断不丢失呢?啊对了就是pending,distributor会把收集来的中断,先缓存一下,依次交给CPU处理,cpu读取一个中断,其实

就是读取一个寄存器,只不过这个寄存器存放的是中断号,这时候中断的状态由pending转为active,cpu处理完了以后,将中断号写入GIC,告诉

GIC我处理完了,你可以歇歇了。

阅读(493) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~