查看: 1957  |  回复: 0
[转载] ARM之中断GIC分析

主题

回复
发表于2018-11-30 17:11:40 | 只看该作者
1# 电梯直达

 ps;一篇分析中断GIC的文章,很简洁有趣,推荐看下啦

        1.“站的高尿的远”

  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我处理完了,你可以歇歇了。




主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部