zynq gic中断控制器

时间:2024-03-20 07:12:38

先了解一些gic 中断控制器(Zynq中的中断控制器基于ARM GIC v1.0版本)。左面可以看出中断的几种分类:

1. SGI:软件产生的中断。

2.PPI:私有中断。

3.SPI:共享中断。

zynq gic中断控制器

1.SGI(Software Generated Interrupts)

      每个cpu都可以用SGI中断自己或者其它CPU。通过写SGI中断号到ICDSGIR寄存器中,并且需要制定cpu。此次写入是通过CPU自己的专用总线。每个CPU都有自己的一组SGI寄存器,以生成16个(共16个SGI,如下图)中的一个或多个SGI中断。通常用于多核间通讯,最多支持16个SGI中断,硬件中断号从ID0~ID15。SGI通常在Linux内核中被用作IPI中断(inter-processor interrupts),并会送达到系统指定的CPU上。

zynq gic中断控制器

2.PPI (CPU Private Peripheral Interrupts)

      每个CPU都有一组私有外设中断,简称PPI,这些中断使用存储寄存器进行私有访问。PPI包括全局定时器、私有看门狗定时器、私有定时器和来自PL的FIQ/IRQ共五种外设。PPI通常会送达到指定的CPU上,应用场景有CPU本地时钟。

zynq gic中断控制器

 

3.SPI(Shared Peripheral Interrupts )

        这是常见的外部设备中断,也定义为共享中断,比如按键触发一个中断,手机触摸屏触发的中断,共享的意思是说
可以多个Cpu或者说Core处理,不限定特定的Cpu。 SPI中断可以针对任何数量的CPU,但是只有一个CPU处理该中断。

zynq gic中断控制器