GIC是ARM架构中及其重要的部分,本文只在公开ARM对应资料基础上,以MTK开发板为基础整理。个人理解之后记录,巩固和加深认识,仅此而已,如果有错误,欢迎指出。
1. GIC的概述
看过SOC架构的同学知道,CPU接受外部的中断处理请求,并进行处理,其实是一个被动接受的过程,这样好处是既能
保证主任务的执行效率,又能及时获知外部的请求,从而处理重要的设备请求操作。
如图:
GIC的全称为general interrupt controller,主要作用可以归结为:
接受硬件中断信号,并进行简单处理,通过一定的设置策略,分给对应的CPU进行处理。
这样的图比较简单,可以看下在ARM完整的SOC结构中,其位置是什么样的:
这是ARM比较新的架构图,其中CORELINK CCI-500是片上互联总线,也就是AMBA,在这总线上面挂了不同的设备。比如NIC-400设备,这可以理解为network interface设备,在这个设备上使用者可以再连接其它需要的器件。那么cpu,也就是cortex-72(大核)和cortex-53(小核)也是挂在总线上。上接GIC-500,也就是我们说的中断控制器,这个图其实是逻辑上的,实际中,GIC-500也是有线连接到CCI-500上,通过CCI-500和cpu连接交互,ARM的Distributor应该是为表示cpu和GIC之间的关系,才将其逻辑图表示成大家看到的。详细的可以参考ARM的官方网站介绍。
2.硬件中断的分类和GIC的组成
2.1 GIC_V2的介绍
我们知道了GIC的大致用途,那么它包含了那些部分,如果工作的,有什么特殊的地方呢。
OK,我们一个一个来。先来看下